Zum umleiten von cron-job Ausgabe auf stdout
Habe ich einen cron-job, und seine Ausgabe ist nun umgeleitet in eine Datei. Es sieht wie folgt aus
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
Kann einer mir helfen zu rediect seine Ausgabe auf stdout?
- Mögliche Duplikate von how to redirect komplette Ausgabe eines Skripts
- unix.stackexchange.com/questions/52330/...
cron
im hintergrund läuft die shell, also diestdout
Sie es möchten, leiten Sie die Ausgabe an?- In meinem Fall kann ich das debug-log aktivieren von einem terminal. Ich möchte zu setzen, terminal, stdout
- Es läuft nicht im hintergrund von der shell. Es ist nicht verbunden mit irgendeiner shell.
- Das ist wahrscheinlich nicht eine vernünftige Sache zu tun. Was wollen Sie passieren, wenn Sie sich Abmelden oder beenden der aktuellen shell-Prozess und der cron-job läuft?
- achoora Antwort für mich gearbeitet. Im Fall von shell beenden, wir müssen angeben, dass das neue terminal-Namen, ggf. den log wieder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geben Sie
tty
auf jedem Endgerät aus und wir werden device-Datei für die jeweilige teminal-Fenster, wie/dev/pts/1
. Redirct der cron-job in die Datei alscleanup.sh > /dev/pts/1
Laufenden Prozess hat eine PID und seine fd (file descriptor) ist die Zuordnung zu
/proc/<PID>/fd
. Und wir finden die PID des Laufenden cron-Prozess bei/var/run/crond.pid
.Senden cron-log an stdout, wir könnten das Protokoll schreiben auf fd die Nummer 1 der Prozess begann von cron.
/usr/bin/cron
Prozess geleitet werden, um Steckdosen.cron -f
machen cron läuft im Vordergrund), und da möchte ich, um Protokolle zu sammeln, die für die überwachung und Analytik. Nach 12-Faktor-app -Treat logs as event streams
also ich umleiten cron-log an stdout.docker logs
und fluentd.procid=1
:/proc/1/fd/1 2>&1
weil proc 1 ist das, was geht, um docker logstail -f $(/proc/$(cat /var/run/crond.pid)/fd/1)
bekomme ich permission deniedLaufen
cat /home/darkknight/cleanup.log
dann erhalten Sie die Ausgabe auf STDOUT.Wenn Sie nicht sehen können, was erwarten Sie als Ausgabe, vielleicht müssen Sie zum ändern der cron wie folgt:
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1
Zu bekommen, was
cleanup.sh
schreibt auf seiner STDERR.Wenn Sie nicht wollen, zu verlieren, die Ausgabe von gestern, ändern 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
dann bekommt man sowohl STDOUT und STDERR auf Ihrem terminal.