Bash Script Mencegah Script Berjalan Duplikat Berkali-kali Proses

Kadang kita mengeksekusi script bash melalui cron setiap menit sedangkan script tersebut belum menyelesaikan tugasnya.  Yang terjadi script berjalan duplikat dan berkali-kali.

Berikut ini adalah contoh script yang bisa anda gunakan untuk mendeteksi script yang sudah berjalan.

#!/bin/sh

proses=`ps aux | grep namafile.sh | grep -v grep | wc -l`
if [[ $proses -gt 2 ]]; then
        echo "script sudah jalan";
        exit;
fi

Untuk mengujinya silahkan buat misalnya testrun.sh dan dibawahnya tambahkan sleep 30 dengan tujuan agar script tersebut selesai setelah 30 detik.

kira-kira seperti ini

#!/bin/sh

proses=`ps aux | grep testrun.sh | grep -v grep | wc -l`
if [[ $proses -gt 2 ]]; then
        echo "script sudah jalan";
        exit;
fi
#menguji sleep 30 second
sleep 30;

Bukalah beberapa window bash dan jalankan script testrun.sh secara bersamaan, maka yang anda dapatkan adalah sebagai berikut :

[root@script]# ./testrun.sh
script sudah jalan

Pertanyaan yang mungkin muncul adalah mengapa -gt adalah 2 dan bukan 1?

Adapun perhitungannya adalah sebagai berikut :

Ketika testrun.sh berjalan maka terhitung 1 kemudian melakukan pengecekan ps aux dan apabila nilainya 1 maka script yg sedang dijalankan tersebut dianggap telah berjalan dan keluar output “script telah berjalan” yang sebenarnya tidak ada script lain yg berjalan kecuali proses yang saat itu dilakukan.

Demikian dan selamat mencoba.

CHAT via WA di 0817-0334-1186

Sharing is Caring.!

Leave a Reply

  Subscribe  
Notify of