簡體   English   中英

指導cron(調用)bash(調用)python3的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM