我有一个shell脚本和一个我希望每两分钟执行一次的python脚本。一个是卷曲请求,另一个是分析其内容。
这是我的crontab中的内容:
*/2 * * * * $HOME/Routes/curl.sh
*/2 * * * * $HOME/Routes/analyse.py >> $HOME/Routes/analyse.log 2>&1
这两个文件都可以chmod +x
执行。正在创建一个文件“analyse.log” - 但那里什么都没有。
grep CRON /var/log/syslog
都会显示此消息的出现。
Jan 14 20:36:01 raspberry CRON [23217] :( CRON)info(未安装MTA,丢弃输出)
我错过了什么?我错了吗?
谢谢!
答案 0 :(得分:0)
MTA是"邮件传输代理",一个发送电子邮件的程序。 Cron告诉你,它希望向你发送报告工作执行结果的电子邮件,但它无法找到可以用来执行此操作的程序。
当作业将某些内容写入其标准错误流时,Cron会尝试发送电子邮件,因此可能是您的curl.sh
脚本抱怨出现了问题。 (你的analyse.py
将其stderr折叠成stdout,这样就不应该将任何消息传递给cron,除非出现错误,以至于重定向尚未生效。)你可以尝试编辑{{1将stderr重定向到文件中的作业,以便您可以看到它试图告诉您的内容:
curl.sh
顺便说一句,如果*/2 * * * * $HOME/Routes/curl.sh 2>$HOME/Routes/curl-stderr.txt
应该检查analyse.py
的输出,那么你告诉cron同时运行它们似乎很奇怪。作为单一工作的一部分,让cron一个接一个地运行它们会更有意义吗?像:
curl.sh
脚本失败的一个非常常见的原因是它们依赖于在特定工作目录中执行或者使用存在于用户终端shell中但不存在于环境中的环境设置来执行。 cron job。 */2 * * * * $HOME/Routes/curl.sh ; $HOME/Routes/analyse.py >> $HOME/Routes/analyse.log 2>&1
是在这两种情境中有所不同的强有力候选人。您可以尝试运行这样的脚本:
$PATH
检查它们在cron的精简环境中是否正常运行。
答案 1 :(得分:0)
感谢您的帮助。您对并行处理的建议非常有帮助。
我的主要问题是Cron在错误的目录上工作。我在脚本中有一些相对路径,当它在shell中被执行时起作用,因为我是在正确的直接。 Cron似乎又有一个不同的工作目录,这引起了麻烦。
再次感谢!