Saya telah melemparkan banyak anak panah yang mencoba untuk mendapatkan skrip python saya untuk mengeksekusi setiap menit. Jadi saya pikir saya akan menyederhanakannya hanya dengan melakukan "hal paling sederhana yang mungkin bisa bekerja" sekali per menit (saya menjalankan debian / pengujian).
Saya membuat file baris tunggal di /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Dimiliki oleh root, dan dapat dieksekusi (tidak yakin apakah salah satu dari masalah itu). Dan kemudian saya lakukan:
sudo service cron reload
Dan kemudian duduk dan mulai berlari ls -ltr
lagi dan lagi di direktori home saya ( /home/me
). Tetapi file ding_dong saya tidak pernah muncul. Saya tahu jika saya melakukan sudo /bin/touch /home/me/ding_dong
, itu muncul segera.
Jelas melewatkan sesuatu yang bodoh di sini.
Jawaban:
Saat menambahkan konfigurasi cron di
/etc/cron.d/
atau di/etc/crontab
Anda harus menambahkan nama pengguna di mana konteks perintah harus dijalankan, dalam contoh Anda* * * * * root /bin/touch /home/me/ding_dong
Dan hanya sebuah petunjuk dari saya: Anda tidak harus mulai berjalan
ls -ltr
lagi dan lagi, cukup gunakanwatch -n 5 "ls -ltr"
dan itu akan menjalankan perintah setiap 5 detik (atau nilai lain dengan mengganti 5 dengan apa yang Anda inginkan).sumber
man cron
sedikit lebih lambat, dan memberikan perhatian khusus padaDEBIAN specific
bagian - bagian, saya perhatikan bahwa file-file tersebut TIDAK boleh dikelompokkan atau dituliskan lainnya. Yang saya aktifkan dalam frustrasi saya pada satu titik.man cron
: Selain itu, di Debian, cron membaca file di direktori /etc/cron.d. cron memperlakukan file dalam /etc/cron.d dengan cara yang sama dengan file / etc / crontab (mereka mengikuti format khusus file itu, yaitu mereka memasukkan bidang pengguna ). Namun, mereka tidak bergantung pada / etc / crontab: mereka tidak, misalnya, mewarisi pengaturan variabel lingkungan darinya. Perubahan ini khusus untuk Debian, lihat catatan di bawah DEBIAN SPECIFIC di bawah ini.Untuk membuat
cron
pekerjaan baru , Anda harus menjalankancrontab -e
sebagai pengguna yang Anda inginkan menjalankan pekerjaan. Kemudian tambahkan baris yang relevan di jendela editor yang muncul:Cara Anda melakukannya memerlukan format yang berbeda dan sebenarnya bukan ide yang baik. Crontab dalam
/etc/cron.d
memiliki format yang sedikit berbeda, mereka memerlukan nama pengguna untuk dijalankan di bawah. Sebagai contoh:Trik yang baik (seperti yang disarankan oleh @VogonPoetLaureate) adalah untuk menangkap kesalahan standar dari pekerjaan cron Anda yang dapat membantu men-debug mereka. Sebagai contoh:
sumber
crontab -l
mendaftar semua pekerjaan cron Anda.Kemungkinan kesalahan di sini adalah bagaimana file baris tunggal dibuat. Dari Dokumentasi Ubuntu :
Misalnya, cara pembuatan ini tidak berfungsi:
sumber