我似乎不小心关闭了 nano 编辑器,当我重新打开正在处理的文件时,我收到一条消息,该文件已被我的用户和 nano 以进程 ID 编辑。
我使用ps
后发现,nano 仍然在后台运行,进程 ID 被指定为锁定文件。
Rusty 在 Linux 上,我发现了kill
但没有充分了解它并使用了 -9,这似乎删除了进程,但留下了由 nano 锁定的文件,其进程 ID 与之前报告的相同。看来你应该远离 -9 并使用 -15 DOH!
ps
我在 之后再次使用了kill -9
,并且ps
没有列出 nano,因此没有列出针对 nano 的进程。这似乎暗示了kill -9
删除了 nano。
但是,ps aux | grep nano
似乎报告 nano 的进程 ID 与原始进程 ID 不同,并且与锁定文件的进程 ID 无关!?
我尝试终止该新进程 ID,但kill -15
一直报告进程 ID 不存在。每次运行时,ps aux | grep nano
似乎 nano 的进程 ID 都会增加 2,而这与锁定文件的原始进程 ID 无关!?
我尝试过重启机器,但文件被 nano 锁定,与原始进程 ID 不符!?但ps
似乎再次报告增量更改进程 ID,而与锁定文件的进程 ID 无关!?
请问我该如何杀死这个僵尸?或者它是僵尸,因为它似乎没有被标记Defunct
?
进程 ID 仍然出现ps -o ppid= <Child PID>
但似乎只是 bash 的一个子进程(通过进程 ID 进行)?
killall -15 nano
也找不到 nano!?
这就像修复某个文件锁一样简单吗?我安装并运行了,lsof
但它似乎没有选择被错误进程 ID 锁定的文件!?还尝试find -inum
从/home
和/mnt
等尝试搜索与文件的 inode 关联的文件锁,但一无所获。
顺便说一下,它在 Raspberry Pi 3 上运行。
答案1
首先,你不能杀死僵尸进程,它已经死了。通常,你可以忽略僵尸进程。参见我应该杀死系统中的僵尸进程吗?了解详细信息。
其次,您可能没有正确读取输出。 ps aux | grep nano
除了正在运行的任何“nano”进程外,还可能会返回 grep 命令的进程 ID。如果您只得到一个结果,那么它可能只是 grep,您应该忽略它。
当您尝试终止它时,它说它不存在,这几乎证实您刚刚尝试终止已经完成的 grep。进程 ID 不断增加,因为您不断运行出现的新 grep 命令。阅读您发现的内容,不要盲目地终止它。
重新启动机器不会清除锁定文件,尽管它会清除可能与任何僵尸进程一起运行的任何 nano。如果您尝试重新编辑该文件,nano 应该会询问您是否要编辑该文件,因此您应该能够使用 nano 本身清除锁定文件。