Answers:
您所见过的shebang行可能适用于某些unix变体,但不适用于Linux。Linux的shebang行是有限的:您只能有一个选择。整个字符串-d -m -S screenName /bin/bash
作为一个选项传递给screen
,而不是作为不同的单词传递。
如果要在屏幕内部运行脚本,而又不弄乱多个文件或引用,可以将脚本设置为shell脚本,如果该脚本尚未在屏幕内部,则可以调用该屏幕。
#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff
screen
,/bin/bash
哪个调用又调用哪个脚本。
根据屏幕手册页:
screen -d -m
在分离模式下启动屏幕。这将创建一个新会话,但不会附加到该会话。这对于系统启动脚本很有用。-S sessionname
将新会话的名称设置为sessionname。因此,当我运行您提供的命令时: screen -dmS name ./script.sh
屏幕将启动一个名为name的窗口,并自动运行该script.sh。要回到那里查看状态,您只需键入:screen -r test
现在使用Ubuntu 14.04,命令略有不同。尝试:
screen -d -m -S test
现在,要运行脚本,您将需要转到其配置文件:
sudo vim /etc/screenrc
到达那里后,向下滚动到底部,您将看到:
# Example of automatically running some programs in windows on screen startup.
#
# The following will open top in the first window, an ssh session to monkey
# in the next window, and then open mutt and tail in windows 8 and 9
# respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log
这是您需要添加脚本名称才能运行的部分,它应该允许您从屏幕上执行所需的所有操作。
screen -dmS ...
尽管确实可以,但该命令()不适用于我。我运行它,然后screen -ls
没有找到套接字。有什么想法吗?
"$0"
用?