是否有为用户 cron 作业安装终止或开/关开关的既定模式?

Sea*_*ean 8 cron build-server

我们有较长的构建,通常我们会安排我们的 cron 作业,但有时我们必须在非标准时间范围内重新运行构建,并且可能会与在这些时间通常可以安全运行的 cron 作业发生冲突。

我们有多个帐户同时运行构建和 cron 作业,所以我们不能暂停整个机器的 crontab 服务,然后再重新启动它。

我想知道是否有人有模式或实现。我想象这工作像

用户创建一个文件: ~/block-crontab
user running build cron 作业在用户的主目录中查找该文件,如果存在则跳过所有 cron 作业。否则它运行作业然后当构建完成时,用户删除 ~/block-crontab

那行得通吗?我猜我需要以某种方式修改 cron 脚本。我主要想知道是否有更好/标准的方法来解决这个问题?

谢谢。

sho*_*hok 10

crond我强烈建议在构建脚本中实现一些(甚至是简单的)锁定形式,而不是搞乱。例如,触摸并检查中的文件/var/run/:如果您的脚本找到某些内容,则另一个进程正在构建项目。完成后,您显然需要删除锁定文件。

正如@GnP 在评论中指出的那样,您还可以使用该flock实用程序来半自动地管理您的锁定文件。

如果您不/不能依赖任何锁定机制,只需发出 aservice crond stop即可关闭crond系统。

  • `flock` 命令将是这个答案的一个很好的补充。它处理锁定文件及其所有的小细节。 (2认同)