【问题标题】:flock with crontab is not working properly使用 crontab 的群不能正常工作
【发布时间】:2021-11-28 18:27:42
【问题描述】:

我有一个 crontab 工作,看起来像这样:

*/5 * * * *  /usr/bin/flock -w 0 /home/partners_perfluence_delivery/cron.lock cd /home/partners_perfluence_delivery && /usr/bin/python3 /home/partners_perfluence_delivery/main.py

当我手动运行脚本main.py 时,一切都像一个魅力。当我尝试使用 crontab 作业时,会创建锁定文件,但是当我正在寻找 ps aux | grep main.py 的工作时,我在输出中看不到任何内容以及 main.py 中使用的请求没有发出

我可能做错了什么?

【问题讨论】:

标签: bash cron flock


【解决方案1】:

flock 在子进程中执行cd,然后在完成时释放锁。如果 Python 脚本需要在该目录中运行,则不会发生,因为该目录仅在子进程中更改。

你应该使用flock -c在同一个shell进程中执行cdpython

*/5 * * * *  /usr/bin/flock -w 0 /home/partners_perfluence_delivery/cron.lock -c 'cd /home/partners_perfluence_delivery && /usr/bin/python3 /home/partners_perfluence_delivery/main.py'

【讨论】:

  • 谢谢!那很有帮助。我也遇到了一个奇怪的行为,那个锁没有被移除,因为它应该在 cd 命令成功执行后被移除,不是吗?
  • python脚本完成后应该删除它。
  • 至少对于我熟悉的flock 的版本,您可以省略sh 参数,因为flock 有一个-c 选项,其作用基本相同。
猜你喜欢
  • 2013-09-15
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2013-08-31
相关资源
最近更新 更多