Linux之crontab(计划任务)

作用

  • 每分钟需要执行一个程序去检查系统运行状态
  • 每天凌晨需要对过去的一天业务数据进行统计
  • 每个星期需要把日志文件备份(如果日志信息太多那么占用的磁盘空间就会越大,而且日志我们大多都是实时分析一周之内的日志信息,而超出一周的日志我们会将它进行备份)每天凌晨两三点钟进行备份
  • 每个月需要把数据库进行备份

单一次任务常用命令

  • at 定义计划任务
  • atq 查看计划任务
  • atrm 删除计划任务

周期性计划任务常用命令

#crontab -l 显示我的计划任务

#crontab -r 清除我的所有计划任务列表

周期性计划任务文件格式说明

          •           分     时    日    月    周(五个*号的作用)
                      
                            0-59  0-23 1-31 1-12 0-6
            

minute: 表示分钟,可以是从0到59之间的任何整数。*/1
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:
星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“
/1”表示每两小时执行一次。同 时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

配置单一次计划任务

每两分钟广播一次

[root@redhat ~]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> wall nihao!
at> <EOT>  //按ctrl+d退出
job 1 at Mon Aug 30 22:27:00 2021
                                                                               
Broadcast message from root@redhat (somewhere) (Mon Aug 30 22:27:43 2021):     
                                                                               
nihao!  //只执行一次

配置周期性计划任务

[root@redhat ~]# crontab -e

* * * * * wall 周期任务   //每分钟广播一次

在这里插入图片描述
删除的话 crontab -e再次进入删除信息即可

基于单用户添加脚本文件

添加一个脚本文件
脚本文件后缀一般为.sh
if判断用户是否存在

[root@redhat ~]# vim a.sh

id root
if [$? -eq 0 ];then
        echo "root用户存在"
else
        echo "root用户不存在"
fi

执行脚本文件

[root@redhat ~]# chmod a+x a.sh
[root@redhat ~]# ./a.sh  //从当前目录执行
uid=0(root) gid=0(root) groups=0(root)
./a.sh: line 2: [0: command not found
root用户不存在

基于系统级别添加任务信息

修改配置文件
[root@redhat ~]# vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

#For details see man 4 crontabs

#Example of job definition:
#.---------------- 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
#|  |  |  |  |
#*  *  *  *  * user-name  command to be executed
  *  *  *  *  * redhat /var/spool/cron/a.sh

重启服务

[root@redhat ~]# systemctl restart crond

crontab -e 是当前用户自定义的,只针对当前用户生效,/etc/crontab 是针对系统所有用户生效的

扩展计划任务

假设当你的计划任务应该在某个时间点执行,但由于一些因素(断电)没有执行那么这个计划任务还执不执行,什么时候执行?
会在开机以后会开机检查 计划任务哪些执行哪些没有执行,然后在指定时间内去执行

#vim /etc/anacrontab
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
(每一天开机以后5分钟去检查cron.daily这个脚本)
每个月

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个F啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值