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

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

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

好的,我用 启动一个屏幕会话screen -S test,然后尝试用screen -r -X "date"仅显示日期,以便我可以重新连接到它。但屏幕上既没有出现错误消息,也没有输出。我尝试了太多组合,我甚至记不清了。

关于如何实现它有什么提示吗?

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

答案1

其实很简单。你可以使用以下命令:

screen -S sessionname -X stuff 'command'`echo -ne '\015'`

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

注意:'stuff' 是一个屏幕命令。 http://www.gnu.org/software/screen/manual/screen.html#Stuff

答案2

听起来你想要的是:

$ screen -S test -d -m -c /dev/null --sh -c '日期; exec $SHELL'

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

或者你只是想要德塔赫

答案3

screen -S <session_name> -X screen [-t <title>] <shell_command> [<args>]

打开一个新窗口(带有标题)标题)在名为会话名称并执行shell命令(带有可选参数)参数

答案4

就像这里的一些评论一样,我一开始也无法在 Ubuntu Server 22.04 上让这个命令工作。以下是对我真正有用的方法:

screen -S <sessionName> -p 0 -X stuff 'command^M'

尽管该命令声称它在“当前窗口”上运行,但它-p 0是如何选择第一个窗口的,并且是的更好的替代形式。stuff^Mecho -ne '\015'

从:https://raymii.org/s/snippets/Sending_commands_or_input_to_a_screen_session.html

相关内容