【问题标题】:Jobs scheduled using python_crontab not working使用 python_crontab 计划的作业不起作用
【发布时间】:2017-05-19 20:33:45
【问题描述】:

我正在使用以下 python 代码在 ubuntu 中安排作业。

from crontab import CronTab
cron = CronTab(user='username')
job  = cron.new(command='/usr/bin/python3 /home/(user)/Desktop/Schedular/ScheduleInvoicingUtility.py >> /home/(user)/Desktop/Schedular/Logs.txt')
job.setall('*/2 * * * *')        
cron.write()
print(cron.render())

代码运行成功,渲染函数打印输出如下:

*/2 * * * * /usr/bin/python3 /home/(user)/Desktop/Schedular/ScheduleInvoicingUtility.py >> /home/(user)/Desktop/Schedular/Logs.txt

但不知道这个作业在 ubuntu 中保存在哪里,而且作业在指定时间后没有运行/工作。

知道我做错了什么吗?

【问题讨论】:

  • 您不需要管理员权限来更改 crontable 吗?
  • 我可以使用 sudo crontab -e 命令编辑 crontab,并且我在我的 python 代码中使用了上面相同的用户。
  • 所以您使用 sudo 运行了您的 pyhton 脚本?
  • 这个 python 脚本正在被另一个 cron 作业触发。 cron作业的代码是:0 7 * * * /usr/bin/python3 /home/(user)/Desktop/Schedular/ScheduleInvoicingUtility.py >> /home/(user)/Desktop/Schedular/Logs.txt
  • 我的意思是:使用sudo 运行对应于sn-p 的python 脚本,而不是Invoicing 的东西。

标签: python python-3.x ubuntu cron crontab


【解决方案1】:

最后我通过小改动解决了这个问题。这是从 python 正确创建 cron 作业的代码:

cron = CronTab(user=True)
job  = cron.new(comment='My_Unique_Job', command='/usr/bin/python3 /home/(user)/Desktop/Schedular/ScheduleInvoicingUtility.py >> /home/(user)/Desktop/Schedular/Logs.txt')
job.setall('*/2 * * * *')
cron.write()

使用它来删除以前具有相同 id 的作业。

cron.remove_all(comment='My_Unique_Job')

完整的代码是:

cron = CronTab(user=True)
cron.remove_all(comment='My_Unique_Job')
job  = cron.new(comment='My_Unique_Job', command='/usr/bin/python3 /home/(user)/Desktop/Schedular/ScheduleInvoicingUtility.py >> /home/(user)/Desktop/Schedular/Logs.txt')
job.setall('*/2 * * * *')
cron.write()

别忘了导入 CronTab:

from crontab import CronTab

使用 pip 安装 python_crontab。

pip install python_crontab

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2022-01-01
    • 2017-01-20
    • 2019-10-04
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多