GNU/Linux >> Belajar Linux >  >> Linux

Cron Job Untuk Memeriksa Apakah Script Php Berjalan, Jika Tidak Maka Jalankan?

Saya bertanya-tanya apakah seseorang mungkin mengarahkan saya ke arah yang benar. Saya memiliki sedikit pengalaman bekerja dengan baris perintah Linux dan baru-baru ini karena berbagai faktor dalam pekerjaan saya diminta untuk mendapatkan pengetahuan.

Pada dasarnya saya memiliki dua php skrip yang berada di direktori di server saya. Untuk keperluan aplikasi, skrip ini harus terus berjalan. Saat ini saya menerapkannya dengan cara ini:

nohup sh -c 'while true; do php get_tweets.php; done' >/dev/null &

dan

nohup sh -c 'while true; do php parse_tweets.php; done' >/dev/null &

Namun, saya perhatikan bahwa meskipun infinte loop skrip berhenti secara berkala dan saya terpaksa memulai kembali. Saya tidak yakin mengapa tetapi mereka melakukannya. Itu membuat saya melihat ke dalam prospek CRON pekerjaan yang memeriksa apakah mereka berjalan dan jika tidak, jalankan/restart mereka.

Adakah yang bisa memberi saya beberapa informasi tentang cara melakukan ini?

Jawaban yang Diterima:

Saya ingin memperluas jawaban Davidann karena Anda baru mengenal konsep pekerjaan cron. Setiap sistem UNIX atau Linux memiliki crontab yang disimpan di suatu tempat. Crontab adalah file teks biasa. Pertimbangkan hal berikut:(Dari Wiki Gentoo di Cron)

#Mins  Hours  Days   Months  Day of the week
10     3      1      1       *       /bin/echo "I don't really like cron"
30     16     *      1,2     *       /bin/echo "I like cron a little"
*      *      *      1-12/2  *       /bin/echo "I really like cron"

Crontab ini harus menggemakan "Saya sangat menyukai cron" setiap menit setiap
jam setiap hari setiap bulan. Jelas Anda hanya akan melakukannya
jika Anda benar-benar menyukai cron. Crontab juga akan menggemakan "Saya suka cron a
little" pada pukul 16:30 setiap hari di bulan Januari dan Februari. Ini juga akan bergema
“Saya tidak terlalu suka cron” pada pukul 3:10 tanggal 1 Januari.

Karena baru mengenal cron, Anda mungkin ingin mengomentari kolom yang berkilau bintangnya sehingga Anda tahu untuk apa setiap kolom digunakan. Setiap implementasi Cron yang saya tahu selalu urutan ini. Sekarang gabungkan jawaban Davidann dengan file komentar saya:

#Mins  Hours  Days   Months  Day of week
  *     *      *      *       *   lockfile -r 0 /tmp/the.lock && php parse_tweets.php; rm -f /tmp/the.lock

* * * * * lockfile -r 0 /tmp/the.lock &&php get_tweets.php; rm -f /tmp/the.lock

Tidak menempatkan nilai di setiap kolom secara default ke:
Setiap Menit Setiap Jam Setiap Hari Setiap Bulan Sepanjang Minggu, -> Setiap Menit Sepanjang Tahun.

Terkait:Linux – Akankah executable Linux yang dikompilasi pada satu "rasa" Linux berjalan pada yang berbeda?

Seperti yang dinyatakan Davidann menggunakan lockfile memastikan bahwa hanya satu salinan juru bahasa php yang berjalan, php parse_tweets.php adalah perintah untuk "menjalankan" file, dan bit terakhir dari baris akan menghapus file kunci untuk bersiap-siap untuk menjalankan berikutnya. Saya tidak suka menghapus file setiap menit, tetapi jika ini adalah perilaku yang Anda butuhkan, ini sangat dapat diterima. Menulis dan Menulis Ulang ke disk hanyalah preferensi pribadi


Linux
  1. Bagaimana cara mengatur tugas cron untuk menjalankan yang dapat dieksekusi setiap jam?

  2. Menjalankan skrip shell secara paralel

  3. Pengaturan pekerjaan cron Godaddy untuk menjalankan skrip php

  1. Menjalankan tugas cron di Linux setiap enam jam

  2. Cara menjalankan tugas cron setiap satu jam dan 10 menit

  3. Perintah Linux untuk memeriksa apakah skrip shell sedang berjalan atau tidak

  1. pekerjaan cron terkadang tidak berjalan

  2. Menjalankan Cron setiap 2 jam

  3. Cara mengkonfigurasi tugas cron untuk dijalankan setiap 2 hari pada pukul 11 ​​malam