How to check in a bash script if something is running and exit if it is

后端 未结 9 1957
悲&欢浪女
悲&欢浪女 2021-02-06 00:24

I have a script that runs every 15 minutes but sometimes if the box is busy it hangs and the next process will start before the first one is finished creating a snowball effect.

9条回答
  •  一向
    一向 (楼主)
    2021-02-06 01:05

    In lieu of pidfiles, as long as your script has a uniquely identifiable name you can do something like this:

    #!/bin/bash
    COMMAND=$0
    # exit if I am already running
    RUNNING=`ps --no-headers -C${COMMAND} | wc -l`
    if [ ${RUNNING} -gt 1 ]; then
      echo "Previous ${COMMAND} is still running."
      exit 1
    fi
    ... rest of script ...
    

提交回复
热议问题