在系统的工作管理中,我们经常会有需要去告诉电脑某些特定的时间执行一些操作,比如定时提醒工作人员需要做什么事情,或者在每天凌晨进行文件备份等等。这就需要某些命令来达成计划任务。
计划任务可以大体上分成两类:1、定时性的,每隔一定的周期就做同样的事情;
2、突发性的,只执行这一次就不再执行。在Linux系统中分别用crontab和at 两个命令来进行这两个操作。
at一次性计划任务使用
at语法格式:at 时间
1. 下载at程序
[root@ken ~]# yum install at -y
2. 启动atd服务
[root@ken ~]# systemctl restart atd
[root@ken ~]# ps aux | grep atd
root 1166 0.0 0.1 25904 944 ? Ss 17:52 0:00 /usr/sbin/at -f
root 1168 0.0 0.1 112704 956 pts/0 S+ 17:52 0:00 grep --color=auto atd
3. 设置at计划任务
[root@ken ~]# at 10:00 #如果是上午时间,后面加上am,比如9:20am
at> touch /tmp/test1 #输入你要执行的命令
at> <EOT> #按ctrl+d保存
job 1 at Fri Mar 1 10:00:00 2019
[root@ken ~]# at -l #查看计划任务
1 Fri Mar 1 10:00:00 2019 a root
[root@ken ~]# atq #查看计划任务
1 Fri Mar 1 10:00:00 2019 a root
4. 删除计划任务atrm
[root@ken ~]# at -l #第一步查看计划任务,获取前面编号
1 Fri Mar 1 10:00:00 2019 a root
[root@ken ~]# atrm 1 #删除计划任务加上编号
[root@ken ~]# at -l #再次查看计划任务发现已经删除
5. at计划任务的特殊写法
[root@ken ~]# at 20:00 2018-10-1 在某天
[root@ken ~]# at now +10min 在 10分钟后执行
[root@ken ~]# at 17:00 tomorrow 明天下午5点执行
[root@ken ~]# at 6:00 pm +3 days 在3天以后的下午6点执行
crontab定时任务的使用
语法:#crontab -u -e
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
1. 查看进程是否启动
[root@ken ~]# ps aux | grep crond
root 621 0.0 0.3 126284 1600 ? Ss 17:46 0:00 /usr/sbin/crond -n
root 1194 0.0 0.1 112704 956 pts/0 S+ 18:05 0:00 grep --color=auto crond
2. 查看计划任务
[root@ken ~]# crontab -l
no crontab for root
3. 编写计划任务
计划任务的规则语法格式,以行为单位,一行为一个计划:
分 时 日 月 周 需要执行的命令
执行的命令建议写成绝对路径的格式!
例如:如果想要每天的0点0分执行reboot指令,则可以写成
0 0 * * * reboot
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6