Waktu menjalankan (bash) shell script langsung dari terminal bisa jalan, tetapi waktu crontab tidak bisa? Coba tanya Google :)
Script yang akan saya jalankan berapa di /opt/dns.sh
#!/usr/bin/env bash dnscrypt-proxy --local-address=192.168.2.8:40 -R cisco -d
di crontab
* * * * * /bin/bash /opt/dns.sh
cek script sudah execute-able ls -l /opt/dns.sh
-rwxr-xr-x 1 root root 160 May 26 14:27 /opt/dns.sh
cek di log script tersebut jalan,
journalctl -f -u cron # output May 26 14:20:01 dns.jaranguda.com CRON[1806]: (root) CMD (/opt/dns.sh) May 26 14:36:02 dns.jaranguda.com CRON[4628]: (root) CMD (/bin/bash /opt/dns.sh)
tetapi proses yang diminta tidak dijalankan, dalam hal ini dnscrypt
. Ternyata solusinya sangat mudah script bash tidak mengenali PATH
, lokasi lengkap PATH bisa didapat dengan menjalankan perintah echo $PATH
, tambahkan lokasi tersebut di /opt/dns.sh
#!/usr/bin/env bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin dnscrypt-proxy --local-address=192.168.2.8:40 -R cisco -d
script diatas berhasil dijalankan.