ujamii/update-cronjobs

Bash 脚本,用于更新当前项目的 cronjobs(仅限当前项目)

v1.0.0 2019-02-18 08:04 UTC

This package is auto-updated.

Last update: 2024-09-18 21:10:40 UTC


README

Bash 脚本,用于更新当前项目的 cronjobs,仅限这些。
update-cronjobs.sh 通过标准输入接收 cronjobs,格式为正常的 crontab 格式,并将它们放入一个特殊的块中,而不会触及 crontab 文件中已经存在的 cronjobs。

这允许你构建一个脚本来在部署时自动更新你的项目 cronjobs。
如果你不是部署应用程序的人,你可以只向系统管理员传递要执行的脚本来设置你的 cronjobs 的名称,而不是告诉他你想要在 cronjobs 文件中的每一行。

如果你将更新 cronjobs 的脚本放入你的项目 git / svn 仓库中,你突然就有了一个包含它们执行时间的 cronjobs,而不需要在你的框架 / cms 中安装大的 cron-like-behaviour 套件。

使用 composer 设置

composer require ujamii/update-cronjobs

将 scripts/setupCronjobs.sh 添加到你的项目中

#!/usr/bin/env bash

PROJECT_ROOT=$(cd $(dirname $0)/..; pwd -P)
CRONJOBS_NAME='My great project'

${PROJECT_ROOT}/vendor/ujamii/update-cronjobs/update-cronjobs.sh "${CRONJOBS_NAME}" $1 <<-EOF
	@daily      ${PROJECT_ROOT}/bin/console daily-cronjob-example

	# Send mails every 5 minutes
	*/5 * * * * ${PROJECT_ROOT}/bin/console sendmails

	# ... Your other cronjobs ...
EOF

现在你可以运行 ./scripts/setupCronjobs.sh 来更新你的项目 cronjobs,而不会影响 crontab 中已经存在的其他 cronjobs。

这将导致以下 crontab

#---- My great project cronjobs start here ----#
@daily      bin/console daily-cronjob-example

# Send mails every 5 minutes
*/5 * * * * bin/console sendmails

# ... Your other cronjobs ...
#---- My great project cronjobs end here ------#

要再次删除整个块,包括开始和结束标记,请调用 ./scripts/setupCronjobs.sh -r
这同样不会影响 crontab 中的其他 cronjobs,只会删除项目块。