将ctrl-c发送到特定的屏幕会话

use*_*032 11 shell gnu-screen sigint

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

as_user "screen -p 0 -S **$command** -X eval 'stuff \"wine LFS.exe /cfg=**$command**.cfg\"\015'"
Run Code Online (Sandbox Code Playgroud)

因此,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'"
Run Code Online (Sandbox Code Playgroud)

pyn*_*exj 18

我不是很了解你,而是在屏幕会话中发送ctrl-c到一个窗口:

screen -S session_name -X at window_number stuff $'\003'
# or
screen -S session_name -X -p window_number stuff $'\003'
Run Code Online (Sandbox Code Playgroud)

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

更新:

Screen的stuff命令也支持^X(或^x)表示CTRL-X以下命令也可用于发送CTRL-C.

screen -S session_name -X at window_number stuff ^C
Run Code Online (Sandbox Code Playgroud)

  • 无法让'at`工作,但这对我来说仅适用于活动窗口,这可能对某些人有用:`screen -S session_name -X stuff $'\ 003'` (2认同)