让Cron运行针对LDAP用户的标记为@reboot的进程的问题

我有一个运行Ubuntu 9.10的电脑实验室。 login这些计算机的大多数用户是来自LDAP服务器的用户,而不是本地用户。 我们发现,如果一个LDAP用户拥有一个crontab,并且标记为运行@reboot的条目,那么该命令将不会在重新引导机器时运行。

我敢肯定,这是因为cron守护进程在联网完全启动之前启动,所以任何LDAP用户的crontabs都不会被加载并运行或检查@reboot 。 事实上,cron会在重启后完全忽略LDAP用户的crontabs,直到该用户再次运行crontab -e并保存,或者直到cron守护进程重启。

通过将以下行添加到/ etc / crontab中,我们能够修复此问题的一部分:

 @reboot root /bin/sleep 45 && /etc/init.d/cron restart 

因此,当cron在重新启动时开始备份时,它将等待联网起来,然后重新启动cron守护进程。 这解决了crontabs根本不能读取LDAP用户的问题。 但是,由于它是重新启动的cron守护程序,而不是计算机, @reboot条目将被忽略。

有没有一种方法让用户在重启守护进程时运行一个命令,而不是重新启动? 还是有更好的解决这个整体问题?

谢谢。

听起来就像你有一个竞争条件,其中cron正在扫描它的选项卡,并没有find一个有效的用户,因为无法到达networking/ LDAP服务器 – 您需要确保您的用户列表可以访问,然后cron启动。

尝试调整您的RC序列,以便cron在networking完全启动之后才启动(通过重新安排rc.d或在cron脚本中进行标记以使其首先启动networking )。