繁体   English   中英

如何将东西命令发送到启动分离屏幕?

[英]How can I send stuff commands to a start-in-detached screen?

我以“-d -m”开头的任何会话都不接受“-X stuff [...]”命令,除非我已经连接到屏幕至少一次。 没有错误消息,命令无法通过。

问题是我从cron作业启动会话,无法从cron内部附加到屏幕。

重复的步骤

$ screen -m -d -S mydaemon bash
$ screen -S mydaemon -X stuff "`printf "exit\\r"`"
$ screen -ls
        32456.mydaemon  (Detached)
$ screen -r -S mydaemon
$ ^a d
$ screen -S mydaemon -X stuff "`printf "exit\\r"`"
$ screen -ls
No Sockets found in /var/run/screen/S-user

^ ad表示按Ctrl + a然后按d。

版本

CentOS release 5.5 (Final)
Screen version 4.00.03 (FAU) 23-Oct-06

编辑:这个问题的最佳答案是其他答案 无论如何,我将我的kludgey解决方案留在这里,以防它激发解决类似问题的方法。


一种可能的解决方法是使用第二个已经运行和分离的屏幕会话来启动要在附加模式下发送“stuff”命令的屏幕会话,然后向该屏幕会话发送一个detach命令,然后发送stuff命令。

$ screen -dmS spawner
$ screen -S spawner -X screen screen -dR mydaemon
$ sleep 1 # may be necessary
$ screen -S mydaemon -X detach
$ screen -S mydaemon -X stuff "whatever"

(注意:加倍的“屏幕” 不是拼写错误!)你仍然留下了一个无法解决的屏幕会话(spawner)但是如果它所需的资源很重要你总是可以使用“kill -TERM ...”或它的同类终止它(或者在一段时间之后通过类似的东西启动它自动退出它

$ screen -dmS spawner bash -c "sleep 60"

或类似的)。

感谢Ron Kaminsky。

我发现了另一种杀死'spawner'屏幕的方法

    $ screen -dmS spawner
    $ screen -S spawner -X screen screen -dR mydaemon
    $ sleep 1 # may be necessary
    $ screen -S mydaemon -X detach

并添加以下行

    $ screen -S mydaemon -X screen screen -S spawner -dR
    $ sleep 1 # may be necessary
    $ screen -S spawner -X detach
    $ screen -S spawner -X kill

屏幕-d -m / bin / bash“test.sh”

屏幕(分离)(移动)(shell)“执行什么”

$ screen -d -m /bin/bash "test.sh"
$ screen -li
There is a screen on:
        8540..Satelite  (10/17/2013 04:53:22 AM)        (Detached)
1 Socket in /var/run/screen/S-matt.

您是否考虑过使用tmux 它更适合非交互式任务。

使用.screenrc文件,您可以设置要启动的东西;

screen -t <title> <window position> <command>

所以,如果你想开始top在窗口7 ,你会怎么做

screen -t window7top 7 top

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM