我有一个我需要经常运行的shell脚本。
当shell脚本启动时,我想确保将进程ID记录到日志文件中。
如何使用记录的进程ID确保进程仍在运行。
答案 0 :(得分:1)
如果您知道pid,您可以专门向ps询问该过程以确定它是否正在运行。空响应表示pid未运行
ps PID
答案 1 :(得分:0)
由于您拥有PID,因此可以检查/proc/$PID/cmdline
以验证具有该PID的过程是否符合预期。您需要这样做以防止在翻转时重复使用PID。
答案 2 :(得分:0)
您可以使用top
来监控流程
top -p <pid>
答案 3 :(得分:0)
您可以使用ps
列出正在运行的进程
$ ps
PID TTY TIME CMD
1555 pts/1 00:00:00 bash
1596 pts/1 00:00:00 ps
答案 4 :(得分:0)
一种方法是grep ps
的输出:
PID=$(cat pid-file)
if ps -o pid -ax | grep -s $PID ; then
# action if still running
fi
正如jman所写,您可以检查/proc/$PID/cmdline
是否具有PID的过程是正确的过程还是只是另一个过程。请记住,您可以轻松地通过zombie processes.
答案 5 :(得分:0)
如果PID正在运行,您可以“询问”命令ps
:
#!/bin/bash
pid=`cat /<path-to-the-lock-file>`
running=`ps -p $pid -o pid|head -n-1`
if [ "$running" != "" ]
then
echo "Already running"
exit 1
fi