我有一个屏幕会话,其中运行着几个窗口,这些窗口正在运行几个在终端窗口中运行控制台的应用程序(这就是为什么我在屏幕上运行它们)。
我想关闭所有窗口,然后添加两个新窗口,本质上只是重新运行命令来重新启动该程序。
因为这可能有点令人困惑,所以如果我只是尝试在命令行上手动执行此操作,我会这样做:
$ screen -x programs
$ (Hit Control-a + \ )
$ (Hit Control-a + c)
$ program1 args0 args1 #running first program again
$ (Hit Control-a + c)
$ program2 args0 args1 #running second program
从技术上讲,我甚至不需要关闭现有窗口,只需停止正在运行的交互式窗口即可。通常,我在窗口中按 CTRL-D 即可执行此操作,程序就会停止运行。然后我只需再次运行该程序即可。
我知道有一些命令可以让我通过名称附加到现有的屏幕会话,但我只是不知道如何使用它来发送相当于 CTRL+D 的命令,然后向其发送另一个命令。
答案1
尝试此操作来退出您的屏幕会话。
screen -dr your_session_name -X quit
笔记:
不同的 Linux/Unix 系统对长时间运行的进程有不同的处理方式。如果您的系统使用 控制进程systemd
,并且其版本高于230
,请尝试阅读 systemd 的最新手册。