This article is half-done without your Comment! *** Please share your thoughts via Comment ***
We configured lots of cron job in our production Linux – PostgreSQL Server. Different schedules like monitor the database performance, monitor the backup process, take a database backup, replicate a database copy.
We set few monitor cron jobs at every 5 minutes. Now the situation is, few monitoring scripts are running even more than 5 minutes, and as per the scheduled, same script could start the execution after 5 minutes.
Now, the same script is running more than one time.
We should monitor this kind of situation, and we should prevent the next execution of the same script if it is already in running state. It also helps us to reduce an unnecessary load on the database server.
I prepared below two options; you can embed any one of it in your shell script.
Option script 1:
1 2 3 4 5 6 7 8 9 10 |
if pidof -x $(basename $0) > /dev/null; then for p in $(pidof -x $(basename $0)); do if [ $p -ne $$ ]; then echo "*****************************************************************" echo " ***Warning*** Script $0 is already running...So existing... " echo "*****************************************************************" exit 1 fi done fi |
Option script 2:
1 2 3 4 5 6 7 8 |
isrunning=`ps -ef | grep $(basename $0) | grep -v $$ | grep -v grep | wc -l` if [ "$isrunning" -ne 0 ]; then echo "**************************************************************" echo " ***Warning*** Script $0 is already running... So exiting... " echo "**************************************************************" exit 1 fi |
Leave a Reply