Saya mencoba mengatur pekerjaan root cron untuk menjalankan skrip Bash sebagai root, untuk dijalankan pada menit 7,37, setiap jam, setiap hari dalam sebulan, setiap bulan. Script ini terletak di /usr/bin
dan dinamai tunlrupdate.sh
. Ini memperbarui DNS dari Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Skrip Bash ini tersedia di sini .
Ketika dipanggil, skrip menulis apa yang terjadi di log yang berlokasi di /var/log/tunlr.log
Untuk menambahkan pekerjaan root cron ini, saya menggunakan standar untuk crontab root
sudo crontab -e
Dan memasukkan 2 baris ini di akhir. Saya berharap cron menjalankan skrip sebagai root.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
Perintah selanjutnya sudo crontab -l
mengkonfirmasi bahwa tugas cron telah dimasukkan.
Saya melakukan reboot Ubuntu dan sedang memeriksa file log jika pekerjaan cron diluncurkan dengan benar. Namun tidak ada dalam logfile yang /var/log/tunlr.log
berarti pekerjaan itu tidak pernah berhasil diluncurkan.
Saya memeriksa apakah saya menjalankan skrip dari baris perintah
sudo /usr/bin/tunlrupdate.sh
kemudian file log diperbarui sesuai.
Mengapa pekerjaan cron ini tidak berjalan sesuai rencana di sistem saya?
PEMBARUAN 1: Semua solusi yang diusulkan sejauh ini tidak berhasil. Saya berterima kasih kepada Olli untuk CLI untuk daftar log sistem sudo grep CRON /var/log/syslog
. Namun saya memang mendapatkan kesalahan CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
dengan PATH yang disarankan = penyisipan & penggunaan jalur absolut dari root untuk fungsi-fungsi dalam skrip atau tanpa solusi yang disarankan di sini. Saya masih mendapatkan kesalahan ini.
Setelah beberapa pencarian saya menemukan kesalahan dalam file /usr/lib/php5/maxlifetime
seperti yang dijelaskan di sini :Change #!/bin/sh -e --> #!/bin/sh -x
Kemudian daftar kesalahan log CRON di sistem saya
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
Saya masih belum mendapatkan eksekusi bash script. Kali ini tidak ada kesalahan yang ditampilkan di log. Untuk mendapatkan jaminan ini bukan isi skrip saya mengurangi skrip menjadi 3 baris berikut:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Saya masih belum bisa menyelesaikan pekerjaan cron. Tidak ada yang tertulis dalam file log. Jadi, bahkan mungkin skrip kosong tidak akan berjalan di cron? Saya tidak mengerti. Saya tahu mencoba skrip direduksi menjadi 2 baris ini:
#!/bin/bash
exit 0
Dan masih log kesalahan yang sama. Script cron tidak melewati ...