2013-01-22 16 views
11

Sto cercando di trovare un cronjob che è stato creato per garantire che lo script non duplichi lo stesso cronjob esatto.Cercare un cronjob con crontab -l

Ho cercato di usare qualcosa in questo senso, ma non ho avuto molta fortuna:

if ! crontab -l | xargs grep -l '/var/www/arix/update.php'; then 
    echo "Cronjob already exists" 
else 
    echo "Cronjob doesn't exist" 
fi 
+0

Cosa è successo dopo aver eseguito questa linea? –

+0

non hai bisogno di xargs. e perché vuoi 'grep -l'? forse solo "se! crontab -l | grep -q '....'; quindi dovrebbe funzionare. Infine, per eseguire il debug della situazione, eseguire l'elemento interno, quindi accodare la parte successiva, ad esempio 'crontab -l' (produce l'output che ci si aspetta?), Quindi' crontab -l | ... '. In bocca al lupo. – shellter

risposta

22

/var/spool/cron/crontabs è la solita directory padre per i file crontab. Ci sono file che hanno nomi di utenti - root è il crontab di root, per esempio. C'è un potenziale per ogni utente sul sistema di aver usato crontab -e e creato il proprio crontab.

Come utente root è possibile:

cd /var/spool/cron/crontabs 
grep 'search string' * 

Questo comando (come root) vi dirà quale utente del crontab ha la stringa. E se esiste.

Si potrebbe fare questo se se non sei sicuro di quello che crontabs le cose sono in crontab -l dà solo la roba in crontab, l'utente attualmente connesso Se sei sicuro che è il posto migliore per controllare:..

crontab -l | grep -q 'search string' && echo 'entry exists' || echo 'entry does not exist' 
+1

Ha funzionato! Grazie. Ho cambiato la routine per apparire come segue e ha funzionato come necessario. Se ! crontab -l | grep -q '/var/www/arix/update1.php'; quindi echo "Cronjob non esiste" – user0000001

+3

Questo ha funzionato perfettamente! Grazie!! – ChrisPrime

+0

Grazie @ user0000001, questo è un modo utile per formattarlo. – Noumenon