将用户 cron 转换为系统 cron

将用户 cron 转换为系统 cron

我想将大量的 cron 集中到 /etc/crontab。现在每个用户在 /var/spool/cron 中都有自己的 cron,这对我来说难以维护。我想通过脚本自动完成此操作,但问题是 cron 语法不同。在 /etc/crontab 中必须声明用户。我如何才能高效地完成这项任务?

答案1

你可以从类似这样的内容开始:

while read user; 
    do crontab -l -u $user >> usersTabs;
done < <(awk -F: '{print $1}' /etc/passwd )

这确实取决于您是否希望他们以之前相同的用户身份运行?

答案2

如果我的谷歌是正确的,格式的区别是:

     * 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)应该可以使这个脚本更简单,但我现在记不清语法了。

相关内容