使用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