一、简述

    计划任务,是系统自动完成工作的一种实现,通过crontab(计划任务控制)实现,通过计划任务可以定时执行系统管理员需要重复或定时完成的任务。

    cron是计划任务的称呼,crond是后台进程,而crontab则是定制好的计划任务表。



二、使用

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

    周期性运行某任务:cron



    1.at/batch命令

        在指定的时间执行命令。



        1.1)命令及格式
at/batch [选项] -t time
# 常用选项
 -q queue:
    -l:列出指定队列中等待运行的作业,相当于atq
    -d:删除指定的作业,相当于atrm
    -c:查看具体作业任务
    -f /path/from/somefile:从指定的文件中获取任务
time格式
HH:MM[YYYY-mm-dd]:指定在一天的某个时间运行一个作业(如果设定的时间在当天已经过去,则假定为第二天时间)
noon 中午
midnight 午夜
teatime 下午4点
tomorrow 明天
now+#(minutes,hours,days,weeks)

        注:让系统自行选择空闲时间去执行此处指定的任务(一般是当平均负载降到低于0.8,或降到了在trun文件中指定的期望值时运行)



        1.2)案例
# 要在三天以后的下午4点运行一个作业?
  at时间参数可以指定为 4pm+3days。
# 要在7月31日上午10:00运行一个作业?
  at时间参数可以指定为 10am Jul 31
# 要在明天上午1点运行一个作业?
  at时间参数可以指定为 1am tomorrow。

        注:作业的执行结果以邮件通知给相关用户



    2.cron

        周期性任务计划

相关程序包

功用

cronie

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

cronie-anacron

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

crontabs

包含CentOS提供系统维护任务

    守护程序运行状态查看

# CentOS 7
[root@wybaron_host1015 ~]# systemctl status crond.service



        2.1)系统cron任务

        系统维护作业,/etc/crontab中创建。

        A)格式

[root@wybaron_host1015 ~]# cat /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

# 时间表示法
  特定值:给定时间点有效取值范围内的值。
  * :给定时间点上有效取值范围内的所有值,表示“每...”
  离散取值(“,”分隔):#,#,#
  连续取值(“-”联系):#-#
  在指定时间范围上,定义步长(“/”):/# ,#即为步长

        B)案例

# 1.晚上10点5分运行echo命令?
    5 22 * * * wybaron /usr/bin/echo "Linux"
# 2.每6小时运行一次echo命令?
    0 */6 * * * wybaron /usr/bin/echo "Linux"



        2.2)用户cron任务

        crontab命令创建、定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME,用户cron任务可以不使用用户名来定义(直接接上命令即可)默认就是当前用户。

# 1.晚上10点5分运行echo命令?
    5 22 * * * /usr/bin/echo "Linux"
# 2.每6小时运行一次echo命令?
    0 */6 * * * /usr/bin/echo "Linux"

        A)crontab命令

crontab [-u user] [-l | -r | -e] [-i] [-s]
  -l 列出所有任务
  -e 编辑任务
  -r 移除所有任务
  -i 与“-r”一同使用,以交互式模式让用户有选择地移除指定任务

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

      B)案例

[root@wybaron_host1015 ~]# crontab -u wybaron -e
[root@wybaron_host1015 ~]# cat /tmp/crontab.GlGd2o 
0 3 * * * /usr/bin/echo "Linux"  # 每天的凌晨3点执行echo命令。输出“Linux”
0 */3 * * * /usr/bin/echo "Linux"  # 每隔3个小时执行echo命令。输出“Linux”



三、补充



    邮件收发流程

centos 8计划任务 linux计划任务怎么写_操作系统

        SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。

        POP(Post Office Protocol):目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。

        IMAP(Internet Message Access Protocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如:移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。

 



    Linux邮件

        mailx命令

mailx [-s 'subject'] username[@hostname]
  subject 邮件主题

# 邮件正文生成方式
  直接给出,然后Ctrl+d。
  输入重定向进行输入。
  通过管道进行输入(eg:~]# echo -e "It's a test?\nnegligible?" | mailx -s 'Operation Notification' wybaron )。

        案例

# 同一主机的发送方
[root@wybaron_host1015 ~]# whoami
root
[root@wybaron_host1015 ~]# mailx -s 'Operation Notification' wybaron
It is a test!                       
negligible!EOT 
# 同一主机的接收方
[wybaron@wybaron_host1015 ~]$ whoami
wybaron
您在 /var/spool/mail/wybaron 中有新邮件
[wybaron@wybaron_host1015 ~]$ cat /var/spool/mail/wybaron
From root@wybaron_host1015.localdomain  Sun Oct 21 10:16:37 2018
Return-Path: <root@wybaron_host1015.localdomain>
X-Original-To: wybaron
Delivered-To: wybaron@wybaron_host1015.localdomain
Received: by wybaron_host1015.localdomain (Postfix, from userid 0)
        id 525F710A38C7; Sun, 21 Oct 2018 10:16:37 +0800 (CST)
Date: Sun, 21 Oct 2018 10:16:37 +0800
To: wybaron@wybaron_host1015.localdomain
Subject: Operation Notification
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20181021021637.525F710A38C7@wybaron_host1015.localdomain>
From: root@wybaron_host1015.localdomain (root)

It is a test!
negligible!