向已经运行的屏幕会话发送命令

11 opensolaris session gnu-screen

我一直在尝试向 opensolaris 中正在运行的 gnu 屏幕会话 (4.00.03) 发送命令,但无法通过以下任意组合运行任何命令 screen -X

好的,我用 开始屏幕会话screen -S test,然后尝试用screen -r -X "date"仅显示日期,当我重新连接到它时。但是屏幕上既没有错误消息也没有输出。我尝试了很多组合,我什至不记得了。

关于如何完成它的任何提示?

我这样做的原因是,因为我有一个程序,它不是作为守护程序出现的,我希望在屏幕会话中启动它,以便稍后我可以看到发生了什么。

小智 18

其实很简单。您可以使用以下内容:

screen -S sessionname -X stuff 'command'`echo -ne '\015'`
Run Code Online (Sandbox Code Playgroud)

echo -ne '\015'模拟Enter按键。

注意:“东西”是一个屏幕命令。 http://www.gnu.org/software/screen/manual/screen.html#Stuff


小智 6

听起来你想要:

$ screen -S test -d -m -c /dev/null -- sh -c 'date; 执行 $SHELL'

-S 测试:命名这个会话
-d -m:开始屏幕分离
-c /dev/null: 忽略 ~/.screenrc (提供不同的文件或删除此选项,
  如所须)
--: 屏幕结束选项
sh -c '日期; exec $SHELL': 屏幕运行的命令,注意如果这个命令
  只是“日期”然后屏幕会立即退出。如果你不想退出
  命令退出后的屏幕,然后您可以使用:
    $ screen -S test -d -m -c /dev/null -- 你的命令在这里

或者也许你只是想要dtach