防止用户使用相同的 cron 计划?

防止用户使用相同的 cron 计划?

我的服务器上有很多用户使用完全相同的 cron 计划,这导致服务器负载过高。我们可以避免这种情况吗?

例如,如果有 x 个用户使用以下 cron 计划:0 1 * * *,是否可以防止未来的用户使用相同的 cron 计划?

答案1

您可以分配计划任务每个用户帐户计划:

crontab -e -u user

答案2

为什么不简单地编写一个脚本来比较所有用户的 cron 文件,如果它们发生冲突,则将其移至下一个?如果在多个 crontab 中发现此问题,则0 1 * * *针对每个存在的冲突更改移动分钟数5 1 * * *10 1 * * *然后只需在根 crontab 中运行此脚本,以便它经常自动更改用户 crontab。

如果用户的 cron 任务在他们指定的时间运行至关重要,那么你必须考虑使用PAM 限制

答案3

如果您的用户只是想执行夜间任务,那么基于运行 ~/nightly.sh 的解决方案可能会更简单。

然后,您将一个接一个地运行“/home/*/nightly.sh”。当然,您必须在合理的环境中以自己的权限运行每个用户的脚本(cron 会执行这些操作)。

但它可能相当简单。例如:

for user in user0 user1 user2 user3 ... 
do 
   script=/home/$user/nightly.sh
   [ -x $script ] || continue 
   sudo -u $user  2>&1 | mail -s "nightly.sh" $user 
done

相关内容