一、邮件收发

SMTP服务启动与否状态查看:netstat -nlptu "25"端口是否被监听

默认收发邮件仅能在本机上的用户间进行,且只能通过回环接口上的地址进行

mail命令:

      收邮件:mail

           q:退出

           N:查看第N封邮件

发邮件给指定用户:

echo   "邮件内容"|mail -s  "邮件标题"   邮件地址


二、一次任务计划

1、at

用法: at TIME

提交任务:Crtl+d

作业结果:以邮件形式发送系统上的当前用户


TIME的格式:

       精确时间:  HH:MM

       模糊时间: now+N(时间单位min,hour,day)       #还有很多单位,不支持秒

                        noon(12点),midnight(12:00),teatime(16:00) ,tomorrow

作业队列查看at -l,atq

删除尚未运行的作业:at -d JOBNUM,at rm JOBNUM        #JOBNUM用at -l 可以看到

at -f /FILE TIME     #把at要执行的任务放置于文件中,让at读取此文件作为要运行的任务

[root@Node3 ~]# at 22:10
at> ls /tmp/src
at> <EOT>
job 1 at 2016-12-03 22:10

查看结果:

>N  6 root                  Sat Dec  3 22:10  17/523   "Output from your job        1"
& 6
Message  6:
From root@Node3.localdomain  Sat Dec  3 22:10:00 2016
Return-Path: <root@Node3.localdomain>
X-Original-To: root
Delivered-To: root@Node3.localdomain
Subject: Output from your job        1
To: root@Node3.localdomain
Date: Sat,  3 Dec 2016 22:10:00 +0800 (CST)
From: root@Node3.localdomain (root)
Status: R

fstab
fstab11
mariadb-10.1.16-linux-x86_64.tar.gz
test.sh

&

2、batch

        用法和功能和at一样但bath无须指定时间,会自动在将来的某个系统资源较空闲的时间点来运行


三、周期性任务计划

1、crond

依赖于后台服务,查看运行状态:service crond status

cron任务有两类:

      系统cron:/etc/crontab

      用户cron:定义在/var/spool/cron/目录中与用户名同名的文件中

1)每行定义一个独立的任务

2)建议在定义cron任务时,所用到的命令使用绝对路径,如果是脚本,脚本中的命令使用绝对路径,或自定义一个完整的环境变量

格式: 

        时间点(周期性任务的时间点)   user-name(用户)  command(要运行的任务)

时间点:

             分钟   小时  天   月   周几

 每年的     4       7     3    2       *   

 每月的     20    18    6     *       *

 每天的     20     9     *     *       *

 每小时的   3      *     *     *       *

 每分钟的    *     *   *     *       *

 每周的     16    17    *   *       3  

5个时间点的有效取值范围

     分钟:0-59;

     小时:0-23

        日:1-31

        月:1-12

     周几:0-7

时间表示法:

*: 对应时间点有效取值范围内的每个时间点;

-: 一个特定连续时间范围, 3-7

,:一个离散的时间点, 3,5,7

*/N:有效时间范围内的每多少时间;用于指定频率;

1-30/4,

 */4

5 */3 * * * /bin/echo "howdy"

5 7 * * 1-5 /bin/echo "howdy"


注意:

1、几月几号与周几,不建议同时使用;

2、每个时间位都应该使用其可用的有效取值范围,*表示使用其所有有效取值

3、*/N在对应的时间位有效值上每N个时间单位一次

*/7  *  *   *  *          注意:并不能精确做到每7分钟一次

    

任务运行后的结果,邮件发送给任务相关用户;丢弃邮件通知:输出重定向 

COMMAND &>/dev/null


2、cron任务的定义

用户cron任务的定义:

       会自动检查语法错误,

crontab命令:

       -l    列出当前用户的所有任务

       -e   打开编辑界面定义任务

       -r    移除所有任务

       -u  USERNAME            #管理指定用户crontab

[root@Node3 ~]# crontab -u xj -l
no crontab for xj
[root@Node3 ~]# crontab -u xj -r
no crontab for xj
[root@Node3 ~]# crontab -u xj -e
no crontab for xj - using an empty one
crontab: no changes made to crontab

注意:如果crontab中的用户命令中需要使用“%”要用“\”转义


系统cron的定义:

       直接编辑/etc/conttab文件即可,需要添加运行任务的用户


四、anacron

        为cron提供了补充机制

        系统每次开机时,anacron会检查crond中的所有任务在过去应该执行任务的时候是否被执行,没执行的话会尽快执行该任务


wKioL1hC5u2R1TU1AAGFts5xwdU146.png

0 */4 * * * /bin/cp -a /etc /tmp/etc-`date '+\%Y\%m\%d\%H\%M'`

0 0 * * 2,4,6 /bin/cp -a /var/log/messages /tmp/messages_logs/messages-`date '+\%Y\%m\%d'`

0 */2 * * * /bin/cat /proc/meminfo|grep '^S' &>>/stats/memory.txt

0 9-18/2 * * 1-5 /bin/echo "howdy"