背景:

背景:

我想更新 Linux 用户的 crontab。过去我通过 ssh 和 以交互方式完成此操作crontab -e

我想使这个自动化。

我的需求:我需要更新 crontabs。这意味着我需要为每个条目指定一个唯一的名称。否则该工具无法区分“添加”和“更新”。

问题:我无法将用户的 crontab 作为整个文件处理。我需要能够单独更新每个部分...

我的完美解决方案是这样的:

magic-crontab-tool add-or-update unique-name-for-this crontab-snippet.file

文件 crontab-snippet.file:

@hourly do-x
@weekly do-y

结果应如下所示(crontab -l

# Start manged by magic-crontab-tool. ID: unique-name-for-this
@hourly do-x
@weekly do-y
# End unique-name-for-this

背景:

所有这些都需要以普通用户身份完成,而不需要 root 访问权限。

答案1

假设目标系统具有以下功能,run-parts我将执行以下操作。首先在用户的 crontab 中创建一行(如果尚未创建)。它可能看起来像这样:

@hourly cd /home/user && run-parts --report /home/user/.cron.hourly

如果需要不同的时间表,则可以创建多条线路,例如hourly、、、和。dailyweeklymonthlyyearly

然后您可以在里面/home/user/.cron.hourly根据需要创建文件,每个文件都根据您的命名方案命名。

这种方法本质上复制了某些发行版(如 Ubuntu)已经在 中执行的操作/etc/crontab。不同之处在于 只能root更新/etc/crontab,但您正在寻找每个用户可以自行设置的东西。

答案2

在一个目录中创建唯一的文件名,修改任何文件,然后将其全部添加到 crontab:

cat *.file | crontab

相关内容