更新用户的crontab(非交互式)

我想更新一个linux用户的crontab。 在过去,我通过ssh和crontab -e交互地完成了这个任务。

我想自动化这个。

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

问题是:我无法像整个文件一样处理用户的crontab。 我需要能够自己更新每个部分…

我的完美解决scheme看起来像这样:

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 

背景:

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

假设目标系统是一个有run-parts我会这样做。 首先在用户的crontab中创build一行,如果它不在那里。 它可能是这样的:

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

如果需要不同的时间表,例如hourlydailyweeklymonthlyyearly ,可以创build多行。

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

这种方法基本上复制了某些发行版(例如Ubuntu)已经在/etc/crontab做的事情。 不同的是,只有root可以更新/etc/crontab ,但是你正在寻找每个用户可以为自己设置的东西。

在一个目录中创builduniq文件名,修改任何文件,然后将所有文件全部添加到crontab:

 cat *.file | crontab