admin 管理员组文章数量: 1086019
Linux计划任务
Linux计划任务-定时任务
- at单次计划任务
- at命令格式
- 查看at任务
- 取消at计划任务
- 创建1分钟后的单次任务
- 定时任务分类
- cron`系统任务调度`
- /etc/crontab文件格式
- 用户任务调度
- 安装crontab
- conrtab常用
- 添加计划任务
- 指定用户创建计划任务
- 查看用户的计划任务
- 计划任务日志存储目录
- 查看所有用户的计划任务
- 删除计划任务
- 查看计划任务日志
- 禁止任务发邮件
- 方法1: `&>/dev/null`
- 方法2:`MAILTO=""`
- 清空邮件
- 定时格式
- 多个时间计划任务
- 间隔时间计划任务
- 每分钟执行一次的任务
- 计划任务加锁
at单次计划任务
at
命令:使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。
# 安装at
yum install at -y# 开启atd服务
systemctl enable --now atd
对于其他用户
,是否执行某个命令或脚本取决于/etc/at.allow
at命令格式
# at命令:时间
# at>要运行的命令
[root@localhost ~]# at 11:32
at> ls
at> reboot
# 写完后CTrl+D 退出
at命令示例:
# 在22年6月8日上午10点执行slocate -u命令
at 10:00 6/8/22
at> socate -u
敲回车
查看at任务
# 显示用户待执行任务列表
[root@localhost ~]# atq
2 Fri Nov 5 08:08:00 2021 a root# 查看任务
[root@localhost ~]# at -l
3 Sun Aug 15 11:36:00 2021 a root# 查看指定编号的计划任务
## at -l 如果查看处有多条计划任务的话,用at -c 编号,即可查看信息
at -c 1
取消at计划任务
# 取消计划任务 atrm 编号
atrm 1# -r 清除作业--可能不兼容该命令
## -m 作业完成后给用户发邮件
at -rm 作业id# 查看计划任务是否已经删除
at -l
创建1分钟后的单次任务
at now + 1 min
> useradd tgb
# 写完后CTrl+D 退出
定时任务分类
Linux下的任务调度分为两类,系统任务调度
和用户任务调度
。
corn运行机制:
cron
会搜索 /var/spool/cron
目录,寻找以 /etc/passwd
文件中的用户名命名
的crontab文件
,然后将crontab文件
装入内存;cron
还将搜索/etc/crontab
文件,这个文件(cron时间表)
是以特定格式写成的cron启动以后,先检查是否有用户设置了crontab文件,如果没有就转入睡眠状态,释放系统资源;所以该后台进程占用资源极少,之后每分钟被换醒一次,查看当前是否有需要运行的命令。
cron系统任务调度
系统任务调度
: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
在/etc/crontab
文件,这个就是系统任务调度
的配置文件
。
cron
系统调度进程可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。
# 系统级别的crontab会记录在该文件下
cat /etc/crontab
/etc/crontab文件格式
/etc/crontab
文件包括下面几行:
# 前四行是用来配置crond任务运行的环境变量
## SHELL变量指定了系统要使用哪个shell,这里是bash
SHELL=/bin/bash
## PATH变量指定了系统执行命令的路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
## MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
MAILTO=""
## HOME变量指定了在执行命令或者脚本时使用的主目录
HOME=/# 任务部分
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
用户任务调度
用户任务调度
:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
用户
可以使用crontab
工具来定制自己的计划任务。
在crontab文件
都被保存在/var/spool/cron
目录中。其文件名
与用户名一致
。
# 该文件中所列用户不允许使用crontab命令
/etc/cron.deny# 该文件中所列用户允许使用crontab命令
/etc/cron.allow# 所有用户crontab文件存放的目录,以用户名命名
/var/spool/cron/
安装crontab
参考:
# yum安装crontab
yum install -y crontab# 开机自启crond服务并现在启动
systemctl enable --now crond
conrtab常用
.html
# 编辑该用户的计时器设置
crontab -e# 列出该用户的计时器设置;
crontab -l# 删除该用户的计时器设置;
crontab -r <用户名称># 指定要设定计时器的用户名称。
crontab -u <用户名称>
添加计划任务
字段 | 描述 |
---|---|
minute | 分钟(0 – 59) |
hour | 小时(0 – 23) |
day-of-month | 一个月的第几天(1 – 31) |
month-of-year | 一年的第几个月(1 – 12) |
day-of-week | 一周的星期几(0 – 6),0 代表周日 |
commands | 需要执行的命令 |
# 每周一上午 8:00 执行命令
00 08 * * 1 commands
参数 | 描述 |
---|---|
* | 代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作 |
/ | 可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。 |
- | 可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” |
, | 可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” |
# 配置计划任务
crontab -e# 配置规则
分 时 日 月 星期 (绝对路径)命令
# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null# 查看计划任务
crontab -l
示例
# 例:晚上11点到早上8点之间每两个小时,在/tmp/test.txt文件中加入sleepy文本
* 23-8/2 * * * echo"sleepy" >> /tmp/test.txt
指定用户创建计划任务
# 指定用户创建计划任务
## -e 编辑crontab文件
## -u 用户名
crontab -e -u natasha
查看用户的计划任务
# 查看用户创建计划任务
## -u 用户名
## -l 列出crontab文件中的内容
crontab -u natasha -l
计划任务日志存储目录
/var/log/cron
目录记录了Linux下所有用户
的计划任务信息
,以crontab -u -e
方式写入的计划任务都会在此目录下生成文件
# 查看计划任务
cat /var/log/cron
查看所有用户的计划任务
# 查看所有用户的计划任务
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}
删除计划任务
## -r 删除crontab文件
查看计划任务日志
# 查看系统计划任务日志
tail --f /var/log/cron# 使用关键字过滤计划任务日志
grep "alidata" /var/log/cron
禁止任务发邮件
计划任务每执行一次,就会发送一封邮件给管理员。
# 发送邮件给指定用户
MAILTO="raj"
方法1: &>/dev/null
# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null## 5个*表示每分钟执行一次
## &>/dev/null表示禁止发邮件
* * * * * rsync -av --delete 10.0.0.8:/data/www/ /data/backup &>/dev/null
方法2:MAILTO=""
# 在任务的第一行指定邮件地址为空即可
MAILTO=""
清空邮件
# 清空收件箱
cat /dev/null > /var/spool/mail/root
定时格式
计划任务格式在线生成
/
多个时间计划任务
# 配置示例--2点半,3点半,4点半执行任务
## 2点30分执行一次任务
## 3点30分执行一次任务
## 4点30分执行一次任务
30 2-4 * * * 命令# 分钟间隔段执行命令
## 2点15分执行一次计划任务
## 2点30分执行一次计划任务
## 2点50分执行一次计划任务
15,30,50 2 * * * 命令# 指定星期6的2:15,2:30,2:50执行计划任务
15,30,50 2 * * 6 命令
间隔时间计划任务
*/表示每隔多长时间执行任务
参考: .html
# 每间隔两小时的30分时执行一次计划任务 */2
## 分 时 日 月 星期 (绝对路径)命令
30 */2 * * * 命令# 每间隔2分钟执行一次任务
## 分 时 日 月 星期 (绝对路径)命令
*/2 * * * * 命令# 每周日23点0分自动清理日志
0 23 * * */0 echo " " > /alidata/tunnel.log
每分钟执行一次的任务
# 5个*表示每分钟执行
## &>/dev/null表示禁止发邮件
* * * * * rsync -av 10.0.0.8:/data/www /data/backip &>/dev/null
计划任务加锁
延时任务
:- 例如重启时任务无法运行。
flok锁
:- 例如一个备份没完成,又一个备份开始
本文标签: Linux计划任务
版权声明:本文标题:Linux计划任务 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686732013a30522.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论