我有一個cron作業,其輸出現在被重定向到一個文件中。它看起來像下面如何將cron作業輸出重定向到stdout
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
任何一個可以幫助我rediect其輸出到標準輸出?
我有一個cron作業,其輸出現在被重定向到一個文件中。它看起來像下面如何將cron作業輸出重定向到stdout
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
任何一個可以幫助我rediect其輸出到標準輸出?
在任何終端上輸入tty
,我們將獲得設備文件,如/dev/pts/1
。將cron作業重定向到此文件中爲 cleanup.sh > /dev/pts/1
當您註銷或退出當前shell時,tty將變爲無效(關閉並可能稍後重新使用)。 –
運行cat /home/darkknight/cleanup.log
然後您在STDOUT上獲得輸出。 如果你不能看到期望的輸出是什麼,也許你需要修改的cron如下:
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1
得到什麼cleanup.sh
寫在它的STDERR。
如果你不想失去昨日的輸出,修改如下:
0 9 * * * /bin/sh /bin/cleanup.sh >> /home/darkknight/cleanup.log 2>&1
或者,只是執行/bin/sh /bin/cleanup.sh
那麼你得到標準輸出和STDERR你的終端上。
運行進程具有PID,其fd(文件描述符)映射到/proc/<PID>/fd
。我們可以在/var/run/crond.pid
找到正在運行的cron進程的PID。
要將cron日誌發送到stdout,我們可以將日誌寫入由cron啓動的進程的fd編號1。
0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
這有什麼用?例如,在我的系統中,'/ usr/bin/cron'進程的stdout和stderr被定向到套接字。 –
@KeithThompson我的場景是我使用運行cron服務的docker容器(使用'cron -f' make cron在前臺運行),並且因爲我想收集日誌以進行監視和分析。根據12個因子應用程序 - 「將日誌視爲事件流」,以便將cron日誌重定向到stdout。 – gaga5lala
這實際上工作嗎?你能夠訪問寫入這些套接字的數據嗎? –
的可能的複製[如何重定向腳本的完整輸出(http://stackoverflow.com/questions/1887618/how-to-redirect-complete-output-of-a-script) – Bhavesh
HTTP ://unix.stackexchange.com/questions/52330/how-to-redirect-output-to-a-file-from-within-cron – Bhavesh
'cron'運行在shell的後臺,所以'stdout '你想把它重定向到? –