linux 计划任务
计划任务主要做一些周期性的任务
目前主要用于备份数据
简介
一次性调度 at Schedule one-time tasks with at.
循环调度执行 cron Schedule recurring jobs with cron.
实例
一次性调度执行
语法 at
[root@BJcoud_computing_hp_hao ~]# at now +5min 5分钟之后
[root@BJcoud_computing_hp_hao ~]# at teatime tomorrow 下午茶 16:00
[root@BJcoud_computing_hp_hao ~]# at 5pm august 4 2020 2020年8月4日下午5点
[root@BJcoud_computing_hp_hao ~]# at 13:00 2020-12-12 2020年12月12日 13:00
例1
[root@BJcoud_computing_hp_hao ~]# at now +1min
at> useradd hao
at>
job 8 at Wed Feb 26 18:43:00 2020
查询 atq
[root@BJcoud_computing_hp_hao ~]# atq
3 Thu Feb 27 16:00:00 2020 a root
4 Thu Feb 27 16:00:00 2020 a root
5 Thu Feb 27 16:00:00 2020 a root
9 Wed Feb 26 18:48:00 2020 a root
循环调度执行
cron的概念和crontab是不可分割的。
crontab是一个命令,常见于Unix和Linux的操作系统之中
用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
查看crond 进程状态
[root@BJcoud_computing_hp_hao ~]# systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-02-26 17:46:02 CST; 1h 2min ago
Main PID: 1264 (crond)
CGroup: /system.slice/crond.service
└─1264 /usr/sbin/crond -n
Feb 26 17:46:02 localhost.localdomain systemd[1]: Started Command Scheduler.
Feb 26 17:46:02 localhost.localdomain crond[1264]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 16% if used.)
Feb 26 17:46:02 localhost.localdomain crond[1264]: (CRON) INFO (running with inotify support)
[root@BJcoud_computing_hp_hao ~]# ps aux | grep crond
root 1264 0.0 0.0 126292 1404 ? Ss 17:46 0:00 /usr/sbin/crond -n
root 72139 0.0 0.0 112716 960 pts/0 S+ 18:50 0:00 grep --color=auto crond
计划任务存储位置
[root@BJcoud_computing_hp_hao ~]# cd /var/spool/cron/
管理方式
创建计划
crontab -e Edit jobs for the current user
查询计划
crontab -l List the jobs for the current user
管理员可以使用 -u username, 去管理其他用户的计划任务
删除计划
crontab -r Remove all jobs for the current users.
案例
创建计划任务
格式 * * * * * command
*/5 * * * * /mysql_back.sh 每五分钟执行
0 2 1,4,6 * * /mysql_back.sh 每月的1,4,6日的2点整执行
0 2 5-9 * * /mysql_back.sh 每月5日到9日的两点整执行
* * * * * /mysql_back.sh 每分钟执行
0 * * * * /mysql_back.sh 每小时的0分执行
0 2 * * * /mysql_back.sh 每天两点整执行
0 2 14 * * /mysql_back.sh 每月14号的2点整执行
0 2 14 2 * /mysql_back.sh 2月14日2点整执行
0 2 * * 5 /mysql_back.sh 不写月日,仅周生效每月的周五,两点执行
0 2 2 6 5 /mysql_back.sh 书写月和日,月或日,月日周均生效
6月2日的两点整执行
6月的周五两点整执行
[root@BJcoud_computing_hp_hao ~]# crontab -e
进入编辑模式 输入要执行的任务
* * * * * ls /tmp
*/5 * * * * useradd maha
1 3 12 4 * ls /home
保存退出
查询计划任务
[root@BJcoud_computing_hp_hao ~]# crontab -l
* * * * * ls /tmp
*/5 * * * * useradd maha
1 3 12 4 * ls /home
删除计划任务
[root@BJcoud_computing_hp_hao ~]# crontab -r