当前位置:  开发笔记 > 编程语言 > 正文

如何创建一个屏幕,执行给定的命令?

如何解决《如何创建一个屏幕,执行给定的命令?》经验,为你挑选了3个好方法。

我在*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)



1> kR105..:

您创建一个名称和分离模式的屏幕:

screen -S "mylittlescreen" -d -m

然后发送要在屏幕上执行的命令:

screen -r "mylittlescreen" -X stuff $'ls\n'

$命令之前是使壳解析\n引号内,并且换行需要执行命令(比如当你按回车键).

这对我这个屏幕版本有用:

$ screen -v

屏幕版本4.00.03jw4(FAU)2006年5月2日

man screen有关这些命令的详细信息,请参阅.



2> 小智..:

问题是使用'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
"

是的,您需要将引号放在下一行,以便执行命令.


我通过在那里包含`-p 0`来实现这一点(`screen -S new_screen -p 0 -X stuff"......"`)
您可以使用`$'命令\n'`而不是将双引号放在下一行.见[this](http://stackoverflow.com/a/3182519/693869)
@mloar这里`stuff`的目的是什么?

3> Tushar Goswa..:

screen -dmS screen_name bash -c 'sleep 100'

这将创建名为的新屏幕screen_name.在屏幕内,它将睡眠100秒.

请注意,如果您sleep 100在执行时键入某个命令而不是立即终止,则屏幕也将终止.所以你将无法看到刚刚创建的屏幕

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有