如何在屏幕中执行命令并分离?

dar*_*ine 137 script command-line gnu-screen

如何让屏幕执行命令然后分离(即,自动在单个脚本中,除了最初启动脚本之外无需进一步输入)?例如,我运行 myscript.sh,它会自动启动一个屏幕会话,执行一个命令,然后分离。

Ala*_*rry 181

这是个简单的:

screen -d -m yourcommand
Run Code Online (Sandbox Code Playgroud)

屏幕用户手册

-d -m
在分离模式下启动屏幕。这会创建一个新会话,但不会附加到它。这对于系统启动脚本很有用。

  • 没有骰子。screen -d -m 命令,screen -list 表示没有套接字,screen -r 没有会话 (8认同)
  • 您可以通过启用屏幕中的“僵尸”选项来更改它。将 `zombie xy` 放在你的 `~/.screenrc` 中。也应该可以仅在一个会话中启用它 b 将 `zombie xy` 放在另一个文件中并使用 `-c file` 但由于某种原因,当我尝试它时它不起作用。或者只是使用 `sh -c 'yourcommand;while :;do sleep 9999; 完成'` (4认同)

ken*_*orb 72

要在屏幕中运行单个命令并分离,您可以尝试:

screen -dm sleep 10
Run Code Online (Sandbox Code Playgroud)

要运行多个命令,请尝试:

screen -dm bash -c "sleep 10; myscript.sh"
Run Code Online (Sandbox Code Playgroud)

请注意,当程序终止时, screen (默认情况下)会杀死包含它的窗口。

如果您不希望脚本完成后会话被exec sh终止,请在最后添加,例如:

screen -dm bash -c 'sleep 5; exec sh'
Run Code Online (Sandbox Code Playgroud)

要列出您的所有会话,请尝试:

screen -list
Run Code Online (Sandbox Code Playgroud)

相关:启动 Unix 屏幕、运行命令、分离

  • 这在 Ubuntu 16.04 上对我有用。除了命名您的会话以便稍后返回之外,添加`-S sessionname`:`screen -dmS MyLongRunningScript bash -c "..."`。 (4认同)

小智 29

为了在后台启动名为“sleepy”的新会话

screen -S sleepy -dm sleep 60
Run Code Online (Sandbox Code Playgroud)

为了杀死“昏昏欲睡”的会话

screen -S sleepy -X quit      
Run Code Online (Sandbox Code Playgroud)


小智 7

screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
Run Code Online (Sandbox Code Playgroud)