【发布时间】:2012-09-30 16:52:48
【问题描述】:
我有一个启动后台进程的脚本。
#!/bin/sh
./process1.sh &
./process2.sh &
我需要使用单独的脚本来终止这些进程。 这是我所做的:
#!/bin/sh
# the kill.sh
pid=$(ps | grep './process1.sh' |grep -v grep| awk '{print $1}')
kill -9 $pid
提问时间:
-
当调用 kill.sh 时,进程会停止。但我得到了消息
“sh:你需要指定要杀死的人”。 这是为什么呢?
在我使用所描述的脚本终止进程后,它不会立即停止。有一段时间我看到屏幕上的输出,好像进程仍在运行一样。为什么?
终止进程的替代解决方案是什么?
值得一提的是,我正在使用busybox,我的实用程序选择有限。
【问题讨论】:
-
当然,这取决于您编写这些脚本的方式,但您应该允许它们捕获信号(在执行终止时)并执行所需的操作以进行清理 - 或优雅地关闭。另外,只需在后台启动进程时将PID记录为/tmp目录中的临时文件,无需乱用
ps命令。