我必须创建一个Shell脚本,如果PID(进程标识符)正在运行,则每X秒检查一次。它必须使用此终端命令运行:
$ script [PID] [SECONDS]
我写了这个,但它不起作用:
#!/bin/bash
read -a PID
read -a SECONDS
while(true)
if [kill -s 0 $PID]
then
echo "PID $PID is running"
exit 0;
else
echo "PID $PID is not running"
sleep $SECONDS
有人可以告诉我问题在哪里吗?
答案 0 :(得分:2)
有watch
,特别是-g
选项,如果重复命令的输出发生变化,watch
会退出。
除此之外,Mat说的是什么。你对Bash的掌握似乎......需要更多的训练。
答案 1 :(得分:0)
有一种更好的方法可以检查具有特定PID的进程是否正在运行,而不是使用kill
。而是检查/ proc。
#!/bin/bash
if [ $# != 2 ]; then
echo "Usage: $(basename $0) <PID> <Seconds>"
exit 1
fi
while true; do
if [ -d /proc/$1 ]; then
echo "PID $1 is running"
else
echo "PID $1 is not running"
fi
sleep $2
done
答案 2 :(得分:0)
pgrep
效果也很好。它返回与提供的模式
pgrep $proc_name > /dev/null
if [ $? -ne 0 ]; then
echo "$proc_name doesn't exist"
fi