BASH检查[进程]是否正在运行,每小时重新检查一次

时间:2014-06-06 20:25:56

标签: bash if-statement while-loop

我在16个驱动器的后台运行shred。我想有一个bash脚本,每小时检查一次进程pidof shred。如果该流程未显示,则echo "Shredding Completed...其他echo "Shredding Running..."

这就是我现在所拥有的,当shred未运行时,它将回显"Shredding Completed..."但如果它正在运行则退出该脚本。

while :
do
if pidof shred > : && break
then
    echo "Shredding Running..."
    sleep 60m
else
    echo "Shredding Completed..."
    exit
fi

done

感谢你

固定:让我迟钝,我拿出&& break然后就可以了!洛尔

1 个答案:

答案 0 :(得分:1)

每次都写到/dev/null而不是:并且不要break循环:

while :
do
  if pidof shred > /dev/null
  then
      echo "Shredding Running..."
      sleep 60m
  else
      echo "Shredding Completed..."
      exit
  fi 
done

更好的方法是:

while pidof shred > /dev/null
do
  echo "Shred running..."
  sleep 60m
done
echo "Done"

另请注意shred is not more secure,而不是简单的dd if=/dev/zero of=device bs=4M