Andy Asked: 2018-10-11 01:26:10 +0800 CST2018-10-11 01:26:10 +0800 CST 2018-10-11 01:26:10 +0800 CST 如何在运行 Ubuntu 的 VPS 上自动刷新 cron? 772 我的一个客户在运行 Ubuntu 的 VPS 上托管了一个 Magento 网站。 他们抱怨说他们没有收到任何销售电子邮件的副本——在调查了很多其他事情之后,我发现服务器上的 cron 作业大约在两个月前被卡住了。 我杀死了 cron 作业,这导致 Magento 重新排队最新的命令,嘿,很快——在接下来的 30 秒内收到了 7 封销售电子邮件! 有没有办法可以将 cron 服务设置为每天凌晨 3 点自动重启 - 或类似的东西?看来这将阻止这个问题再次成为问题...... cron magento 1 个回答 Voted Best Answer PerlDuck 2018-10-13T11:01:55+08:002018-10-13T11:01:55+08:00 重新启动 cron ( systemctl restart cron.service) 将无济于事:挂起的(或仍在运行的)进程将被重新设置为父进程并继续运行(或继续挂起,就此而言)。您需要停止排队过程本身。 一种简单的方法是通过timeout命令开始您的工作。假设您运行一个magento_que每 5 分钟调用一次的程序,并且希望最多运行 3 分 30 秒: */5 * * * * /usr/bin/timeout 3.5m /path/to/magento_que 3.5 分钟后,magento_que将发送一个 SIGTERM(类似于 CTRL-C)。如果它没有响应,您可以定义另一个信号或结合--kill-after=DURATION: */5 * * * * /usr/bin/timeout --kill-after=10s 3.5m /path/to/magento_que 现在magento_que将在 3.5 分钟后发送一个 SIGTERM,如果它拒绝停止,则将在 10 秒后发送一个 SIGKILL(它无法拦截)。 但是,这只是一种解决方法,我应该说我更愿意找到程序挂起的真正原因。
重新启动 cron (
systemctl restart cron.service
) 将无济于事:挂起的(或仍在运行的)进程将被重新设置为父进程并继续运行(或继续挂起,就此而言)。您需要停止排队过程本身。一种简单的方法是通过
timeout
命令开始您的工作。假设您运行一个magento_que
每 5 分钟调用一次的程序,并且希望最多运行 3 分 30 秒:3.5 分钟后,
magento_que
将发送一个 SIGTERM(类似于 CTRL-C)。如果它没有响应,您可以定义另一个信号或结合--kill-after=DURATION
:现在
magento_que
将在 3.5 分钟后发送一个 SIGTERM,如果它拒绝停止,则将在 10 秒后发送一个 SIGKILL(它无法拦截)。但是,这只是一种解决方法,我应该说我更愿意找到程序挂起的真正原因。