2012-07-29 02:04:52 +0000 2012-07-29 02:04:52 +0000
82
82

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

如何让屏幕执行命令然后脱离(也就是在一个脚本中自动执行,除了最初启动脚本外,不需要进一步的输入)? 例如,我运行myscript.sh,它自动启动一个屏幕会话,执行一个命令,然后脱离。

答案 (5)

120
120
120
2012-07-29 02:20:11 +0000

这是个简单的问题。

screen -d -m yourcommand
49
49
49
2012-07-29 02:10:53 +0000

如果要在屏幕上运行一条命令并分离,你可以尝试。

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屏幕, 运行命令, 解除.

16
16
16
2016-11-06 08:03:26 +0000

为了在后台以'sleepy'为名启动新的会话

screen -S sleepy -dm sleep 60

为了杀死'sleepy'会话

screen -S sleepy -X quit
``` 。
3
3
3
2018-03-14 05:40:50 +0000
screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
0
0
0
2019-04-29 09:38:39 +0000

当我按control c (sig int)退出程序时,它就会从所有的bash程序中退出,所以我找到了这个方法来捕获sig int,并防止从最后的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程序很有用。(需要输入exit才能退出)

to edit cron, execute:
crontab -e

then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"

我发现使用cron在启动时运行nodejs程序很有用。