Linux 提示屏幕坏了,但是并没有关闭它

Linux 提示屏幕坏了,但是并没有关闭它

我正在尝试学习如何使用“屏幕”工具。

我有另外两个屏幕。

ixnomad@NomadMachine:~$ screen -ls 
There are screens on:
        1037111.SYS_INFO        (06/03/22 17:09:38)     (Detached)
        1037094.CHECK_CONNECTION        (06/03/22 17:08:40)     (Detached)
2 Sockets in /run/screen/S-ixnomad.

然后我试图关闭它们(我不想再打开它们)

ixnomad@NomadMachine:~$ kill -9 1037111

但它实际上并没有消失,Linux 说它可能(??)死了,我应该“擦除”它。

ixnomad@NomadMachine:~$ screen -ls
There are screens on:
        1037094.CHECK_CONNECTION        (06/03/22 17:08:39)     (Detached)
        1037111.SYS_INFO        (06/03/22 13:28:42)     (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /run/screen/S-ixnomad.

我做错了什么?我不知道如何关闭屏幕而不进入它,关闭其中正在运行的进程,输入“exit”等。是否有任何命令可以关闭它?类似

screen -close(??) 1037111

答案1

此问题源于使用-9( SIGKILL) 而不是更“礼貌”的信号(如 )来终止 screen SIGTERMSIGKILL后者会告诉内核从其表中删除该进程,这不会给进程时间进行自我清理。大多数其他信号都会发送给进程本身,因此进程有机会妥善处理。

(简短的讨论:)一开始就使用 是个坏习惯kill -9 ...;专家建议先尝试不使用信号(默认为SIGTERM)。如果这不起作用,则意味着该过程不可中断或故意忽略该信号。只有这样你才应该求助于SIGKILL

您可能无论如何都希望终止 screen 的子进程。当您这样做时,screen 会收到其终止的通知并干净地退出。这就是kill -S [session] -X quitEsther 在评论中提到的命令所做的。

或者,正如上面提到的,如果您最终遇到死屏会话,screen -wipe则告诉协调屏幕进程将其清理。

相关内容