我想更新一个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
如果需要不同的时间表,例如hourly , daily , weekly , monthly和yearly ,可以创build多行。
然后在/home/user/.cron.hourly里面,你可以根据需要创build文件,每个文件都根据你的命名scheme命名。
这种方法基本上复制了某些发行版(例如Ubuntu)已经在/etc/crontab做的事情。 不同的是,只有root可以更新/etc/crontab ,但是你正在寻找每个用户可以为自己设置的东西。
在一个目录中创builduniq文件名,修改任何文件,然后将所有文件全部添加到crontab:
cat *.file | crontab