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.

Leave a comment

Your email address will not be published. Required fields are marked *