Pertanyaan Verifikasi apakah crontab berfungsi


Saya ingin memverifikasi apakah crontab tertentu berfungsi dengan benar. Saya telah menambahkan pekerjaan seperti ini:

  */2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1

Saya tahu bahwa saya mengarahkan ke perangkat null, tetapi saya tidak yakin apakah perintah di atas baik.

* Edit 1: Dalam / 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

56
2017-12-06 09:58


asal


sayangnya semua di atas mencoba tetapi tidak berhasil untuk saya. seperti yang Anda katakan uji coba / bin / sh -c "(ekspor PATH = / bin; /tmp/trial.sh </ dev / null)" menunjukkan pesan di bawah ini, tidak yakin apa itu / bin / sh: PATH = / bin : bukan pengenal


Jawaban:


Sintaks untuk entri crontab terlihat benar. Memang, jika Anda mengedit crontab Anda menggunakan "crontab -e"(sebagaimana seharusnya Anda), Anda akan mendapatkan kesalahan jika Anda menetapkan entri crontab yang salah secara sintaksis.

  1. Pertama, lakukan /path_to_my_php_script/info.php berjalan dengan benar dari baris perintah?

  2. Jika demikian, apakah itu juga berjalan dengan benar seperti ini ?:

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
    
  3. Jika itu berhasil, apakah berfungsi seperti ini?

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
    

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 yang digunakan untuk menjalankan program Anda terlalu membatasi. Oleh karena itu, Anda mungkin ingin menambahkan sesuatu seperti berikut ini ke bagian atas entri crontab Anda (Anda harus menambahkan direktori apa pun yang diperlukan skrip Anda):

PATH=~/bin:/usr/bin/:/bin

Perhatikan juga bahwa cron akan digunakan secara default /bin/sh, bukan bash. Jika Anda membutuhkan bash, tambahkan juga ini ke awal file crontab Anda:

SHELL=/bin/bash

Perhatikan bahwa kedua perubahan itu akan berpengaruh semua entri crontab. Jika Anda hanya ingin mengubah nilai-nilai ini untuk Anda info.php program, Anda dapat melakukan sesuatu seperti ini:

*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"

Ini juga perlu disebutkan bahwa pada sistem yang dikonfigurasi untuk "mail" (dengan kata lain sistem yang memiliki MTA dikonfigurasi [sendmail / postfix / etc]), semua output dari program crontab dikirimkan kepada Anda melalui email secara otomatis. Sebuah sistem desktop Ubuntu default tidak akan memiliki mail lokal yang dikonfigurasi, tetapi jika Anda bekerja pada server Anda cukup mengetik "mail" di terminal untuk melihat semua email cron tersebut. Ini juga berlaku untuk "at"perintah.


53
2017-12-06 14:15



Saya mendapat izin ditolak untuk langkah ke-2. Apa yang harus saya lakukan? - akikara
@akikara chmod + x ./cron.sh - ganti dengan jelas ./cron.sh dengan lokasi file apa pun yang Anda coba jalankan - Tisch


Jangan redirect output error ke / dev / null dan grep / var / log / syslog untuk output cron.

grep cron /var/log/syslog

Anda dapat segera menampilkan kesalahan saat menyimpan file setelah mengedit /etc/crontab atau file di dalam /etc/cron.d/ dengan:

tail -f /var/log/syslog | grep cron &

Jika pengeditannya ok, Anda hanya akan melihat RELOAD perhatikan, kesalahan akan terjadi seperti

Jul 9 09:39:01 vm cron[1129]: Error: bad day-of-month; while reading /etc/cron.d/new 

22
2017-12-06 10:20





Meski sangat jarang, terkadang cron berhenti berfungsi dengan baik meskipun layanan sedang berjalan. Berikut ini cara memverifikasi bahwa crond sedang berjalan dan menghentikan / memulai layanan.

Di Linux:

service crond status
service crond stop
service crond start

Di Ubuntu:

service cron status
service cron stop
service cron start

18
2018-06-27 20:21



Sekedar catatan ... untuk Ubuntu crontidak crond - Amit Kohli


Anda dapat melihat cron aktif Anda dengan perintah terminal:

crontab -l

Berikut ini parameternya secara berurutan:

  1. min (0 - 59)

  2. jam (0 - 23)

  3. hari dalam sebulan (1 - 31)

  4. bulan (1 - 12)

  5. hari dalam seminggu (0 - 6) (Minggu = 0)

  6. perintah

Jadi, Anda memanggil skrip Anda setiap menit pertama setiap jam. Anda harus menguji output Anda pada interval yang lebih sering untuk tujuan pengujian:

* * * * * <command> #Runs every minute

Ini akan memanggilnya setiap menit!


14
2017-12-06 10:11



* / 2 * * * * saya telah berubah menjadi setiap dua menit sekarang - resizemyimg.com


Untuk bagian waktu di setiap baris, Anda dapat menggunakan ini cron tester untuk menguji / memverifikasi definisi waktu cron Anda.


6
2017-08-20 16:21



Itu saran yang bagus. - Rahil Wazir
juga berguna: crontab-generator.org - rubo77


ah !!

mendapat jawabannya sendiri, saya periksa dan tidak menemukannya cronddi dalam direktori pemasangan default yaitu /etc/init.d/

sekarang akan mencoba dan membalas.

catatan - saya sudah memeriksa cron.allow, cron.deny terlalu. Sejauh ini semuanya baik-baik saja.


0
2018-05-23 13:25





Saya yakin Anda juga bisa menggunakannya run-parts untuk menjalankan tugas cron dari band. Sebenarnya apa yang menggunakan cron itu sendiri untuk menjalankan tugas cron periodik, sehingga dengan menyediakan argumen yang tepat Anda dapat menjalankannya setiap saat.

Jika Anda hanya ingin menjalankan satu file daripada semua cron jobs yang didefinisikan misalnya /etc/cron.daily Anda harus menyediakan argumen regex bersama dengan regex yang valid. run-parts --list --regex '^p.*d$' /etc

Perlu diingat bahwa tugas cron biasanya dinamai tanpa ekstensi dan ditandai sebagai dapat dieksekusi, jadi pastikan skrip Anda serupa, meskipun menggunakan regex memungkinkan Anda untuk memicu skrip dengan ekstensi.


0
2017-10-17 18:29