微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 在没有PID的情况下杀死在后台运行的while循环

我是Linux的一部分的初学者,所以请慢慢来.

我创建了一个后台运行的“脚本”:

while true; do echo "I'm alive" >> alive.log ; done &

脚本的输出保存在文件alive.log中,该文件存在于用户的主目录中.
问题是我没有想法如何杀死循环因为它填满了我的磁盘空间,如果我想删除文件,那么循环将创建一个文件并用“我还活着”文本填充它,因为我问过它要做.

我试过用:

ps - aux | grep while

要么

ps - aux | grep alive 

这两行的输出将为我提供我需要的PID,但问题是脚本是一个循环,这意味着PID每次运行时都会改变(递归),所以我不能使用PID来终止进程.

我也试过用:

pkill while
killall while

两行的结果为0(使用pkill时可以看到输出,而-c“0”或killall时:“while:没有找到进程”;

有什么建议吗?

解决方法:

我在一个名为while.sh的脚本文件中编写了这个句子,并通过shell运行它:

[edemon@CentOS workspace]$./while.sh 
[edemon@CentOS workspace]$

没有PID.
我用top命令工具搜索我的while.sh,它告诉我:

  PID USER      PR  NI  VIRT  RES  SHR S %cpu %MEM    TIME+  COMMAND                                                                 
 4036 edemon    20   0  5268  756  436 R 97.3  0.0   0:07.93 bash                                                                    
 2469 root      20   0 94412  29m  10m S  7.8  2.0   1:49.19 Xorg                                                                    
 2788 edemon    20   0 74300  12m  10m S  1.9  0.9   1:38.79 nm-applet                                                               
 4040 edemon    20   0  2708 1072  796 R  1.9  0.1   0:00.01 top 

while的父亲进程是bash,所以我杀了4036. alive.log的大小不再增长.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐