Perché non riesco a vedere l'output dei lavori cron nel mio terminale?


0

Sto imparando come usare crontab e in quella ricerca quello che volevo fare era stampare qualcosa di semplice nella shell. Così ho fatto crontab -ee digitato quanto segue

* * * * * bash /etc/test.sh

test.sh

echo $NODE_ENV

Ora quello che mi aspetto è che il cronjob stampi il valore di NODE_ENVogni minuto sulla shell, cosa che non accade. Perché non lo stampa? Non dovrebbe stampare o sto facendo qualcosa di sbagliato?

Alcune cose che ho già provato.

$ ps aux | grep crond    
ubuntu   15438  0.0  0.0  11284   936 pts/1    S+   09:37   0:00 grep --color=auto crond

/var/log non ha un file cron.log creato quindi nessuna registrazione se il mio lavoro è stato effettivamente eseguito.

Sto eseguendo questo comando nell'istanza Amazon EC2 in Ubuntu 16.04, qualsiasi altro output di cui hai bisogno per favore fatemelo sapere.

Risposte:


4

Cron non esegue i comandi usando un terminale che hai aperto. Esegue i processi in background e salva l'output da inviare per posta (se è stata impostata la consegna della posta).

Se si desidera visualizzare l'output di un cronjob, il modo più semplice è reindirizzare l'output:

* * * * * bash /etc/test.sh >> /some/output/file 2>&1

E poi guarda quel file in un terminale che hai aperto:

tail -f /some/other/file

Su Ubuntu 16.04 e versioni successive, usando systemd, per visualizzare i log di cron, fai:

journalctl -u cron

E il crondemone è giusto cron, non crond:

$ systemctl status cron
 cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-01-12 19:02:04 IST; 1 weeks 1 days ago
     Docs: man:cron(8)
 Main PID: 1022 (cron)
    Tasks: 1
   Memory: 8.6M
      CPU: 24.967s
   CGroup: /system.slice/cron.service
           └─1022 /usr/sbin/cron -f

Puoi dirmi cosa significa 2> & 1.
Saras Arya,

@SarasArya che sta reindirizzando stderr allo stesso output di stdout. Vedi stackoverflow.com/q/818255/2072269
muru

Non ottenere ancora l'output. * * * * * bash /etc/test.sh >> /etc/output.txt 2>&1
Saras Arya,

Ho persino creato questo file output.txt. Avrei dovuto creare questo file?
Saras Arya,

@SarasArya hai il permesso di scrivere /etc?
Muru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.