Saya ingin memverifikasi apakah crontab tertentu berfungsi dengan baik. Saya telah menambahkan pekerjaan seperti ini:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Saya tahu bahwa saya mengarahkan ulang ke perangkat null, tetapi saya tidak yakin apakah perintah di atas baik.
* Edit 1: Di / var / log / syslog saya setiap dua menit saya memiliki kesalahan berikut:
(CRON) error (grandchild #2788 failed with exit status 2)
* Edit 2: Tidak ada kesalahan dalam log dengan pekerjaan baru ini:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Jawaban:
Sintaks untuk entri crontab terlihat benar. Memang, jika Anda mengedit crontab Anda menggunakan "
crontab -e
" (seperti seharusnya), Anda akan mendapatkan kesalahan jika Anda menentukan entri crontab yang secara sintaksis tidak valid.Pertama, apakah
/path_to_my_php_script/info.php
berjalan dengan benar dari command-line?Jika demikian, apakah ini juga berjalan dengan benar seperti ini ?:
Jika itu berhasil, apakah berhasil seperti ini?
Langkah (3) mirip dengan bagaimana cron akan menjalankan program Anda (seperti yang didokumentasikan dalam "man 5 cron").
Masalah yang paling mungkin Anda alami adalah bahwa cron PATH gunakan untuk menjalankan program Anda terlalu ketat. Oleh karena itu, Anda mungkin ingin menambahkan sesuatu seperti yang berikut ke bagian atas entri crontab Anda (Anda harus menambahkan direktori apa pun yang dibutuhkan skrip Anda):
Perhatikan juga bahwa cron akan digunakan secara default
/bin/sh
, bukan bash. Jika Anda membutuhkan bash, tambahkan juga ini ke awal file crontab Anda:Perhatikan bahwa kedua perubahan itu akan memengaruhi semua entri crontab. Jika Anda hanya ingin mengubah nilai-nilai ini untuk
info.php
program Anda, Anda bisa melakukan sesuatu seperti ini:Perlu juga disebutkan bahwa pada sistem yang dikonfigurasikan untuk "mail" (dengan kata lain sebuah sistem yang memiliki MTA yang terkonfigurasi [sendmail / postfix / etc]), semua output dari program crontab dikirimkan kepada Anda melalui email secara otomatis. Sistem desktop Ubuntu default tidak akan mengonfigurasi surat lokal, tetapi jika Anda bekerja pada server, Anda cukup mengetik "mail" di terminal untuk melihat semua surat cron tersebut. Ini juga berlaku untuk perintah "
at
".sumber
Meskipun sangat jarang, terkadang cron berhenti berfungsi dengan baik meskipun layanan sedang berjalan. Berikut ini cara memverifikasi bahwa crond berjalan dan menghentikan / memulai layanan.
Di Linux:
Di Ubuntu dan sistem berbasis Debian lainnya:
sumber
cron
, bukancrond
Jangan redirect output error ke / dev / null dan grep / var / log / syslog untuk output cron.
Anda dapat segera menampilkan kesalahan saat menyimpan file setelah diedit
/etc/crontab
atau file di dalamnya/etc/cron.d/
dengan:Jika hasil pengeditan ok, Anda hanya akan melihat
RELOAD
pemberitahuan, akan terjadi kesalahan sepertisumber
Anda dapat melihat cron aktif Anda dengan perintah terminal:
Berikut adalah urutan parameternya:
min (0 - 59)
jam (0 - 23)
hari dalam sebulan (1 - 31)
bulan (1 - 12)
hari dalam seminggu (0 - 6) (Minggu = 0)
perintah
Jadi, Anda memanggil skrip Anda setiap menit pertama setiap jam. Anda harus menguji output Anda pada interval yang lebih sering untuk tujuan pengujian:
Ini akan menyebutnya setiap menit!
sumber
Untuk bagian waktu pada setiap baris, Anda dapat menggunakan cron tester ini untuk menguji / memverifikasi definisi waktu cron Anda.
sumber
Saya percaya Anda juga dapat menggunakan
run-parts
untuk menjalankan pekerjaan cron dari band. Sebenarnya apa yang digunakan cron sendiri untuk menjalankan pekerjaan cron periodik, jadi dengan memberikan argumen yang tepat Anda dapat menjalankannya kapan saja.Jika Anda hanya ingin menjalankan satu file alih-alih semua pekerjaan cron yang didefinisikan misalnya
/etc/cron.daily
Anda harus memberikan argumen regex bersama dengan regex yang valid.run-parts --list --regex '^p.*d$' /etc
Ingatlah bahwa tugas cron biasanya dinamai tanpa ekstensi dan ditandai sebagai dapat dieksekusi, jadi pastikan skrip Anda serupa, meskipun menggunakan regex dapat memungkinkan Anda untuk memicu skrip dengan ekstensi.
sumber
ah !!
mendapat jawabannya sendiri, saya memeriksa dan tidak menemukan
crond
di dalam direktori instalasi default yaitu/etc/init.d/
sekarang akan mencoba dan membalas.
Catatan - Saya sudah memeriksa
cron.allow
,cron.deny
juga. Sejauh ini semuanya baik-baik saja.sumber