我是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的大小不再增长.
标签:bash,loops,linux,kill,pid
来源: https://codeday.me/bug/20190701/1349397.html