如何让GNU screen在有运行进程(如top)时创建同路径新窗口
解决screen在后台进程运行时无法创建同路径新窗口的问题
方法一:直接调用screen内置命令创建同路径窗口
放弃用stuff发送shell命令的方式,改用screen内置命令直接创建新窗口并继承当前窗口的工作目录,完全绕过当前运行的进程。
在.screenrc中替换原有配置为:
bind , eval 'screen -X chdir "$(screen -Q pwd)"' 'screen'
- 原理:
screen -Q pwd查询当前窗口的工作目录,screen -X chdir将screen会话的默认工作目录切换到该路径,最后screen创建新窗口,新窗口自动使用此路径作为工作目录。 - 优势:不会干扰当前运行的进程(如编译、top),创建过程完全在screen层面完成。
方法二:暂停进程后执行命令再恢复
如果不想改动复杂的内置命令,可通过按键序列先暂停当前进程,执行创建窗口的命令,再恢复进程。
在.screenrc中替换原有配置为:
bind , stuff "^Zscreen^Mfg^M"
- 原理:
^Z发送Ctrl+Z暂停当前前台进程;screen^M执行创建同路径窗口的shell命令;fg^M恢复之前暂停的进程。
- 优势:配置简单直观,编译、top这类进程暂停后恢复不会产生任何影响。
内容的提问来源于stack exchange,提问作者OfusJK
相关产品推荐
相关产品推荐

