您的位置:首页 > 运维架构 > Shell

Linux初级运维(十八)——bash脚本编程之信号捕捉及系统管理任务计划

2019-01-19 11:04 603 查看

一、脚本编程知识点

    1、变量中字符的长度:${#VARNAME}

    2、变量赋值等:

        ${parameter:-word}:如果parameter为空或未定义,则变量展开为“word”;否则,展开为parameter的值;

        ${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,则展开为“word”值;

        ${parameter:=word}:如果parameter为空或未定义,则变量展开为“word”,并将展开后的值赋值给patamter;

        ${parameter:offset}

        ${parameter:offset:length}:取子串,从offset处的后一个字符开始,取lenth长的子串;

        cross compile:交叉编译

    3、脚本配置文件

        /etc/rc.d/init.d/服务脚本

        服务脚本支持配置文件:/etc/sysconfig/服务脚本同名的配置文件

    4、局部变量

        local VAR_NAME=

    eg:  

        a=1

        test() {

            a=$[3+4]

    }

        test

        for I in `seq $a 10` ; do

            echo $I

        done

    5、命令 mktemp

        创建临时文件或目录

        mktemp /tmp/file.XX

            -d :创建为目录

    6、信号

        kill -SIGNAL PID

            1:HUP

            2:INT

            9:KILL

            15:TERM

        脚本中,能实现信号捕捉,但9和15无法捕捉

        Ctrl+c:SIGINT

        trap命令:

            trap ‘COMMAND’ 信号列表

    7、一行执行多个语句,语句间用分号分隔


二、任务计划

    1、在未来的某个时间点执行一次某任务

        at    

        batch

        at 时间

        at>COMMAND

        at> Ctrl+d

            指定时间:      (绝对时间: HH:MM , DD.MM.YY   MM/DD/YY 10:20 );(相对时间: now+#  单位:minutes,hours,days,weeks     now+3m )

            模糊时间:noon ,midnight,teatime

        命令的执行结果:将以邮件的形式发送给安排任务的用户。

        at -l = atq

        at -d AT_JOB_TD = atrm AT_JOB_ID

    2、周期性地执行某任务

        cron:自身是一个不间断运行的服务

        anacron:cron的补充,能够实现让cron因为各种原因在过去的时间该执行而未执行的任务在恢复正常执行一次;

        cron:

            系统cron任务:

                /etc/crontab

                    分钟   小时   天  月  周   用户  任务

            用户cron任务:

                /var/spool/cron/USERNAME

                      分钟   小时   天   月  周  任务

            时间的有效取值

                分钟:0-59    小时:0-23    天:1-31    月:1-12    周:0-7 ,0和7都表示周日

            时间通配表示:  

                * :对应的所有有效取值

                    3 *    *    *    * :表示每个小时的第三分钟执行任务,一小时一次

                    3    *    *    *    7 :表示每周的星期日的每小时的第三分钟执行粪污

                    3    12    *    *    5:表示每周五的12点3分执行一次任务,一周执行一次

                    3    12    6    *    *:表示每月6号的12点3分执行一次任务,一个月执行一次

                    3    12    6    8    *:表示每年8月6号的12点3分执行一次任务,一年执行一次
                    PS:周和日最好不要一起使用

            ,:离开时间点:

                    10,40    02    *    * 2,5 :表示每周二和周五的 2点10分和亮点40分执行一次任务

            -:连续时间点:

                    10    02    *    *    1-5:表示周一至周五的 两点十分执行一次任务,每周执行五次。

            /:对应取值范围内每多久一次:

                    */3    *    *    *    *:表示每3分钟执行一次的任务

                每两小时执行一次:   08    */2    *    *    *

                每两天执行一次: 10    04    */2    *    *

            执行结果将以邮件形式发送给管理员: */3     *    *    *    * /bin/cat    /etc/fstab &>/dev/null

            cron的环境变量:cron执行所有命令都去PATH环境变量指定的路径下去找

                PATH    /bin:/sbin:/usr/bin:/usr/sbin

            用户任务的管理:

                crontab:

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

                    -e:编辑

                    -r:移除所有任务

                    -u USERNAME :管理其用户的cron任务

           

        

        

        


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  学习 笔记