当前位置:   article > 正文

Linux计划任务-定时任务_linux定时任务

linux定时任务

at单次计划任务

at命令:使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。

# 安装at
yum install at -y

# 开启atd服务
systemctl enable --now atd
  • 1
  • 2
  • 3
  • 4
  • 5

对于其他用户,是否执行某个命令或脚本取决于/etc/at.allow


at命令格式

# at命令:时间 
# at>要运行的命令
[root@localhost ~]# at 11:32
at> ls
at> reboot
# 写完后CTrl+D 退出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

at命令示例:

# 在22年6月8日上午10点执行slocate -u命令
at 10:00 6/8/22
at> socate -u
敲回车
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述


查看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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

取消at计划任务

# 取消计划任务 atrm 编号
atrm 1

# -r 清除作业--可能不兼容该命令
## -m 作业完成后给用户发邮件
at -rm 作业id

# 查看计划任务是否已经删除
at -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

创建1分钟后的单次任务

at now + 1 min
> useradd tgb
# 写完后CTrl+D 退出
  • 1
  • 2
  • 3

定时任务分类

Linux下的任务调度分为两类,系统任务调度用户任务调度

corn运行机制:
cron 会搜索 /var/spool/cron 目录,寻找以 /etc/passwd 文件中的用户名命名crontab文件,然后将crontab文件装入内存;
cron 还将搜索/etc/crontab文件,这个文件(cron时间表)是以特定格式写成的cron启动以后,先检查是否有用户设置了crontab文件,如果没有就转入睡眠状态,释放系统资源;所以该后台进程占用资源极少,之后每分钟被换醒一次,查看当前是否有需要运行的命令。


安装crontab

参考: https://blog.51cto.com/u_15175006/2720985

# yum安装crontab
yum install -y crontab

# 开机自启crond服务并现在启动
systemctl enable --now crond
  • 1
  • 2
  • 3
  • 4
  • 5

cron系统任务调度

系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
/etc/crontab文件,这个就是系统任务调度配置文件

cron系统调度进程可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。

# 系统级别的crontab会记录在该文件下
cat /etc/crontab
  • 1
  • 2

在这里插入图片描述


/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

用户任务调度

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
用户可以使用crontab工具来定制自己的计划任务。
crontab文件都被保存在/var/spool/cron目录中。其文件名用户名一致

# 所有用户crontab文件存放的目录,以用户名命名
/var/spool/cron/
  • 1
  • 2

cron黑名单和白名单

# 该文件中所列用户不允许使用crontab命令
/etc/cron.deny

# 该文件中所列用户允许使用crontab命令
/etc/cron.allow
  • 1
  • 2
  • 3
  • 4
  • 5

conrtab常用

https://wangchujiang.com/linux-command/c/crontab.html

# 编辑该用户的计时器设置
crontab -e

# 列出该用户的计时器设置;
crontab -l

# 删除该用户的计时器设置;
crontab  -r <用户名称>

# 指定要设定计时器的用户名称。
crontab  -u <用户名称>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述


Cron表达式的组成

计划任务格式在线生成
https://crontab.guru/
crontab在线工具
https://tooltt.com/crontab/c/34.html

是一组时间序列,一个由6个空格7个域组成的字符串,排序如下:
[秒] [分] [时] [日] [月] [周] [年]

在这里插入图片描述

在这里插入图片描述

minute(分)hour(时)day-of-month(日)month-of-year(月)day-of-week(周)commands(任务命令)
分钟(0 – 59)小时(0 – 23)一个月的第几天(1 – 31)一年的第几个月(1 – 12)一周的星期几(0 – 6),0 代表周日需要执行的命令
参数描述
*代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
/可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
-可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
,可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

示例:

# 每周一上午 8:00 执行命令 
00 08 * * 1 commands

# 每天凌晨2点重启系统
0 2 * * * /sbin/shutdown -r now
  • 1
  • 2
  • 3
  • 4
  • 5

添加计划任务

# 配置计划任务
crontab -e

# 配置规则
分 时 日 月 星期 (绝对路径)命令
# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null

# 查看计划任务
crontab -l
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

示例

# 例:晚上11点到早上8点之间每两个小时,在/tmp/test.txt文件中加入sleepy文本
* 23-8/2 * * * echo"sleepy" >> /tmp/test.txt
  • 1
  • 2

指定用户创建计划任务

# 指定用户创建计划任务
## -e 编辑crontab文件
## -u 用户名
crontab -e -u natasha
  • 1
  • 2
  • 3
  • 4

查看用户的计划任务

# 查看用户创建计划任务
## -u 用户名
## -l 列出crontab文件中的内容
crontab -u natasha -l
  • 1
  • 2
  • 3
  • 4

查看所有用户的计划任务

# 查看所有用户的计划任务
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}
  • 1
  • 2

删除计划任务

## -r 删除crontab文件
  • 1

查看计划任务日志

查看定时任务的日志
设定了定时任务,想知道在指定时间是否执行了任务,以及任务的执行结果。
/var/log/cron目录记录了Linux下所有用户计划任务信息,以crontab -u -e方式写入的计划任务都会在此目录下生成文件

# 查看系统计划任务日志
tail --f /var/log/cron

# 使用关键字过滤计划任务日志
grep "alidata" /var/log/cron
  • 1
  • 2
  • 3
  • 4
  • 5

示例:

# 设置计划任务
crontab -e
  • 1
  • 2

编辑定时任务详情

# 禁止发送邮件
MAILTO=""

# 设置每天凌晨 2 点重启系统
0 2 * * * /sbin/shutdown -r now &>/dev/null
  • 1
  • 2
  • 3
  • 4
  • 5

查看定时任务

# 查看当前用户的 Crontab 设置
crontab -l

# 查看计划任务中的重启执行记录
grep "shutdown -r now" /var/log/cron
  • 1
  • 2
  • 3
  • 4
  • 5

禁止任务发邮件

计划任务每执行一次,就会发送一封邮件给管理员。

# 发送邮件给指定用户
MAILTO="raj"
  • 1
  • 2

方法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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述


方法2: MAILTO=""

# 在任务的第一行指定邮件地址为空即可
MAILTO=""
  • 1
  • 2

在这里插入图片描述


清空邮件

# 清空收件箱
cat /dev/null > /var/spool/mail/root
  • 1
  • 2

定时格式

计划任务格式在线生成
https://crontab.guru/

在这里插入图片描述


多个时间计划任务

# 配置示例--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 命令
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

间隔时间计划任务

*/表示每隔多长时间执行任务

参考: https://www.runoob.com/w3cnote/linux-crontab-tasks.html

# 每间隔两小时的30分时执行一次计划任务 */2
## 分 时 日 月 星期 (绝对路径)命令
30 */2 * * * 命令

# 每周日23点0分自动清理日志
0 23 * * */0 echo " " > /alidata/tunnel.log
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

每分钟执行一次的任务

# 5个*表示每分钟执行
## &>/dev/null表示禁止发邮件
* * * * * rsync -av 10.0.0.8:/data/www /data/backip &>/dev/null
  • 1
  • 2
  • 3

在这里插入图片描述


每2分钟执行一次任务

# 每间隔2分钟执行一次任务
## 分 时 日 月 星期 (绝对路径)命令
*/2 * * * * 命令
  • 1
  • 2
  • 3

计划任务加锁

  • 延时任务
    • 例如重启时任务无法运行。
  • flok锁
    • 例如一个备份没完成,又一个备份开始

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1003120
推荐阅读
相关标签
  

闽ICP备14008679号