我有一个脚本/home/projects/temperature_logger/analyze.py
可以对文件进行一些处理temp.log
,该文件实际上是日期和当前树莓派温度的 csv。该 python 脚本还将结果记录到.log
文件中。从命令行调用它就像sudo python3 analyze.py
预期的那样,但由于某种原因我无法让它与 crontab 一起工作。
sudo chmod +x analyze.py
我也跑过sudo chmod ugo+w analyze.py
。
我的whereis python3
说/usr/bin/python3
。我的脚本顶部的 shebanganalyze.py
是#!/usr/bin/python3
.
我的 crontab 脚本是
* * * * * /usr/bin/python3 /home/projects/temperature_logger/analyze.py
出于测试目的,我现在实际运行的是
if __name__ == '__main__':
logging.info("running file!")
sudo python3 analyze.py
在我的analyze.py 中,但除非我从目录中手动调用,否则我看不到它被填充到我的日志文件中。
我在这里做错了什么?系统日志似乎没有表明任何错误,但也许我不明白它们?对图片表示歉意,我不确定如何从 PuTTy 终端复制
更新:我为我的用户添加了所有ubuntu
权限 sudo chmod -R a+rwx /home/projects/temperature_logger
。然后我更改了 crontab,清除了我的 root cron 并将对 python 脚本的调用放在 ubuntu 的 cron 文件下。我现在确实在系统日志下看到了这一点
它似乎没有表明任何错误。但是,当我用它调用它时,脚本确实python3 analyze.py
会正确写入我的scripts.log
文件,但是当从 cron 调用它时,它说正在运行系统日志 - 我没有看到任何记录。
已解决:所以这是由于我误解了我的用户帐户的主目录是什么以及脚本的当前工作目录是什么。在我的analyze.py
脚本中logging.basicConfig(filename='scripts.log', ...)
,当我从目录运行时sudo
,它写入到/home/projects/temperature_logger/scripts.log
,但是当从我的用户的 cron 文件调用它时,它写入到/home/ubuntu/scripts.log
。
答案1
不确定你是如何编写scripts.log的,但是为了测试你是否使用logging.info,然后确保你已经为日志记录设置了正确的基本配置......就像这样......
if __name__ == '__main__':
logging.basicConfig(filename='test.log',level=logging.DEBUG)
logging.info("running file!")