我想集中很多cron到/ etc / crontab。 现在,每个用户都在/ var / spool / cron中拥有自己的cron,这对我来说是不可维护的。 我想通过脚本自动执行此操作,但问题在于cron语法不同。 在/ etc / crontab中必须声明一个用户。 我怎样才能有效地完成这项任务?
你可能会从如下开始:
while read user; do crontab -l -u $user >> usersTabs; done < <(awk -F: '{print $1}' /etc/passwd )
这真的取决于,你想让他们像以前一样使用用户吗?
如果我的谷歌是正确的,格式的差异是:
* syntax: * user crontab: * minutes hours doms months dows cmd\n * system crontab (/etc/crontab): * minutes hours doms months dows USERNAME cmd\n
假设你有一个文件夹中的用户crontabs的输出,你可以做这样的事情:
find . -type f -print0 | xargs -0 -e perl -pe "s/((\w+\s+){5})(.*)/\1USERNAME \3/;"
我不知道这个crontab输出对你是否有意义,所以仔细检查一下。 应该可以通过更好的perl或使用awk或sed等不同的工具来使这个脚本变得更简单,但现在我不记得语法了。