Linux的计划任务可以说是最常用也实用的系统程序了,Linux的计划任务设置也很简单,但稍有不注意就会出错。
如:使用ntpdate
命令每天凌晨自动对时,可能会这么写
00 00 * * * ntpdate asia.pool.ntp.org;
但这么写是出错的,你可能百思不得其解,在命令状态下执行看下结果
-bash-4.1# ntpdate asia.pool.ntp.org
25 Jul 14:00:21 ntpdate[5815]: step time server 212.26.18.43 offset 19.175301 sec
结果正常,但为何在crontab里却不执行呢?
其实在crontab里需要写命令的全路径,Linux是一个真正的基于文件的系统,所有的命令都以文件形式存储在磁盘里。
那如何查看命令的位置呢?
使用which命令
-bash-4.1# which ntpdate
/usr/sbin/ntpdate
使用which
命令我们得出ntpdate
命令的全路径是/usr/sbin/ntpdate
,我们把它加入crontab里
00 00 * * * /usr/sbin/ntpdate asia.pool.ntp.org;
保存后,即可实现每天零点对时了。
即使是你写成shell脚本,那么shell脚本里所有的命令都需要绝对路径。