【发布时间】:2016-03-30 00:52:52
【问题描述】:
我写了一个简单的 bash 脚本,它除了休眠什么都不做。
#!/bin/bash
echo "Sleeping..."
sleep 180s
运行脚本后,我看到两个进程在我的系统上运行:
user 22880 0.0 0.0 12428 1412 pts/28 S+ 20:12 0:00 /bin/bash ./sleep.sh
user 22881 0.0 0.0 7196 356 pts/28 S+ 20:12 0:00 sleep 180s
我使用kill -15 22880 将SIGTERM 分配给ID 为22880 的进程,这会杀死进程。但是,在这之后,我仍然看到 sleep 命令在运行,它在 180 秒后退出。
user 22881 0.0 0.0 7196 356 pts/28 S 20:12 0:00 sleep 180s
为什么会这样?我需要做什么才能不让sleep 180s 进程继续运行?
【问题讨论】:
-
奇怪...我尝试了您的脚本(使用 sh 和 ./) ps -aux 在进程号的 kill -15 之后不再返回任何内容,您如何显示进程列表,用 ps -aux ?
-
是的。我做了一个
ps aux | grep sleep。即使我给了SIGKILL,这个过程仍然存在。 -
好的我明白了,这是 grep 的过程不是你的脚本,试试 ps -aux |grep idontexist :)
-
@Anyone_ph 不确定这是否属实。 grep 进程为:
user 22887 0.0 0.0 11744 912 pts/29 S+ 20:13 0:00 grep --color=auto sleep,与sleep 180s进程不同。