Linux任务计划及内核管理

作业管理:

    前台作业:通过终端启动,且启动后一直占据终端;

    后台作业:通过终端启动,但启动后随即转入后台运行(释放终端)

将作业放入后台的操作

    1)运行中的作业:ctrl+z

    2)还未执行的作业:command &

    

后台作业虽然被送往后台运行,但其依然和终端相关,退出终端,将关闭后台作业,如果希望送往后台后,剥离与终端的关系:

    nohup command & 

    screen command &

jobs:可以查看所有的作业

blob.png

作业控制:

    fg [[%]job_num]:把指定的后台作业调回前台

    bg [[%]jpb_num]:让送往后台的作业在后台继续运行

    kill[[%]job_num]:终止指定的进程

并行运行多个进程,从而可以提供效率

    1) vi all.sh

        f1.sh

        f2.sh

        f3.sh

    2)  (f1.sh&);(f2.sh&);(f3.sh&)

    3)  { f1.sh&;f2.sh&;f3.sh& }

进程优先级调整:

    静态优先级:100-139

    进程默认启动时的nice值为0,优先级为120

    只有根用户才能降低nice值(提高优先级)

nice命令:

    nice [option][command [arg]…]

renice命令:

    renice [-n] priority pid…

查看:

    ps axo pid,comm,ni

Linux任务计划

    在未来的某个时间段执行一次任务:at

    blob.png

    blob.png    

    at [option]Time

    选项:

        -V 显示版本信息

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

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

        -c 查看具体作业任务

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

        -m 当任务被完成之后,将给用户发送邮件,即使没有标准输出

    blob.png

        注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

        TIME:定义出什么时候进行at这项任务的时间

        HH:MM[yyyy-mm-dd]

        noon,midnight,teatime(4pm)

        tomorrow

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

    at任务的执行方式:

        1)交互式  2)重定向  3)at -f 文件

    at任务计划依赖于atd服务,需要启动才能实现at任务

    at队列存放在/var/spool/at目录中

    blob.png

    

    /etc/at.deny文件控制者哪些用户不能执行at任务计划

    blob.png

    /etc/at.allow文件控制着哪些用户可以使用任务计划,默认情况下没有创建该文件,如果同时一个用户同时存在于这两个文件中,则以allow文件为准,如果两个文件都不存在,则表示只有root用户才可以使用at命令。


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


    周期性运行某任务:cron

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

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

    crontabs:包含centos提供系统维护任务

    确保crond守护处于运行状态

    Centos 7:systemctl status crond

    blob.png

    Centos 6: service crond status

    blob.png

    计划周期性执行的任务提交给crond,到指定时间会自动运行系统cron任务:

        系统维护作业:

            /etc/crontab

     blob.png

        用户任务:

            crontab命令

    blob.png

    计划任务的日志:/var/log/cron

    时间表示法:

    1)特定值

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

    2)*

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

            表示“每…"

    3) 离散取值

            #,#,#

    4)连续取值

            #-#

    5)在指定时间范围内,定义步长

            /#:#即为步长

    blob.png

    时间格式:

    @reboot 每次重启

    @yearly 0 0 1 1 *

    @annually 0 0 1 1 *

    @monthly 0 0 1 * *

    @weekly 0 0 * * 0

    @daily 0 0 * * *

    @hourly 0 * * * *

    

    系统的任务计划:

    /etc/crontab

    /etc/cron.d/ 存放一些配置文件

    blob.png

    /etc/cron.hourly/

    /etc/cron.daily/

    /etc/cron.weekly/

    /etc/cron.monthly/

    用于存放任务计划脚本

    blob.png

    

    anacron系统:

    a.运行计算机关机时cron不运行的任务,Centons6以后版本取消anacron服务,由crond服务管理

    b.假设计算机没有一直开机

    c.对笔记本电脑,台式机,工作站及其他不一致开机的系统很重要

    d.对偶尔要关机的服务器很重要

    e.配置文件:/etc/anacrontab,负责执行/etc/cron.daily/ /etc/cron.weekly/ /etc/monthly/中系统任务,/etc/cron.hourly/由/etc/cron.d/0hourly负责执行

    blob.png

        字段1:如果在这些时间没有运行这些任务

        字段2:再重新引导后等待这么多分钟后运行它

        字段3:任务识别器,在日志文件中标识

        字段4:要执行的任务

        当任务执行时,更新/var/spool/anacron/中文件的时间戳

        blob.png


    临时文件管理

        Centos6使用/etc/cron.daily/tmpwatch 定时清除临时文件

        Centos7使用systemd-tmpfiles-setup服务实现

        配置文件:

            /etc/tmpfiles.d/*.conf

            /run/tmpfiles.d/*.conf

            /usr/lib/tmpfiles.d/*.conf

    blob.png

    systemd-tmpfiles -clean|remove|create configfile

    

    任务计划:

        crontab命令定义:每个用户都有专用的cron任务文件

        crontab [option][-l|-r|-e][-i]

                -l:列出所有任务

                -e:编辑任务

                -r:移除任务

                -i:同-r一起使用,以交互模式移除指定任务

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

        控制用户执行任务计划:

            /etc/cron.{allow|deny}


    at和crontab共性和个性

    at和crontab都是用来做任务计划的

    at:一次性作业

    crontab:周期性作业

    blob.png

    没有被重定向的输出会被邮寄给用户

    根用户可以修改其他用户作业

    Tips:运行结果的标准输出和错误以邮件的形式通知给相关用户

         command &>/dev/null

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


系统启动与内和管理

    linux: GNU/KERNEL

        kernel+rootfs

        kernel:进程管理,内存管理,网络管理,驱动程序,文件系统,安全功能

        rootfs:程序和glibc

        库:函数集合,function,调用接口(头文件负责描述)    

            过程调用:procedure,无返回值

            函数调用:function

        程序;二进制执行文件

    内核设计流派:

        单内核(monolithic kernel):linux

            把所有功能集成于同一个程序

        微内核(micro kernel):微软,solaris

            每种功能使用一个单独的子系统

    linux内核特点:

        支持模块化:.ko(内核对象)

            如:文件系统,硬件驱动,网络协议等

        支持内核模块的动态装载和卸载

    组成部分:

        核心文件:/boot/vmlinuz-version-release

        ramdisk:辅助的伪根文件系统

            centos5:/boot/initrd-version-release.img

            centos6,7:/boot/initramfs-version-release.img

        模块文件:/lib/modules/version-release

    blob.png

        注:#表示系统的默认启动级别,在/etc/inittab中进行设置

    Centos6启动流程:

        1)加载BIOS的硬件信息,获取第一个启动设备

        2)读取第一个启动设备MBR的引导加载程序(grub)的启动信息

        3)加载核心操作系统,核心开始解压缩,并尝试驱动所有硬件设备

        4)核心执行init程序,并获取默认的运行信息

        5)init程序执行/etc/rc.d/rc.sysinit文件

        6) 启动核心的外挂模块(/etc/modprobe.conf)

        7) init执行运行的各个批处理文件(scripts)

        8)init执行/etc/rc.d/rc.local

        9) 执行/bin/login程序,等待用户登录

        10)登录之后开始以shell控制主机

    启动流程:

        POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分,负责完成对cpu,主板,内存,硬盘子系统,显示子系统,串并行接口,键盘,CD-ROM光驱等硬件情况的检测

        ROM:BIOS,Basic Input  and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序和系统启动自举程序等

        RAM:cmos互补金属氧化物半导体,保存各项参数的设定

        按次序查找引导设备,第一个有引导程序的设备为本次启动设备

    bootloader:引导加载器,引导程序

        windows:ntloader 仅是启动os

        linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本,把用户选定内核装载到内存中的特定空间中,解压,展开,并把系统控制权移交给内核

            lilo:linux loader    grub:grand unified bootloader

    MBR:

        446:bootloader  64:分区表   2:55AA

    GRUB:

        primary boot loader :1st stage 1.5stage

        secondary boot loader: 2nd stage 分区文件

    blob.png    

    kernel:

        自身初始化:

            探测可识别到的所有硬件设备

            加载硬件驱动程序(可能借助于ramdisk加载驱动)

            以只读方式挂载根文件系统

            运行用户空间的第一个应用程序:/sbin/init

     init程序的类型:

        Sysv:init,Centos 5 之前

            配置文件:/etc/inittab

        Upstart:init Centos 6

            配置文件:/etc/inittab  /etc/init.d/*.conf

        Systemd:systemd Centos 7

            配置文件:/usr/lib/systemd/system

                       /etc/systemd/system

        ramdisk:

            内核中的特征之一:使用缓冲和缓存来加速对磁盘上的文件访问

    blob.png

            ramdisk–>ramfs 提高速度

            Centos 5:initrd 工具程序:mkinitrd

            Centos 6:initramfs 工具程序:mkinitrd dracut

    系统初始化流程:

        POST–>BOOTSequence(BIOS)–>Bootloader(MBR)–>kernel(ramdisk)–>rootfs(只读)–>init(systemd)

    系统的几种运行级别:

        0:关机

        1:单用户模式(root自动登录)single 维护模式

        2:多用户模式,启动网络功能,但不启用NFS

        3:多用户模式,正常模式,文本界面

        4:预留级别,可同于3级别

        5:多用户模式,正常模式,用户界面

        6:重启

    blob.png

    默认级别;3,5

    切换级别:init #

    查看级别:runlevel,who -r 

    blob.png

    Centos 6 /etc/inittab和相关文件

        设置系统默认的运行级别

        id:3:initdefault:

    /etc/init/control-alt-delete.conf 

    blob.png

    使用control-alt-delete的组合键可以进行关机操作

    

    /etc/init/tty.conf

    blob.png

    复位tty终端设备

    

    /etc/init/start-ttys.conf

    blob.png

    如果runlevel是2,3,4其中的某个状态,则启动tty终端

    

    /etc/init/rc.conf

    blob.png

    系统运行级别的合理性

    

    /etc/init/prefdm.conf

    blob.png

    

    /etc/rc.d/rc.sysinit:系统初始化脚本

    blob.png

        1) 设置主机名

        2)设置欢迎信息

        3)激活udev和selinux

        4)挂载/etc/fstab文件中定义的文件系统

        5)检测根文件系统,并以只读方式重新挂载根文件系统

        6)设置系统时钟

        7)激活swap设备

        8)根据/etc/sysctl.conf文件设置内核参数

        9)激活lvm及software raid设备

        10)加载额外设备的驱动程序

        11)清理操作


    blob.png

    /etc/rc.d/rc#.d

    K##*:##表示运行次序,数字越小,越先运行,数字越小的服务,通常为依赖别的服务

    S##*:##表示运行次序,数字越小,越先运行,数字越小的服务,通常为被依赖的服务


    chkconfig命令:

        查看服务在所有级别的启动或关闭设定情况

        chkconfig [–list][name]

       blob.png        

 Sysv的服务脚本放置于/etc/rc.d/init.d(/etc/init.d)

        添加:chkconfig –add name

    

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


blob.png



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


blob.png

        
















原创文章,作者:Stupid_L,如若转载,请注明出处:http://www.178linux.com/44724

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 11:53

    总结的很完整,但是过于简略了哦,,而且分类也不够明确,建议这里进行标准化哦。