我正在远程服务器上运行脚本.我运行了脚本screen,但是我需要在它完成之前停止它,因为我需要更新脚本.screen然而,我可以轻易地分离出来,有没有办法杀死一个screen进程?
tro*_*ger 36
有几种"屏幕"方法可以从命令行中杀死特定的屏幕会话(非交互式).
1)发送'退出'命令:
screen -X -S "sessionname" quit
Run Code Online (Sandbox Code Playgroud)
2)将Ctrl-C发送到运行脚本的屏幕会话:
screen -X -S "sessionname" stuff "^C"
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您都需要使用'screen -ls'来查找要杀死的屏幕会话的会话名称...如果只有一个屏幕会话在运行,则不需要指定-S" sessionname"参数.
我用它来退出由错误命令创建的数百个错误的屏幕会话:
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"它捕获所有以 number 开头的会话1,还有一些其他数字 ( \d) 并以.tty
警告:在应用上述命令之前,您应该首先使用此命令进行测试,以查看您获得所需会话的确切列表。这是为了避免退出不需要的会话:
for s in $(screen -ls|grep -o -P "1\d+.tty"); do echo $s; done;
echo每当for循环中的列表不清楚时,我总是进行此测试,例如,$()扩展中的子命令生成的列表。
以前的答案在 winputty 终端和亚马逊 ssh 服务器连接上对我不起作用..但这个确实有效:
screen -S yourscreentitlehere -X stuff $'\003'
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
70799 次 |
| 最近记录: |