crontab计划任务

1.at命令

      at 命令是用来执行一次性任务,比如要在二十分钟后重启,要在 2 分钟后启动一个可执行程序,或者在一天后执行一个脚本。适合应对突发性和临时性的任务。
查看服务是否运行:

systemctl status atd

at命令:

at [options]  [TIME]
	options:
		-V:查看当前版本号
		-m:当任务完成时给用户发送邮件
		-M:当任务完成时不发送邮件
		-f:从文件中读取任务
		-l:列出所有任务,Is an alias for atq,同atq命令。
		-d num:删除num号定时任务,Is an alias for atrm,同atrm命令
		-c num:查看num号定时任务
		
	TIME:设定定时任务时间
		HH:MM 如: at 02:30
		HH:MM YYYY-MM-DD 如:at 8:00 2020-01-01
		now + 时间:比如在十分钟后:at now + 10 min,在一天后:at now + 1 day
		特殊时间:midnight, noon, or teatime

实例演示:
1.添加定时任务

~]# at 10:00
> ls /tmp
> <EOT>             #ctrl+d结束

~]# at now+10min
> ls /tmp

~# at now+10  -f /tmp/file
~]# cat /tmp/file
echo "hello world."

2.查看定时任务

~]# at -l
1     Thu Oct 25 11:00:00 2018 a root
2     Thu Oct 25 10:58:00 2018 a root
3     Thu Oct 25 10:58:00 2018 a root
~]# atq
1     Thu Oct 25 11:00:00 2018 a root
2     Thu Oct 25 10:58:00 2018 a root
3     Thu Oct 25 10:58:00 2018 a root

3.查看定时任务内容

~]# at -c 1
...
ls /tmp

4.删除计划任务

~]# at -d 1
~]# at -l
2     Thu Oct 25 10:58:00 2018 a root
3     Thu Oct 25 10:58:00 2018 a root

总结:
      at 是一个一次性定时的命令,守护进程 atd 为它提供服务。如果需要周期性定时任务,需要使用 crontab 命令。

2.crontab命令

      crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

查看crond是否启动:

systemctl status crond          #centos7
service crond status		 #centos6

cron任务分为两类:

系统cron任务:主要用于实现系统自身的维护
	手动编辑:/etc/crontab 文件
用户cron任务:
	crontab命令

系统cron任务配置:/etc/crontab

~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

用户cron任务:/var/spool/cron/USERNAME
      /var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

crontab命令:

crontab [-u user] [options]
	-e:创建定时任务
	-l:列出所有任务
	-r:移除所有任务,即删除/var/spool/cron/USERNAME
	-i:在使用-r选项移除所有任务时提醒用户确认
	-u user:root用户可为指定用户管理cron任务。

文件格式:

minute: 表示分钟,可以是从0到59之间的任何整数。
hour   	:表示小时,可以是从0到23之间的任何整数。
day		:表示日期,可以是从1到31之间的任何整数。
month	:表示月份,可以是从1到12之间的任何整数。
week	:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command :要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

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

在这里插入图片描述

注:
1.运行结果以邮件通知当前用户,如果拒绝接受邮件
      (1) COMMAND >/dev/null
      (2) COMMAND &> /dev/null
2.某任务在指定的时间因关机未能执行,下次开机将不会执行该任务,如果期望某时间因故未能按时执行,下次开机后无论是否到来相应时间点do偶要执行一次,可使用anacron实现。

实例演示:

1.在每周一、二、三的凌晨3点25分,都需要使用tar命令把某个数据目录进行打包处理,使其作为一个备份文件。
25 	3	 *	 *	 1,2,3  /usr/bin/tar -xzvf backup.tar.gz /work
25 	3    *   *   1-3    /usr/bin/tar -xzvf backup.tar.gz /work

2.每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]
*/15   *   *   *   *   /usr/bin/ls        

注:分的设置不要为*,执行命令路径要用绝对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值