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.
Konsultasi via WA di 0817-0334-1186Posting Terkait :
Pekerja teknis domain, hosting & server. Hubungi saya via WA di 0817-0334-1186 atau messengger di http://m.me/hsuwantoro
Leave a Reply
Want to join the discussion?Feel free to contribute!