Linux~~~计划任务-2020.12.3

计划任务

作用: 计划任务主要是做一些周期性的任务,
目前最主要的用途是定期备份数据。
分类:一次性调度执行 at(Schedule one-time tasks with at. )
循环调度执行 cron(Schedule recurring jobs with cron. )

一次性调度执行at

语法格式

语法格式: at
now +5min -->五分钟后
teatime tomorrow (teatime is 16:00) -->下午时间
noon +4 days --> 第四天中午
5pm august 3 2020 -->2020年8月3日下午5点
4:00 2019-11-27 --> 某年某月某日某时

举例:
设置一个定时创建用户的任务
[root@localhost ~]# at  now   +1min
at> useradd uuuu 
at> <EOT>                 CTRL+D输入完毕,提交任务
job 1 at Sat Mar 21 22:34:00 2019
查询任务
[root@localhost ~]# atq
1       Thu Dec  3 19:59:00 2020 a root
验证结果

查出用户信息即可

[root@localhost ~]# id user01
uid=1001(user01) gid=1001(user01)=1001(user01)
报错

在这里插入图片描述

循环调度执行cron

简介

cron的概念和crontab是不可分割的。
crontab是一个命令,常见于Unix和Linux的操作系统之中
用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。

查看进程状态

crond程序运行是计划任务执行的根本

[root@localhost ~]# systemctl status crond.service -->显示运行(running)状态即可
[root@localhost ~]# ps aux | grep crond
root        732  0.0  0.0 126292  1620 ?        Ss   19:41   0:00 /usr/sbin/crond -n
管理方式

创建计划:“crontab -e” Edit jobs for the current user
查询计划:“crontab -l” List the jobs for the current user
管理员可以使用 su username, 去管理其他用户的计划任务
删除计划:“crontab -r” Remove all jobs for the current users.

注意:只要删除某个 crontab的工作项目,使用 crontab -e 来重新编辑即可,使用crontab -r 的参数,是会将所有的 crontab 数据内容都删除掉的有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按,否则你将丢失crontab文件。

计划任务存储位置

空的说明没有任务

[root@localhost ~]# ls /var/spool/cron
[root@localhost ~]# 
语法格式JOB format

分 时 日 月 周 命令或脚本程序
六个部分用空格隔开

.---------------- 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
| | | | |
.* * * * * command(忽略.)

示例

0 * * * * /mysql_back.sh --> 每小时的0分执行
/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 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月的周五两点整执行

00 02 * * * ls --> 每天2:00整
00 02 1 * * ls --> 每月1号2:00整
00 02 14 2 * ls --> 每年2月14号2:00整
00 02 * * 7 ls --> 每周日2:00整
00 02 * 6 5 ls --> 每年6月的周五2:00整 (特殊)
00 02 14 * 7 ls --> 每月14号2:00整 ;每周日2:00整 ;这两个时间都执行
00 02 14 2 7 ls --> 每年2月14号2:00整 ; 2月每周日2:00整;这两个时间都执行

晚上11点到早上7点之间,每隔一小时重启smb
命令: * 23-7/1 * * * /etc/init.d/smb restart

每月的4号与每周一到周三的11点重启smb
命令: 0 11 4 * mon-wed /etc/init.d/smb restart

实例

目的:每个一分钟执行创建文件的计划任务
步骤:
1、准备创建脚本文件

[root@localhost ~]# vim /root/1.sh
/usr/bin/touch   /root/`date +%F-%H-%M-%S`.txt   -->注意引号位置:1 左边 tab上方
#chmod +x   /root/1.sh

2、编写任务计划

[root@localhost ~]# crontab -e
52 20 03 12 * /root/1.sh

3、查看创建结果

[root@localhost ~]# ll 
总用量 4
-rwxr-xr-x  1 root root  46 12月  3 20:50 1.sh
-rw-r--r--  1 root root   0 12月  3 20:52 2020-12-03-20-52-01.txt
-rw-r--r--  1 root root   0 12月  3 20:50 date +%F-%H-%M-%S.txt   -->此处引号用错,无法正常同步时间
drwxr-xr-x. 2 root root 226 12月  3 19:09 yum.repos.d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值