Linux任务计划、周期性任务执行

目录

电子邮件服务

一、一次任务

1.at

2.batch

二、周期性任务计划:cron

1.相关的程序包

2.系统cron任务

3.用户cron

练习

回顾

参考资料

      未来的某时间点执行一次任务:at, batch

      周期性运行某任务:cron

电子邮件服务

      SMTP:simple mail transmission protocol, 用于传送邮件

      POP3:Post Office Protocol

      IMAP4:Internet Mail Access Protocol

MUA:Mail User Agent

      mailx - send and receive Internet mail   

            mailx [-s 'SUBJECT'] username[@hostname]

                  邮件正文的生成:

                       ①直接给出,Ctrl+d

                       ②输入重定向

                       ③通过管道

                             echo -e "How are you?\nHow old are you?" | mail

            mailx

一、一次任务

1.at

      at [option] TIME

                  TIME:

                       HH:MM [YYYY-mm-dd]

                       noon, midnight, teatime

                       tomorrow

                       now+#{minutes,hours,days, OR weeks}

                  常用选项:

                       -q QUEUE

                       -l:列出指定队列中等待运行的作业;相当于atq

                       -d:删除指定的作业;相当于atrm

                       -c:查看具体作业任务

                       -f /path/from/somefile:从指定的文件中读取任务

P.S. 作业的执行结果以邮件通知给相关用户

2.batch

      让系统自行选择空闲时间去执行此处指定的任务

二、周期性任务计划:cron

1.相关的程序包

            cronie主程序包,提供了crond守护进程及相关辅助工具

cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

            crontabs包含CentOS提供系统维护任务

                  如何确保crond守护处于运行状态

                       CentOS 7:

                             systemctl status crond

                                   ...running...

                       CentOS 6:

                             service crond status

            计划要周期性执行的任务提交给crond,由其来实现到点运行

                  系统cron任务:系统维护作业

                       /etc/crontab

                  用户cron任务:

                       crontab命令

2.系统cron任务

      例如:晚上9点10分运行echo命令;

            10 21 * * *   gentoo /bin/echo "Howdy!"

P.S. 此处命令最好使用绝对路径

            时间表示法:

①特定值;

                                   给定时间点有效取值范围内的值

②*

                                   给定时间点上有效取值范围内的所有值

                                   表示“每...”;

③离散取值:,

                                   #,#,#

④连续取值:-

                                   #-#

在指定时间范围上,定义步长:

                                   /#:#即为步长

例如:每3小时echo命令;

0 */3 * * * gentoo /bin/echo "howdy!"

3.用户cron

crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

      crontab命令:

            crontab [-u user] [-l | -r | -e] [-i]

                  -l:列出所有任务

                  -e:编辑任务

                  -r:移除所有任务

                  -i:同-r一同使用,以交互式模式让用户有选择地移除指定任务

-u user:仅root可运行,代为为指定用户管理cron任务

P.S. 运行结果以邮件通知给相关用户

            ① COMMAND > /dev/null

            ②COMMAND &> /dev/null

对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义

思考:

如何在秒级别运行任务?

                  * * * * * for min in 0 1 2; do echo "hi"; sleep 20; done

如何实现每7分钟运行一次任务?

sleep命令:

                  sleep NUMBER[SUFFIX]...

                                   SUFFIX:

                                         s:秒, 默认

                                         m:分

                                         h:小时

                                         d:天

练习

①每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz”

#vim backup.sh

#!/bin/bash

#

t=`date +%F-%H`

mkdir -p /backup/etc-"$t"

cp -r /etc  /backup/etc-"$t"

tar  -c -f /backup/etc-"$t".tar  /backup/etc-"$t"

xz /backup/etc-"$t".tar

rm -rf /backup/etc-$t

#crontab -e

0 */4 *  *  * /bin/bash /myshell/backup.sh

P.S. root 编辑/etc/crontab时需要指定user-name ,而直接使用crontab命令时不需要指定user-name

②每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

15 * * * 2,4,7  /usr/bin/cp -r /var/log/messenges /logs/messages-$(date +\%Y\%m\%d)

crontab里面 %有特殊含义,代表换行,$(date '+\%Y\%m\%d')  要用\转义

③每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

30  */2 * * *  /usr/bin/grep "^[SM]" /proc/meminfo  >>/tmp/meminfo.txt

④工作日时间内,每小执行一次“ip addr show”命令

0 */1 * * 1-5  /usr/sbin/ip addr show

回顾

      任务计划:

            一次性执行某任务:at, batch

            周期性执行某任务:crond --> anacron

                  * * * * * COMMAND

参考资料:

马哥随堂笔记

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值