定时任务软件种类

  1. at:适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。

  2. crontab:需要启动一个服务crond才行,crond服务通过crontab命令实现。

  3. anacron:无法周期性执行,只能以天为周期,但有个特点,在关机状态下未>执行的任务,下次开机时可以补上执行。

crond 与crontab的区别

crond:crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。安装完成系统后,默认就会开机自启动此任务调度命令crond命令会定期每分钟检查是否有要执行的工作,如果有便自动执行该工作。

crontab:是用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取与执行,其使用者的权限记载在以下两个文件中:

/etc/cron.deny :不允许使用crontab命令的用户。
/etc/cron.allow :允许使用crontab命令的用户。
/var/spool/cron :所有用户的crontab命令存放位置。

crontab

crontab支持两种状态:
1. 直接编写计划任务;
2. 使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定。

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度:

(1)系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:
Linux下的crond和crontab

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录 。

(2)用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

crontab的用法

crontab命令格式:
crontab (-u username)/-l/-r/-e/-i file
-u username:可以编辑其他人的crontab文件。
-l :可以列出用户的crontab的内容。
-r :从crontab目录中删除用户的crontab文件。
-e :编辑用户的crontab文件默认进入vi。
-i :提示删除用户的crontab文件。

比如说root查看自己的cron设置:crontab -u root -l。

再例如,root想删除fred的cron设置:crontab -u fred -r。

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e。

进入vi编辑模式,编辑的内容一定要符合下面的格式:/1 * * * ls >> /tmp/ls.txt。

编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。

需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上 service crond start,如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。

比如: service mysqld start。

时间表的格式

在以上各个字段中,还可以使用以下特殊字符:

1.星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
2.逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
3.中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
4.正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

用法示例:

每五分钟执行 /5 * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *

例如:
1. 0 */5 * * * /sbin/service httpd restart
意思是每两个小时重启一次apache。
2. 0 * * * * /bin/Is
每月每天每小时的第0分钟执行一次/bin/Is。
3. */20 6-12 * 12 * /usr/bin/backup
在12月内,每天早上6点-12点,每个20分钟执行一次 /usr/bin/backup
4. 0 11 4 * mon-wed date
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

crontab服务

服务操作说明:

  1. /sbin/service crond start //启动服务
  2. /sbin/service crond stop //关闭服务
  3. /sbin/service crond restart //重启服务
  4. /sbin/service crond reload //重新载入配置
  5. service crond status //查看服务状态
  6. service crond start //手动启动服务
  7. ntsysv //查看crontab服务是否已设置为开机启动,执行命令
  8. chkconfig –level 35 crond on //加入开机自动启动

查看crontab运行日志:
看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察。

相关文章:

  • 2021-09-06
  • 2021-11-10
  • 2021-04-09
  • 2021-10-28
  • 2022-12-23
  • 2022-01-03
  • 2022-01-21
  • 2021-04-12
猜你喜欢
  • 2022-01-06
  • 2021-07-18
  • 2021-05-16
  • 2021-12-20
  • 2021-04-19
  • 2021-05-12
相关资源
相似解决方案