webentwicklung-frage-antwort-db.com.de

So leiten Sie die Cron-Jobausgabe in stdout um

Ich habe einen Cron-Job und seine Ausgabe wird jetzt in eine Datei umgeleitet. Es sieht wie folgt aus

0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log

Kann mir jemand helfen, seine Ausgabe in stdout umzuwandeln? 

14
shafeeq

Geben Sie an einem beliebigen Terminal tty ein, und wir erhalten eine Gerätedatei für dieses bestimmte temporäre Fenster wie /dev/pts/1. Leiten Sie den Cron-Job in diese Datei als cleanup.sh > /dev/pts/1 um.

2
achoora

Der laufende Prozess hat eine PID und sein fd (Dateideskriptor) ist auf /proc/<PID>/fd abgebildet. Die PID des laufenden Cron-Prozesses finden Sie unter /var/run/crond.pid.

Um das cron-Protokoll an stdout zu senden, können wir das Protokoll an fd Nummer 1 des von cron gestarteten Prozesses schreiben.

0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
26
gaga5lala

Führen Sie cat /home/darkknight/cleanup.log aus, und Sie erhalten die Ausgabe auf STDOUT . Wenn Sie nicht sehen, was Sie als Ausgabe erwarten, müssen Sie den cron möglicherweise wie folgt ändern:

0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1

Um zu bekommen, was cleanup.sh auf seinen STDERR schreibt.

Wenn Sie die Ausgabe von gestern nicht verlieren möchten, ändern Sie sie wie folgt:

0 9 * * * /bin/sh /bin/cleanup.sh >> /home/darkknight/cleanup.log 2>&1

Oder führen Sie einfach /bin/sh /bin/cleanup.sh aus, und Sie erhalten STDOUT und STDERR auf Ihrem Terminal.

1