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.
~/event.sh
coba/home/username/event.sh
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
dan konfirmasi yangdate
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.Jawaban:
Pertama, kemungkinan Anda menabrak bug yang menyebabkan salah satu bidang dianggap salah tampaknya sangat rendah. Ini lebih cenderung menjadi kesalahpahaman tentang apa yang terjadi dan apa yang diharapkan cron.
Dalam hal ini, kami menemukan dalam komentar atas pertanyaan bahwa itu sangat mungkin masalah terkait zona waktu. Untuk ini, Anda akan:
* * * * * date
ke crontabIni memaksa
date
untuk menjalankan dengan pengaturan zona waktu penyerang, yang berarti daemon cron . Lihatlah outputnya; itu akan menunjukkan apa zona waktu cron menggunakan secara internal, dan dengan demikian sangat mungkin zona waktu mana ia ingin bidang waktunya. Jika Anda memiliki tugas TZ di crontab, sangat mungkin bahwa tugas variabel lingkungan TZ dilewatkan ke menjalankan perintah tetapi cron sendiri menggunakan beberapa zona waktu lainnya . Dengan mengomentari atau menghapus tugas TZ, Anda menghindari ambiguitas ini.Juga perhatikan bahwa setiap perubahan pada pengaturan zona waktu global sistem (termasuk misalnya / etc / localtime) hampir pasti memerlukan setidaknya restart daemon cron, dan mungkin (walaupun tidak mungkin) sistem reboot untuk mengambil efek penuh. Mengedit tugas TZ di crontab seharusnya tidak memerlukan reload daemon cron, karena harus mendeteksi bahwa file telah diubah dan memuatnya secara otomatis.
sumber