linux下使用crontab修改库表的疑惑

  我的用法是这样的:

  1. 用yz用户登录。

  2. 用crontab -e 命令打开文件。写入“0 1 * * * chg_date >/home/yz/yz.log”意思是在每天早上的1点,调用程序chg_date修改系统日期,将程序中的输出放入yz.log文件。

  3.用":x"命令存盘退出

  根据我的了解“当对 crontab 所做的改变被保存后,该crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个crontab 文件改变后就不必重新启动守护进程了。”于是很懒就没有测试。第二天上班查看库表,居然还是昨天的日期。

  这次查到新的命令:“/etc/rc.d/init.d/crond restart” ,可用来重启cron服务 。于是乖乖修改了crontab文件,将时间改为每2分钟后。等了一会儿,再查看库表,还是没有变动。

  偶已经没有耐心了,于是在办公室里开始用大嗓门问人:"#@*#……@?”这次连同事都很惊奇,“改了crontab就可以用了,不要重新启的。”三个臭皮匠顶个诸葛亮,最后,Monitor提供了一个解决办法,既然在yz用户下建立crontab文件没有用,那么干脆在root用户下建好了。

  于是,偶重新用root用户登录,用crontab -e 写道:“*/2 * * * * (su - yz -c chg_date 2>>/home/yz/yz.log)”。等了几分钟,看库表,日期还是没有变。真是有些沮丧了。抱着试试看的心情又把“/etc/rc.d/init.d/crond restart ”敲了一遍。几分钟后,偶终于看到日期变掉了。

  问题解决,疑问还在心中:

  1、为什么在yz用户下建立crontab没有用?我已经看到/var/spool/cron/yz文件了。

  2、为什么一定要重起cron服务?明明很多同事在linux下,用crontab -e 追加完命令就可以用了。