Linux初级运维(十六)——Linux进程管理及系统启动流程

一、进程:

        进程状态

        父子关系

        优先级关系:目前有140个优先级(0-139)   100-139 : 用户可控制    0-99:内核调整的。

         优先级高的优势:(1)获得更多的CPU运行时间;(2)更优先获得运行的机会;

    1、进程ID

        PID:Process ID

        init: 进程号永远为1

        ps:process state

                sysv风格:-

                BSD风格:

            a:所有与终端相关的进程

            x;所有与终端无关的进程

        进程的分类:

            跟终端相关的进程

            跟终端无关的进程

        进程的状态:

            D:不可中断的睡眠

            R:运行或就绪

            S:可中断的睡眠

            T:停止

            Z:僵尸状态

        <:高优先级进程

        N:低优先级进程

        +:前台进程组中的进程

        l:多线程进程

        s:会话进程首进程

     ps:

        

            

        pstree

        psgrep

        top:

            M:根据驻留内存大小进行排序

            P:根据CPU使用百分比进行排序

            T:根据累计时间进行排序

            l:是否显示平均负载和启动时间

            t:是否显示进程和cpu状态相关信息

            m:是否显示内存相关信息

            c:是否显示完整的命令信息

            q:退出top

            k:终止某个进程

        top:

            -d:指定延迟时长,单位是秒

            -b:批模式

            -n #:在批模式下,共显示多少批

        vmstat

        free

        kill

        pkill

        bg

        fg

     2、进程间通信

        进程间通信(IPC:Inter Process Communication)

                共享内存

                信号:Signal

                Semaphore

        重要的信号:

            1:SIGHUP  :让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;

            2:SIGINT  : Ctrl+c 中断一个进程

            9:SIGKILL:杀死一个进程

            15:SIGTERM  :终止一个进程

        指定一个信号:

            信号号码: kill -1

            信号名称:kill -SIGKILL

            信号名称简写: kill -KILL

        kill PID

        killall COMMCOMM

    3、调整nice值:

            调整已经启动的进程的nice值: 

            nice -n NI COMMAND

    4、前台、后台

            前台作业:占据了命令提示符

            后台作业:启动之后,释放命令提示符,后续的操作在后台完成

        前台——>后台:

            ctrl+z:把正在前台的作业送往后台

            COMMAND & :让命令在后台运行

        bg:让后台的停止作业继续运行

        jobs:查看所有的作业

            作业号:不同于进程号

                +:命令将默认操作的作业

                -:命令将第二默认操作的作业

        fg:将后台的作业调回前台

            fg [%JOBID]

        kill %JOBID:终止某作业

    4、vmstat :系统状态查看命令

二、系统启动流程

    1、日志系统

        Linux系统启动流程

        PC:OS(Linux)

        POST--> BIOS (Boot Sequence)-->MBR(bootloader,446)-->Kernel()-->/sbin/init()

        内核设计风格:

            单内核:Linux(LWP)

                  核心:ko(Kernel object)

            微内核:Windows,Solaris(线程)

    2、启动的服务不同

            运行级别:0-6

                0:halt

                1:single user mode,直接以管理员身份切入

                2:multi user mode ,no NFS

                3: multi user mode ,text mode  多用户模式  文本模式

                4: reseved mode    保留模式

                5:multi user mode ,graphic mode 多用户模式  图形界面模式

                6:reboot :重启

    3、详解启动过程

            BootLoader(MBR)

                LILO:Linux Loader

                GRUB:GRand Unified BootLoader

                       stage1:MBR

                        stage1_5:

                        stage2:/boot/grub/

        grub.conf:

        default=0 #设定默认启动的title的编号,从0开始

        timeout=5  #等待用户选择的超时时长,单位是秒。

        splashimage=(hd0,0)/grub/splash.xpm.gz  #grub的背景图片

        hiddeenmenu #隐藏菜单

        title Red Hat Eeterprise Linux Server (2.6.18-308.el5)  #内核标题,或操作系统名称,字符串,可自由修改。

            root (hd0,0)  #内核文件所在的设备:对grub而言,所有类型硬盘一律hd,格式为(hd#,N):hd# ,#表示第几个磁盘;最后的N表示对应磁盘的分区。

            kernel /vmlinuz-2..18-308.el5 ro root=/dev/vo10/root rhgb quiet  #内核文件路径,及传递给内核的参数

            initrd /initrd-2.6.18-308.el5.img  #ramdisk文件路径

    4、查看运行级别:    

            runlevel:

            who -r

        查看内核release号:   uname -r

    5、安装grub stage1:

        #grub

        grub> root (hd0 ,0)

        grub> set (hd0)

        安装grub第二种方式:

            #grub-installl  --root-directory=/path/to/boot`s_parent_dir /PATH/TO/DEVICE

三、kernel 初始化的过程

    1、设备探测

    2、驱动初始化(可能会从initd(initramfs)文件中装载驱动模块)

    3、以只读挂载根文件系统;

    4、装载第一个进程init(PID:1)

四、init

        /sbin/init: (/etc/inittab)

            upstart : ubuntu,d-bus, event-driven

            systemd:

        id:runlevels:action:process

        id:标识符

        runlevels:在哪个级别运行此行

        action:在什么情况下执行此行;

        process:要运行程序;

    1、ACTION:

            initdefault:设定默认运行级别

            sysinit:系统初始化

            wait:等待级别切换

            respawn:一旦程序终止,重新启动

    2、/etc/rc.d/rc.sysinit完成的任务:

        (1)激活udev和selinux;

        (2)根据/etc/sysctl.conf文件,来设定内核参数;

        (3)设定时钟

        (4)装载键盘映射

        (5)启用交换分区

        (6)设置主机名

        (7)根文件系统检测,并以读写方式重新挂载

        (8)激活RAID和LVM设备;

        (9)启用磁盘配额

        (10)根据/etc/fstab,检查并挂载其他文件系统

        (11)清理过期的锁和PID文件;

五、服务类脚本:

            start

            SysV :/etc/rc.d/init.d

                    start|stop|restart|status

                    reload|configtest

            chkconfig:

            chkconfig:runlevels SS KK

                  当chkconfig 命令来为此脚本在rc#.d目录创建链接是,runlevels表示默认创建为S*开头的链接,除此之外的级别默认创建为K*开头的链接;

                        S后面的启动优先级为SS所表示的数字;K后面关闭优先次序为KK所表示的数字;

            description:用于说明此脚本的简单功能: \,续行

        chkconfig --list: 查看所有独立守护服务的启动设定:独立守护进程

            chkconfig --list SERVICE_NAME

        chkconfig --add SERVICE_NAME

        chkconfig --del SERVICE_NAME

        chkconfig --level RUNLEVELS SERVICE_NAME {on|off}


        /etc/rc.d/rc.local:系统最后启动的一个服务,准确的说,应该执行的一个脚本

    1、 /etc/inittab 的任务

        (1)设定默认运行的级别;

        (2)运行系统初始化脚本

        (3)运行指定运行级别对应的目录下的脚本

        (4)设定ctrl+alt+del组合键的操作

        (5)定义UPS电源在电源故障/恢复时执行的操作

        (6)启动虚拟终端(2345级别)

        (7)启动图形终端(5级别)  

六、守护进程的类型

        独立守护进程

        xinitd:超级守护进程:关联至运行级别

            瞬时守护进程:不需要关联至运行级别          


        


       

    

        

                

猜你喜欢

转载自blog.51cto.com/5001660/2331881