Saya sudah mencoba menghilangkan banyak kesalahan umum,
memastikan bahwa PATH tersedia untuk cron
ada endline di akhir file crontab
zona waktu diatur oleh:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Berjalan date
di bash, saya mendapatkan:
Tue Sep 17 15:14:30 SGT 2013
Untuk memeriksa apakah cron menggunakan waktu yang sama,
* * * * * date >> date.txt
memberikan output tanggal yang sama di date.txt.
Ini adalah skrip yang saya coba jalankan:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Menggunakan crontab -e
, garis di bawah ini berfungsi,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Namun, ketika saya mencoba beberapa argumen lain, berharap itu akan berjalan pada jam 18:00:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
atau
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
itu tidak akan berfungsi lagi. Sepertinya ada masalah dengan argumen jam saya. Tidak ada yang dapat ditemukan dalam /tmp/debug.log
file.
LARUTAN:
Ternyata saya harus me-restart layanan cron setelah melakukan perubahan pada TZ.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
dan konfirmasi yang date
menunjukkan waktu yang diharapkan. Perhatikan bahwa pengaturan variabel lingkungan TZ dari dalam crontab mungkin tidak mempengaruhi zona waktu seperti yang digunakan oleh daemon cron itu sendiri, tetapi itu akan mempengaruhi proses yang diluncurkan melalui cron, jadi jika Anda mengatur TZ di crontab Anda, saya sarankan berkomentar sementara dan mengatur waktu menggunakan zona waktu jam sistem (mungkin UTC jika Anda mem-boot-tunggal Linux, tetapi mungkin waktu lokal) sebagai gantinya.
~/event.sh
coba/home/username/event.sh