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?
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.
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
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.