我有以下 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
(覆盖)。