Skip to content

Instantly share code, notes, and snippets.

@and3rsonls
Forked from darth-veitcher/bash-pid.md
Created May 12, 2022 14:35
Show Gist options
  • Save and3rsonls/34b1f77b049a955dc091e17daad2489a to your computer and use it in GitHub Desktop.
Save and3rsonls/34b1f77b049a955dc091e17daad2489a to your computer and use it in GitHub Desktop.
Bash Script PID file locking

Pattern below allows for a bash script to be called via, say, cron and check to see if it is already running.

Useful for things like rsync tasks.

PIDFILE=/var/run/myscriptname.pid

if [ -f $PIDFILE ]
then
  PID=$(cat $PIDFILE)
  ps -p $PID > /dev/null 2>&1
  if [ $? -eq 0 ]
  then
    echo "Process already running"
    exit 1
  else
    ## Process not found assume not running
    echo $$ > $PIDFILE
    if [ $? -ne 0 ]
    then
      echo "Could not create PID file"
      exit 1
    fi
  fi
else
  echo $$ > $PIDFILE
  if [ $? -ne 0 ]
  then
    echo "Could not create PID file"
    exit 1
  fi
fi


# Main script ... Do work here

...

# End

rm $PIDFILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment