Contoh kasus : kita membuat script untuk mengecek proses Shoutcast (sc_serv) apakah jalan atau tidak, bila proses tidak jalan, jalankan proses tersebut.
Salin script dibawah ini dan simpan sebagai otomatis.sh, dan letakkan di folder /home
#!/bin/bash RESTART="./sc_serv" PGREP="/usr/bin/pgrep" PROSES="sc_serv" $PGREP ${PROSES} if [ $? -ne 0 ] then cd /home/ nohup $RESTART > log.log & fi
diasumsikan file sc_serv yang anda miliki diletakkan di folder /home juga. Buat crontab baru dengan cara
crontab -e
tambahkan dibaris paling bawah
* * * * * /bin/bash /home/otomatis.sh
/bin/bash tersebut perlu, karena kadang bila mengakses langsung otomatis.sh melalui perintah /home/otomatis.sh script didalam otomatis.sh dijalankan tapi tidak tereksekusi. Troubleshooting nya juga menjadi susah.
Troubleshooting
Beberapa tips untuk troubleshooting Bash Script yang dijadwalkan dengan crontab :
– periksa apakah path script yang anda gunakan benar
ls -la /letak/file/bash/anda.sh
– periksa apakah script yang anda buat sudah benar-benar berjalan lancar dengan mengeksekusi langsung scriptnya
/bin/bash /letak/file/bash/anda.sh ## atau /bin/sh /letak/file/bash/anda.sh
– jalankan bash dalam mode debug
/bin/bash -x /letak/file/bash/anda.sh ## atau /bin/sh -x /letak/file/bash/anda.sh
– periksa proses crond (crontab daemon) apakah sudah dijalankan
contoh bila proses sudah berjalan
root 4473 0.0 0.1 19224 920 ? Ss 15:23 0:00 /usr/sbin/cron
– untuk memudahkan testing, tambahkan dibaris paling bawah crontab (hasil dari crontab -e
)
* * * * * touch /tmp/jalan.kok
cek file tersebut setiap 1 menit, kalau ada hapus dan tunggu satu menit kemudian, sambil mengecek proses dari bash script anda.
Punya saya selalu keluar
syntax error near unexpected token `fi’
Kenapa ya?
hapus spasi sebelum
fi
, atau coba ulang copas script diatas.