Autore Topic: Chiarimenti su bash script  (Letto 3727 volte)

Offline PanBagnat

  • Newbie
  • *
  • Post: 1
    • Mostra profilo
    • E-mail
Chiarimenti su bash script
« il: 27 Novembre 2016, 17:49:41 »
Ciao a tutti.

Ho un hosting su Webfaction. Il server utilizza Centos 7.
I miei siti girano con il framework web2py che invece del cron utilizza un sistema chiamato scheduler per gestire i processi cron like come eseguire tale script ogni giorno alle ore 17.
Questo scheduler funziona se per la singola applicazione (sito) gira un processo denominato worker.
Questo worker può essere lanciato solo dalla console, non dal sito.
Il mio problema sta nel fatto che quando il server è riavviato i worker sono anche da rilanciare.


Ho trovato questo script che sarebbe poi da aggiungere nel crontab del server.
Salva in un file il PID del processo lanciato in modo di verificare che il processo non sia già attivo,  per evitare di lanciarne due. Se non è attivo lo lancia.

Il problema è che risulta che il processo è sempre attivo anche se non lo è. Il risultato è sempre "Already running".
Le condizione dell'if sono molto articolate e sono acerbo in scripting Linux, qualcuno mi potrebbe spiegare cosa fa cosi mi faccio il debug?
Grazie, ecco lo script:

#!/bin/bash
PIDFILE="$HOME/hyd.pid"
if [ -e "${PIDFILE}" ] && (ps -u $(whoami) -opid,ppid= | grep -P "^\s*$(cat ${PIDFILE})$" | awk '{print $2}' &> /dev/null);
  then
    echo "Already running."
    exit 99
fi
nohup /usr/local/bin/python2.7 ~/webapps/w2p_2_12_3/web2py/web2py.py -K hydrover_oleodinamica & 2>&1 > $HOME/hyd.log &
echo $! > "${PIDFILE}"
chmod 644 "${PIDFILE}"