我想要执行一行 bash 命令来自动执行此操作:
screen -S myserver
python myserver.py # inside the new screen
CTRL A, D (detach)
我认为这行不通:
screen -S myserver && python myserver.py
因为python myserver.py
不会启动里面这screen
。
答案1
您可以在启动程序后立即分离里面屏幕:
screen -dmS myserver python myserver.py
-d-m 以分离模式启动屏幕。这会创建一个新会话,但不会附加到它。这对于系统启动脚本很有用。
答案2
@Stefan M 的答案很好,但不太像在屏幕内运行命令,因为当命令结束时,整个屏幕也会结束。如果您实际上在屏幕中运行命令,那么当它退出时,您将留下一个 shell。
您可以使用以下命令保留该外壳:
screen -s "/bin/bash" -dmS myserver; screen -S myserver -X stuff "python myserver.py\n";
这将首先使用 shell 启动屏幕,然后将一些命令发送到该 shell 中运行。这就像您自己在屏幕上输入这些命令一样。
此处提供了更详细的脚本:https://unix.stackexchange.com/a/766301/598166