スクリプトがすでに実行されているかどうかを知りたいです。定期的に見ると、ps
異なる順序で異なるパラメータを取得するため、切り捨てられません。
したがって、関数は次のことを行う必要があります。
check_already_running(){
if [ `ps -ef| grep $script_name_with_arguments | wc -l ` -gt 1 ]
then
echo "already running"
exit 1
else
echo "ok"
fi
}
たとえば、次のように実行したとします./test.sh -a 2 -c 4
。
server:/tmp >./test.sh
ok
server:/tmp >./test.sh -a
ok
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -c 4 -a 2
already running
最後の2つの例は、チェックがより困難で長くなるように見えるため、2つのオプションを提供できる場合は、1つはコマンドを実行するのに十分正確で、もう1つはユーザーが同じパラメータを別の順序/追加間隔で送信する場合です。 。