如何知道脚本是否已经在运行

如何知道脚本是否已经在运行

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

相关内容