使用GNU屏幕运行程序,然后立即分离

我试图弄清楚如何编写一个脚本,它将在系统启动时启动GNU Screen会话中的程序。 我正在尝试这个:

#!/bin/bash screen -S test -d -m -X $HOME/folder/folder/.program \ screen -S test2 -d -m -X $HOME/folder/folder/.program2 \ 

但由于会话已经分离,命令无法执行? 我唯一需要的是在屏幕会话中运行命令并立即分离此会话。

谢谢你的回答,但现在我遇到了另一个问题。 在为我的“program and program2”添加一些变量后,脚本停止工作。 像这样的东西:

 #!/bin/bash screen -S test -d -m $HOME/folder/folder/.program -f config.cfg 

出于某种原因“-f config.cfg”被忽略了。 我也试图引用命令,也没有帮助。

你真的打算把它放在最后一行吗? 如果没有,那么尝试删除它们 – 它们逃脱了以下角色。

另外,删除-X有助于我的设置工作,例如:

 screen -S test -d -m -X touch /tmp/test 

但是, No screen session found失败:

 screen -S test -d -m touch /tmp/test 

工作良好。 因此,我怀疑以下内容对您有用:

 #!/bin/bash screen -S test -d -m $HOME/folder/folder/.program screen -S test2 -d -m $HOME/folder/folder/.program2 

请记住,如果在引导时运行此命令,则$ HOME与以特定用户身份登录后不同。 如果你需要以某个用户身份运行它,你需要使用su来运行它作为那个用户,并指定完整路径将消除任何歧义:

 #!/bin/bash screen -S test -d -m su - username /home/username/folder/folder/.program screen -S test2 -d -m su - username /home/username/folder/folder/.program2 

或者,您可以将上面的整个脚本称为su - username /path/to/your/script

与Cry Havok提到的一样,您可以将程序放在命令行上。

如果你真的必须使用-X选项,那么a)你需要指定’screen’命令和b)会话需要预先存在。

 screen -dmS test screen -S test -X screen $HOME/folder/folder/.program screen -dmS test2 screen -S test2 -X screen $HOME/folder/folder/.program2