GNU/Linux >> Znalost Linux >  >> Linux

Spusťte úlohu cron, pouze pokud ještě není spuštěna

Použijte flock . Je to nové. Je to lepší.

Nyní nemusíte psát kód sami. Podívejte se na další důvody zde:https://serverfault.com/a/82863

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

Dělám to pro program pro zařazování tisku, který jsem napsal, je to pouze skript shellu:

#!/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

Běží každé dvě minuty a je docela efektivní. Pokud z nějakého důvodu proces neběží, pošlete mi e-mail se speciálními informacemi.


Jak uvedli jiní, zápis a kontrola souboru PID je dobrým řešením. Zde je moje implementace bash:

#!/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. Jak nastavit úlohu cron, aby každou hodinu spouštěla ​​spustitelný soubor?

  2. Připojení řádku k souboru pouze v případě, že ještě neexistuje

  3. Linux:Spusťte úlohu cron v popředí

  1. Jak spustit úlohu cron uvnitř kontejneru dockeru

  2. Jak zobrazit aktuálně spuštěnou úlohu cronu?

  3. jak spustit cron job každé 3 měsíce?

  1. Jak spustit úlohu cronu v určité dny v týdnu

  2. Nastavení úlohy Godaddy cron pro spouštění php skriptu

  3. Jak spustit úlohu cronu každý den v určitou hodinu?