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