python - Cron 作业运行成功但没有任何反应

标签 python linux cron

我对创建 cron 作业和一般的 linux 环境还很陌生,如果问题听起来太简单,请提前致歉。我会尽量清楚地提出我的问题。就这样吧,

我已经使用 Python(3.5.2 版本)创建了一个简单的电子邮件(发送给自己)脚本,我想使用 cron 作业计划安排此脚本每 2 分钟运行一次。我正在使用存储我的 Python 脚本的 SSH 登录远程 Linux 服务器。当我使用 linux 终端手动运行脚本时,脚本运行得非常好。当我尝试为该脚本安排一个 cron 作业计划时,我猜测该脚本正在运行,因为我可以使用

在日志中看到运行
sudo grep CRON /var/log/syslog

我在日志中看到的是这样的

Dec 30 19:38:01 abc-abcStation CRON[18707]: (abc) CMD (/home/abc/anuj/TPA/Test_Cron.py)

每隔2分钟

但是运行没有做它应该做的事情(发送电子邮件),而当我手动运行它时它会做。我的 cron 作业看起来像这样

*/2 * * * * /home/abc/anuj/TPA/Test_Cron.py

邮件发送脚本是 Test_Cron.py,如下所示

import smtplib

server = smtplib.SMTP('smtp.office365.com', 587)
server.starttls()
server.login("username@mycompany.com", "mypassword")

msg = "TEST MESSAGE!"
server.sendmail("username@mycompany.com", "myemail@mycompany.com", msg)
server.quit()

我搜索了很多此类问题并发现了与我自己类似的案例,尝试了所有建议的解决方案,但我仍然遗漏了一些东西。

我的猜测是这与设置正确的路径有关。我尝试在 crontab 语句上方设置路径,例如

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/2 * * * * /home/abc/anuj/TPA/Test_Cron.py

也试过了,

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/2 * * * * /home/abc/anuj/TPA/Test_Cron.py

和,

*/2 * * * *  cd /home/abc/anuj/TPA/ && Test_Cron.py

但没有成功。非常感谢任何帮助。

谢谢!

最佳答案

如果这对我有帮助的话,我遇到了完全相同的情况,但我发现由于我使用不同的 conda 环境来编写我的脚本;我必须通过 shebang #!我用来在脚本中编写脚本的环境的 python 解释器的路径。

这让它起作用了。我还有另一个脚本运行得很好,否则当通过 cron 作业使用“python3”命令调用它时。

我只是猜测某些模块可能没有正确加载,甚至没有写入任何输出就失败了。

获取你的 conda envs 路径

    conda info --envs

将它添加到脚本的顶部,并简单地在 cron 作业中提供路径。

    #!/home/username/anaconda3/envs/AutoBrowsing/bin/python

示例 Cronjob:

    */6 * * * * /home/username/path/to/script.py >> /home/username/scriptlog.txt

关于python - Cron 作业运行成功但没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48039841/

相关文章:

python - 通过自省(introspection)打印 ctypes "Structure"的所有字段

python - 在 setup.py 中生成和复制一些文件到任意位置的推荐方法是什么?

python - 无法对我的数据应用 scipy.signal lfilter

linux - Cron 计划任务被忽略

Python:libc fallocate 返回失败

linux - 如何将依赖模块插入内核?

linux - 使用 linux 命令行 (bash) 从网络摄像头拍照

c# - 在 windows 和 mono linux 平台上显示 RGB 图像

mysql - 如何使用带有 SCHEDULE 语句的事务?

postgresql - 如何测试crontab入口?