shell - 将 ctrl-c 发送到特定 screen session

标签 shell gnu-screen sigint

我正在设计一个脚本来启动命名 screen session 内的进程。

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

因此,bash myscript.sh start test 将创建一个名为 test 的 screen ,并使用该软件运行 test.cfg

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

类似这样的事情:

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'"

最佳答案

我不太明白你的意思,但要将 ctrl-c 发送到 screen session 中的窗口:

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

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

更新:

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

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

关于shell - 将 ctrl-c 发送到特定 screen session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001578/

相关文章:

python - 信号处理程序在线程启动后不起作用

LINUX 获取 screen 内容到文件

ssh - 通过 SSH 连接时,如何获取 F1-F12 键以在 cygwin 的 gnu screen 中切换 screen ?

android - 尝试使用 "android"bash 命令时未找到命令?

bash - 如何在当前 shell 中执行命令的输出?

anaconda - conda 环境中的 screen 不起作用

bash - 如何捕获 Ctrl-C 并使用它正确退出无限循环

linux - 程序运行后的 UNIX 清除命令

javascript - 如何从 Node js服务器向客户端显示shell脚本的结果?