我在*nix中相当新.有没有办法创建一个屏幕,它将立即执行给定的命令序列(使用自己的参数)?两个小时的谷歌搜索没有产生任何结果 - 也许是因为我无法清楚地说出这个问题.
我希望有类似的东西
screen -dmS new_screen exec "cd /dir && java -version"
我使用的是屏幕v4.00.03和CentOS 5.5(内核版本2.6.18-194.26.1.el5.028stab079.2)
您创建一个名称和分离模式的屏幕:
screen -S "mylittlescreen" -d -m
然后发送要在屏幕上执行的命令:
screen -r "mylittlescreen" -X stuff $'ls\n'
该$
命令之前是使壳解析\n引号内,并且换行需要执行命令(比如当你按回车键).
这对我这个屏幕版本有用:
$ screen -v
屏幕版本4.00.03jw4(FAU)2006年5月2日
man screen
有关这些命令的详细信息,请参阅.
问题是使用'exec'屏幕命令不会启动shell.'cd'是内置的shell,所以你需要一个shell.此外,您需要一个仍然运行的shell,以便屏幕不会终止.
您可以使用-X选项来筛选以将命令发送到正在运行的屏幕会话,并使用'stuff'命令将键击发送到当前窗口.试试这个:
screen -dmS new_screen sh screen -S new_screen -X stuff "cd /dir " screen -S new_screen -X stuff "java -version "
是的,您需要将引号放在下一行,以便执行命令.
screen -dmS screen_name bash -c 'sleep 100'
这将创建名为的新屏幕screen_name
.在屏幕内,它将睡眠100秒.
请注意,如果您sleep 100
在执行时键入某个命令而不是立即终止,则屏幕也将终止.所以你将无法看到刚刚创建的屏幕