GNU/Linux >> Belajar Linux >  >> Linux

Jalankan cron job hanya jika belum berjalan

Gunakan flock . Baru. Lebih baik.

Sekarang Anda tidak perlu menulis kode sendiri. Lihat lebih banyak alasan di sini:https://serverfault.com/a/82863

/usr/bin/flock -n /tmp/my.lockfile /usr/local/bin/my_script

Saya melakukan ini untuk program spooler cetak yang saya tulis, itu hanya skrip shell:

#!/bin/sh
if ps -ef | grep -v grep | grep doctype.php ; then
        exit 0
else
        /home/user/bin/doctype.php >> /home/user/bin/spooler.log &
        #mailing program
        /home/user/bin/simplemail.php "Print spooler was not running...  Restarted." 
        exit 0
fi

Ini berjalan setiap dua menit dan cukup efektif. Saya memilikinya melalui email dengan informasi khusus jika karena alasan tertentu prosesnya tidak berjalan.


Seperti yang telah dinyatakan orang lain, menulis dan memeriksa file PID adalah solusi yang baik. Inilah implementasi bash saya:

#!/bin/bash

mkdir -p "$HOME/tmp"
PIDFILE="$HOME/tmp/myprogram.pid"

if [ -e "${PIDFILE}" ] && (ps -u $(whoami) -opid= |
                           grep -P "^\s*$(cat ${PIDFILE})$" &> /dev/null); then
  echo "Already running."
  exit 99
fi

/path/to/myprogram > $HOME/tmp/myprogram.log &

echo $! > "${PIDFILE}"
chmod 644 "${PIDFILE}"

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

  2. Menambahkan baris ke file hanya jika belum ada

  3. Linux:Jalankan tugas cron di latar depan

  1. Bagaimana cara mengatur pekerjaan CRON agar berjalan setiap 10 detik di Linux?

  2. pekerjaan cron terkadang tidak berjalan

  3. bagaimana cara menjalankan cron job setiap 3 bulan?

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

  2. Pengaturan pekerjaan cron Godaddy untuk menjalankan skrip php

  3. Menjalankan tugas cron di Linux setiap enam jam