gpt4 book ai didi

linux - 如何在 Linux 中终止后台 while 循环?

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:41 25 4
gpt4 key购买 nike

我找不到终止后台的方法 while循环。

我在无限 while 循环中启动了 Perl 脚本(即 while true; do perl abc.pl; done ),并且我的终端 session 断开了连接。

现在我正在尝试终止该循环。

如果我这样做ps -aux | grep perl ,我看到 Perl 脚本正在运行。

如果我这样做kill -9 <process id> ,它不断地显示不同的进程 ID。

我怎样才能永久终止它?

我发现的唯一解决方法是重命名我的脚本,然后它就会停止。

最佳答案

可能发生的情况是,您正在终止 Perl 程序,但将其抛出的循环仍在运行。您需要杀死整个登录树。

ps -f -u$USER (或类似的东西,取决于操作系统)显示进程的进程 ID、父进程 ID 和 tty。

终止进程和父进程,一直沿着进程树一直到运行循环的不需要的 shell。注意有问题进程的 tty...如果与当前 tty 不同,则杀死该 tty 上的所有进程;您可能需要一个新的终端窗口来获取不同的 tty。

替代:Linux 有 ps xjf 以树形格式显示进程...从相关的 shell 进程启动并杀死它和所有子进程。

额外信息:在kill -9下不会消失的进程,保持相同的PID(不是你的条件),很可能是“僵尸”进程,正在等待其父进程读取其退出状态。僵尸实际上已经停止并消失并且不再活着,所以你无法杀死它们。进程表中只剩下一个幽灵,等待父进程读取挂起的退出状态。杀死父进程会将进程重新分配给 init,后者将读取状态。

关于linux - 如何在 Linux 中终止后台 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44359827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com