BG:实验室集群需要NTP时间同步,NTP服务器装好了,可是计划任务运行不了,师兄顺道把任务给我,让我去研究下计划任务。
Linux内置一个用于用户执行周期性任务的常驻线程,叫cron,在终端键入“ps -ef|grep cron”查看。
cron会在三个地方查找配置文件:
1. /var/spool/cron/,这个目录存放以用户(包括root)命名的crontab任务文件,比方root文件。
2. /etc/crontab,这个文件由系统管理员维护,存放需要root权限执行的crontab任务。
3. /etc/ron.d/,这个目录存放任何需要周期性执行crontab文件或脚本。
cron服务可以在无需人工干预的情况下运行作业,常用命令有:
1. /sbin/service crond start
//启动服务
2. /sbin/service crond stop
//关闭服务
3. /sbin/service crond restart
//重启服务
4. /sbin/service crond reload
//重新载入配置
5. /sbin/service crond status
//查看服务状态
crontab文件中该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间(周期),最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要执行的脚本)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
几个例子:
每天早上6点执行
0 6 * * * echo "Good morning." >> /tmp/test.txt
每2个小时执行
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11点到早上8点之间每2个小时和早上8点执行
0 23-8/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
每个月的4号和每周一到周三的早上11点执行
0 11 4 * 1-3 command line //注意:但命令为用户命令时,比方说ntp服务,则最好使用绝对路径
NTP服务客户端定时任务命令(每5分钟同步一次):
*/5 * * *
* ntpdate -u 192.168.X.X(NTP服务器所在,可以是域名,机器名,或IP)
每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly
注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。
PS:参考网上教程,出处不明。