将 python 输出从 cron 存储到文件

将 python 输出从 cron 存储到文件

我有以下 python 脚本,我正尝试从 cron 运行并存储其输出。

import time
from tqdm import tqdm  #pip3 install tqdm
x= range(1,20)
for _ in tqdm(x):
    time.sleep(0.2)

print("Done")

我尝试了以下一些方法将输出存储到文件,但只存储了“完成”

* * * * * cd /home/ubuntu/test && python3 tqdm_test.py >> test1.log
* * * * * cd /home/ubuntu/test && /usr/bin/python3 tqdm_test.py &>> test2.log
* * * * * cd /home/ubuntu/test && /usr/bin/python3 tqdm_test.py > test3.log

理想情况下,我想将进度条 + “完成” 存储到日志文件中,非常感谢任何帮助。 (我使用 Python 3.8.5 和 Ubuntu 20.04)

答案1

tqdm将其进度指示器写入 stderr 而不是 stdout。

然而,您已经接近&>>失败,因为&>>(和非附加的&>)是巴什主义,而 cronjobs 的默认 shell 是 /bin/sh。

您可以SHELL=/bin/bash在 crontab 中设置,或者使用以下方法在 /bin/sh 中重定向 stdout 和 stderr

* * * * * cd /home/ubuntu/test && python3 tqdm_test.py >> test1.log 2>&1

(附加)或

* * * * * cd /home/ubuntu/test && python3 tqdm_test.py > test1.log 2>&1

(覆盖)。

相关内容