如何让屏幕执行命令然后分离(即,在单个脚本中自动执行,除了最初启动脚本之外无需进一步输入)?例如,我运行 myscript.sh,它会自动启动屏幕会话,执行命令,然后分离。
答案1
答案2
要在屏幕上运行单个命令并分离,您可以尝试:
screen -dm sleep 10
要运行多个命令,请尝试:
screen -dm bash -c "sleep 10; myscript.sh"
请注意,当程序终止时,屏幕(默认)会关闭包含该程序的窗口。
如果您不希望会话在脚本完成后被终止,请exec sh
在末尾添加,例如:
screen -dm bash -c 'sleep 5; exec sh'
要列出所有会话,请尝试:
screen -list
有关的:启动 Unix 屏幕,运行命令,分离。
答案3
为了在后台启动名为“sleepy”的新会话
screen -S sleepy -dm sleep 60
为了结束“困倦”的会议
screen -S sleepy -X quit
答案4
当我按下 Control C(Sig Int)退出程序时,发生了这种情况。它会从所有 Bash 中退出。所以我发现这可以捕获 SIGINT。并防止从最后一个 Bash 退出。(需要键入 exit 才能退出)
screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"
example:
screen -dmS "status_updates" bash -c "trap 'echo gotsigint' INT; cd /opt/status_update ; forever index.js ; bash"
我发现使用 cron 在启动时运行 nodejs 程序很有用。并在启动时运行屏幕。在 cron 中有特殊事件语法 @reboot event
to edit cron, execute:
crontab -e
then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"