【问题标题】:Sending ctrl-c to specific screen session将 ctrl-c 发送到特定的屏幕会话
【发布时间】:2013-04-06 18:20:56
【问题描述】:

我正在设计一个脚本来在命名的屏幕会话中启动一个进程。

as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'"

所以bash myscript.sh start test 将创建一个名为 test 的屏幕并使用该软件运行test.cfg

现在我希望我的脚本访问特定的屏幕会话并执行 CTRL+C 来停止正在运行的进程,以便我可以终止屏幕会话。

类似这样的:

as_user "screen -p 0 -S **$command** **... kill the process with ctrl-c...**"
as_user "screen -p 0 -S **$command** -X eval 'stuff \"exit\"\015'"

【问题讨论】:

    标签: shell gnu-screen sigint


    【解决方案1】:

    我不太了解你,但在屏幕会话中将ctrl-c 发送到窗口

    screen -S session_name -X at window_number stuff $'\003'
    # or
    screen -S session_name -X -p window_number stuff $'\003'
    

    如果您想向所有窗口发送内容,请使用#(需要引用)作为window_number

    更新:

    屏幕的stuff命令也支持^X(或^x)表示CTRL-X所以下面的命令也可以用来发送CTRL-C

    # Here '^C' is two chars, '^' and 'C'
    screen -S session_name -X at window_number stuff '^C'
    

    【讨论】:

    • 无法让at 工作,但这仅适用于活动窗口,可能对某人有用:screen -S session_name -X stuff $'\003'
    • screen -S session_name -X at "#" stuff $'\003'screen -S session_name -X quit 非常适合我。我现在可以终止任何屏幕会话。谢谢。
    • 太棒了,这正是我想要的!你有更多关于$'\003' 编码的信息吗?我可以假设 Ctrl+A 是 001,Ctrl+B 是 002 等等吗?另外,有没有办法发送光标上下左右键?
    • 对于 ctrl 字符,请参阅 en.wikipedia.org/wiki/…
    • 哦,现在我想知道,既然你提到屏幕也支持^C。如何输入文字 ^ 字符?
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多