Linux计划任务cron

时间:2021-03-11 14:25:22

一.关于crond

  1. crond的作用
    crond是Linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有 要执行的工作便会自动执行该工作。而Linux任务调度的工作主要分为以下两类:

    • 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

    • 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是 否有新信,这些工作可由每个用户自行设置

  2. 服务的启动和停止

cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

命令 描述
/sbin/service crond start 启动
/sbin/service crond stop 停止
/sbin/service crond restart 重启服务
/sbin/service crond reload 重新加载配置

要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。

二.关于crontab

crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

命令 描述
crontab -l 查看当前用户的cron配置
crontab -e 编辑当前用户的cron配置
crontab -r 删除当前用户的cron配置
crontab -u 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -u root -l root查看自己的cron设置
crontab -u fred -r root想删除fred的cron设置
crontab -u root -e 在编辑cron服务时,编辑的内容有一些格式和约定
crontab -l 列出当前的crontab任务
crontab -d 删除当前的crontab任务
crontab -e (solaris5.8上面是 crontab -r) 编辑一个crontab任务,ctrl_D结束
crontab filename 以filename做为crontab的任务列表文件并载入
  • 示例
    以下是两个cron语句的例子(在 /etc/crontab 文件里)。

    • 12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
      //用来晚间备份 /etc 目录
    • 52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1
      //运行Analog程序处理服务器的统计信息
  • 以下是cron语句中的字段与字段说明:

字段 1 2 3 4 5 6
说明 分钟(0-59) 小时(2-24) 日期(1-31) 月份(1-12;或英文缩写Jan、Feb等) 周几(0-6,0为周日;或单词缩写Sun、Mon等) 用户名(执行命令时以此用户的身份)

第 6 个字段是一个要在适当时间执行的字符串
- 实例:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date (solaris 5.8似乎不支持此种写法)
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/28 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date

三.测试代码

  • 启动crond
/sbin/service crond start //若提示没有权限可加上sudo

Linux计划任务cron

  • 查看当前用户的cron配置并且编辑当前用户的cron配置
crontab -l
crontab -e

//然后输入以下命令
*/1 * * * * ~/run.sh //每隔一分钟向shell发一封邮件

输入crontab -l命令,每隔一分钟输入一次,则会出现以下现象;


结果图:
Linux计划任务cron


删除当前用户的cron配置

Linux计划任务cron