我想从脚本中知道该脚本是否已经在运行。定期查看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 个选项 - 一个足以精确运行命令,另一个如果用户发送相同的参数但具有不同的顺序/额外间距。