如何防止屏幕在进程结束后终止

Cer*_*rin 5 bash gnu-screen

我正在命名屏幕中启动一个进程,例如:

screen -dmS myscreen bash -c "export VAR=123; cd /usr/local/myproject; ./myscript.py"
Run Code Online (Sandbox Code Playgroud)

然而,几分钟后,我的脚本崩溃了,当它退出屏幕时,我看不到调试输出。我的脚本运行时间足够长,所以我可以手动附加到屏幕,但屏幕仍然会自动终止将我踢出它。

当正在运行的进程停止时,如何阻止屏幕退出?

Rab*_*bin 6

您可以将输出通过管道传输到less或文件,tee然后再到less,或者只是在命令sleep 99999之后添加一个“暂停”命令。

screen -dmS myscreen bash -c "export VAR=123; cd /usr/local/myproject; ./myscript.py; sleep 9999"
Run Code Online (Sandbox Code Playgroud)

在任何情况下,我都建议从screento切换tmux,您可以使用问题来了解如何运行命令并在它退出后离开。

基本上你可以添加bash -i到命令的末尾。

tmux start-server  
tmux new-session -d
tmux new-window 'ls;bash -i'
Run Code Online (Sandbox Code Playgroud)

或者您可以使用选项remain-on-exit

set-remain-on-exit [on | 离开]

当此选项为真时,正在运行的程序已退出的窗口不会关闭,而是保持打开状态但不活动。

  • 这似乎是一个不可靠的黑客。如果我手动创建屏幕并分离,它不会终止。那和我创建的屏幕之间没有附加的区别是什么? (2认同)