Pentru a rula un job cron la miezul nopții, ați prefix comanda sau calea către script-ul dvs. cu:
0 0 * * *
De exemplu, să alerg /home/youssif/myscript
, ai folosi:
0 0 * * /home/youssif/myscript
în fișierul tău crontab.
Pentru a edita fișierul crontab, utilizare crontab -e
pentru a rula comanda ca utilizator curent. Alternativ, dacă trebuie neapărat să rulați comanda ca root, puteți rula sudo crontab -e
pentru a edita fișierul crontab.
Pentru a rula comanda într-un terminal (nu este o idee bună dacă rulați comanda ca root), va trebui să specificați afișajul de utilizat în comandă sau în script. Pentru a face acest lucru, presupunând că dvs $DISPLAY
este :0
(implicit) puteți prefix comanda cu următoarea variabilă:
DISPLAY=:0
De asemenea, un terminal se va închide de obicei după ce comanda este executată, dar puteți utilizați opțiunea hold cu xterm pentru a menține terminalul deschis.
Deci, să alerg ecou „bună lume”
într-un terminal la miezul nopții, comanda ta ar arăta astfel:
0 0 * * DISPLAY=:0 xterm -hold -e 'echo "bună lume"'
sau pentru a rula scriptul:
0 0 * * DISPLAY=:0 xterm -hold -e '/home/youssif/myscript'
Cu toate acestea, modalitatea standard de a inspecta ieșirea unui cronjob este redirecționarea ieșirii terminalului către un fișier pe care îl puteți consulta mai târziu.
De exemplu, pentru a redirecționa ieșirea terminalului către fișier /home/youssif/helloworld.log
veți folosi următoarea linie în fișierul crontab:
0 0 * * echo "hello world" > /home/youssif/helloworld.log
Alternativ, puteți utiliza și tricou
comandă pentru a redirecționa rezultatul astfel:
0 0 * * ecou „bună lume” | tee /home/youssif/helloworld.log
În cele din urmă, puteți utiliza pisică
comandă pentru a vizualiza conținutul fișierului:
pisica /home/youssif/helloworld.log
În acest fel, comanda poate rula în fundal, dar puteți încă inspecta ieșirea.
Pentru a dezactiva/activa sarcini pe baza rezultatului unei sarcini deja executate, cred că acest lucru ar fi într-adevăr mai potrivit pentru o întrebare separată. Cred că răspunsul dvs. ar implica folosirea unei declarații „dacă atunci altfel” într-un script bash.
EDITAȚI | ×:
La fel de a subliniat @Tcooper, trebuie să adăugăm 2>&1
pentru a redirecționa toată ieșirea, inclusiv mesajele de eroare așa că s-ar putea să doriți să utilizați ceva de genul acesta în schimb:
0 0 * * echo "hello world" 2>&1 > /home/youssif/helloworld.log
sau
0 0 * * echo „bună lume” 2>&1 | tee /home/youssif/helloworld.log