【问题标题】:Crontab restart supervisor python instance? [closed]crontab 重启主管 python 实例? [关闭]
【发布时间】:2023-04-09 16:04:01
【问题描述】:

在使用 crontab 重新启动主管 python 实例时,我遇到了一个非常奇怪的问题。 详情如下:

  1. 一个非常简单的 Python 脚本,其中包含一些调度作业 (apscheduler)
  2. 脚本需要在supervisor中观看,所以我做了一些配置,目前运行良好。
  3. 一个新的需求需要每天中午重置脚本。所以我设置了一个 sudo crontab 作业以使用

    重新启动主管实例
    01 12 * * * sudo /usr/bin/supervisorctl restart {instance name}
    
  4. 一切正常,我每天检查实例的运行时间,显示实例已正确重启。
  5. 然后我意识到,在实例自动重启后,脚本甚至没有被触发。
  6. 但是,如果我在主管控制台中使用重新启动链接,脚本重新启动并完美运行

【问题讨论】:

  • 抱歉文字格式,我在手机上发帖。
  • cron 作业是否属于 root 用户(通过运行 sudo crontab -e 而不是 crontab -e)?如果是这样,您不需要sudo。对于普通用户的 cron 作业,sudo 会询问他们的密码,而 crontab 不会自动输入您的密码。
  • @btquanto 感谢您的回答,稍后会尝试更新
  • 试试吧,如果使用 'crontab -e' 而不是 'sudo crontab -e' ,实例将不会因为权限被拒绝而重启。
  • 我的意思是你在运行 root cron 作业时在 cron 作业中不需要 sudo。你的 cron 任务会变成 01 12 * * * /usr/bin/supervisorctl restart {instance name}

标签: python ubuntu cron supervisord apscheduler


【解决方案1】:

root cron 作业无需在脚本路径中指定sudo 即可以管理权限运行(root 具有顶级权限)。

要将 cron 作业添加到 root 的 cron 作业列表中,请运行:sudo crontab -e

您的 cron 选项卡条目应修改为:

01 12 * * * /usr/bin/supervisorctl restart {instance name}

【讨论】:

  • 你好,这个方法好像昨天才起作用,奇怪的是,crontab作业成功重启了实例,但今天仍然没有触发里面的功能。
  • 那可能是另一个问题
  • 如果您自己以root身份运行命令,它是否运行正确? (sudo进入root,然后运行命令)
  • 云服务只允许我运行“sudo supervisorctl restart {instance name}”之类的命令,并且可以正常工作。最重要的是,每次我在主管控制台中使用重启链接时,似乎都没有问题! (当我使用 crontab 重启时,控制台中的 uptime 显示该实例当时确实重启了,但没有触发任何功能)
  • 非常愚蠢的错误!!!!我重新检查了我的源代码,然后我意识到我已经设置了一个触发函数的条件,类似于'if int(now_hour) > 12:',我使用 crontab 在 12:00 重新启动脚本,这当然是该功能不会被触发。每次我在控制台上重新启动时都在下午 13 点之后,这就是它会起作用的原因!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 2021-03-20
  • 2012-04-28
相关资源
最近更新 更多