[英]Directing output from cron (calls) bash (calls) python3
我有一個簡單的python腳本test.py
,它打印日期和時間,然后引發錯誤。
我在.bash_profile
定義了一個bash函數,並將其命名為test()
,該函數使用
$ python3 ~/test.py
最后,我將cron行設置為每分鍾調用一次test()
bash函數以進行測試
test >> ~/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).log 2>&1
當我運行python腳本或bash函數時,可以正確地將打印信息和錯誤信息同時發送到終端。 當cron調用python腳本目錄時,它將正確記錄。 但是,當cron調用bash函數時,不會將任何內容寫入日志文件。
題
當cron調用bash函數時,如何正確地將python腳本的輸出定向到日志文件?
首先, test
對於函數來說是個壞名字,因為幾乎所有的外殼程序都內置了test
功能,並且幾乎所有系統中都可以使用外部test
命令。
現在,當您在cron
運行某些內容時,與啟動登錄和/或交互式Shell會話不同,它不會讀取會話啟動腳本,因此~/.bash_profile
(啟動登錄會話時為source
-d)中定義的功能不可用。
請注意,許多系統不使用bash
運行cron
腳本,例如Ubuntu使用dash
。 無論如何,您在cron
中執行的test
大概是shell的內置test
命令,它將返回不帶任何參數的退出代碼1。
為什么不直接將以下行放在crontab,
並消除test()
bash函數 Middleman?
* * * * 1 /usr/bin/python3 /home/myname/test.py >> ~/$(date +\%Y-\%m-\%d_\%H:\%M:\%S).log 2>&1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.