如何在linux中停止一个屏幕进程?

时间:2011-06-10 04:01:49

标签: linux gnu-screen

我在远程服务器上运行脚本。我在screen中运行了脚本,但是我需要在它完成之前停止它,因为我需要更新脚本。我可以轻松地从screen分离,但有没有办法杀死screen进程?

5 个答案:

答案 0 :(得分:68)

CTRL + a然后'k'将终止屏幕会话。

答案 1 :(得分:31)

有几种“屏幕”方式可以从命令行中杀死特定的屏幕会话(非交互式)。

1)发送'quit'命令:

screen -X -S "sessionname" quit

2)将Ctrl-C发送到运行脚本的屏幕会话:

screen -X -S "sessionname" stuff "^C"

在这两种情况下,您都需要使用'screen -ls'来查找要杀死的屏幕会话的会话名称...如果只有一个屏幕会话在运行,您将不需要指定-S“sessionname”参数。

答案 2 :(得分:3)

我用它来退出由错误命令创建的数百个错误的屏幕会话:

for s in $(screen -ls|grep -o -P "1\d+.tty"); do screen -X -S $s quit; done;

其中:grep -o -P "1\d+.tty"是获取具有类似Perl的名称正则表达式"1\d+.tty"的会话名称的命令,它捕获所有以数字1开头的会话,还有其他一些数字({{1} }}并以\d

结束

警告: 在应用上述命令之前,您应首先使用此命令进行测试,以确保获得所需的会话列表。这是为了避免退出不需要的会话:

.tty

每当for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;循环中的列表不明确时,我总是对此echo进行测试,例如,for扩展中的子命令生成的列表。

答案 3 :(得分:1)

以前的答案在winputty终端和amazon ssh服务器连接上对我不起作用。但这确实起作用:

screen -S yourscreentitlehere -X stuff $'\003'

参考:

答案 4 :(得分:1)

我正在使用腻子,似乎我已经在屏幕上,无法打开和关闭。每次“退出”时,我都会关闭油灰窗口。这是字样

>>screen -r

    21063.unlimited (11/08/20 15:45:19)     (Attached)
    24054.cure6     (11/08/20 09:46:13)     (Attached)

There is no screen to be resumed.

screen -S 21063.unlimited -X stuff $'\003'

不执行任何操作。 我发现只要简单地完成下面的代码就可以了

screen -x 21063.unlimited

它把我送回屏幕,然后从那里“退出”工作。 请注意,它是小写的-x