我想更新 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
、、、和。daily
weekly
monthly
yearly
然后您可以在里面/home/user/.cron.hourly
根据需要创建文件,每个文件都根据您的命名方案命名。
这种方法本质上复制了某些发行版(如 Ubuntu)已经在 中执行的操作/etc/crontab
。不同之处在于 只能root
更新/etc/crontab
,但您正在寻找每个用户可以自行设置的东西。
答案2
在一个目录中创建唯一的文件名,修改任何文件,然后将其全部添加到 crontab:
cat *.file | crontab