Linux学习文档(15):进程管理

Linux进程管理

内核的功用: 进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能

Process: 运行中的程序的一个副本
    存在生命周期

Linux内核存储进程信息的固定格式: task struct
    多个任务的task struct组成的链表: task list

进程创建:
    内核创建init进程
            init创建后续进程,存在父子关系
            进程: 都由其父进程创建
                fork()是用来创建进程的接口,存在于内核中;
                当子进程需要修改数据时父进程会clone()一份空间给子进程来修改;

    进程优先级:
        0-139:
            1-99: 实时优先级,数字越大优先级越高,很少需要手动处理
            100-139: 静态优先级,用户可调度优先级
                数字越小,优先级越高

            Nice值: 
                -20,19: 分别对应于100-139;-20对应100,19对应139

进程类型:
    守护进程: daemon,在系统引导过程中启动的进程,跟终端无关
    前台进程: 跟终端相关,通过终端启动的进程
        注意: 也可把前台启动的进程送往后台,以守护模式运行

进程状态:
    运行态: running
    就绪态: ready
        睡眠态
            可中断: interruptable
            不可中断: uninterruptable
    停止态: 暂停于内存中,但不会被调度,除非手动启动,stopped
    僵死态: zombie,当此进程正在运行的话,父进程异常结束的话,此时进程就会变成僵死态


Linux进程查看以及管理的公祖: 
    pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

        pstree命令:
            -p: 显示父进程下的子进程信息

        ps命令:

            Linux系统各进程的相关信息均保存在/proc/PID目录下的个文件中;

            ps [OPTIONS]...
                选项: 支持两种风格

                    常用选项组合: aux
                        u: 以用户为中心组织进程状态信息显示
                        a: 与终端相关的进程
                        x: 与终端无关的进程
            USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

            USER: 进程的属主
            PID: 进程的PID号
            %CPU: 进程占据CPU的百分比
            %MEM: 进程占据内存的百分比
            VSZ: 虚拟内存集
            RSS: 常驻内存集,不能放在交换分区中的数据或指令
            TTY: 运行的终端号
            STAT: 进程状态
                R: running
                S: interruptable sleeping(可终端睡眠)
                D: uninterruptable sleeping(不可终端睡眠)
                T: stoped(停止态)
                Z: zombie(僵死态)

                +: 前台进程
                l: 多线程进程
                N: 低优先级进程
                <: 高优先级进程
                s: 会话创建者
            START: 启动时间
            TIME: 内存占据CPU的累积时长
            COMMAND: 由哪个命令启动的此进程

                    常用选项组合: -ef
                        -e: 显示所有进程,包括与终端相关与终端无关选项
                        -f: 显示完整格式的进程信息

                    常用选项组合: -eFH
                        -F: 显示完整格式的进程信息
                        -H: 以进程层级格式显示进程相关信息


        pgrep,pkill:
            pgrep [options] pattern
                -u uid: 指明某一个有效用户的所有进程
                -U uid: 指明某一个实际用户的所有进程
                -t treminal: 与指定终端相关的进程
                -l: 显示进程名
                -a: 显示完整格式的程序名
                -p pid: 显示其父进程为此处指定的进程的进程列表
            pkill [options] pattern

        pidof:
            根据进程名获取其PID
                例:pidof sshd   #获取sshd的父进程以及子进程PID号

        top:
            有许多内置命令可用:
                排序:
                    P: 以占据的CPU百分比排序
                    M: 以内存占据百分比排序
                    T: 累积占据CPU时长

                首部信息显示:
                    uptime信息: l命令,默认会显示的
                    tasks及cpu信息: t命令
                        cpu分别显示: 1
                    memory信息: m命令

                s: 修改刷新时间间隔
                q: 退出top
                k: 终止制定进程

            选项:
                -d #: 指定刷新时间间隔,默认为3秒

        htop(需要使用epel源安装):
            htop:
                -d #:指定刷新时间
                -u username: 仅显示指定用户的进程
                -s colomn: 以指定字段进行排序 
                    交互式命令:
                        s: 跟踪选定进程的系统调用
                        l: 显示选定进程打开的文件列表
                        a: 将选定进程绑定至某指定CPU核心
                        t: 显示进程树

        vmstat(虚拟内存状态)命令:
            vmstat [options] [delay [count]]
                procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
                r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs  us sy id wa st

                    procs: 与进程相关
                        r: 等待运行的进程的个数
                        b: 堵塞的进程个数
                    memory: 与内存相关
                        swapd: 虚拟内存的使用总量
                        free: 物理内存空闲总量
                        buff: 用于buffer的内存总量
                        cache: 用于cache的内存总量
                    swap: 与交换内存相关
                        si: 数据进入到swap的速率(kb/s)
                        so: 数据离开swap的速率(kb/s)
                    io: 与io相关
                        bi: 从块设备读入数据到系统的速率(kb/s)
                        bo: 保存数据至块设备的速率(kb/s)
                    system: 与系统相关
                        in: 中断速率
                        cs: 进程切换速率
                    cpu: 与cpu相关
                        us: 用户空间占据CPU比例
                        sy: 系统空间占据CPU比例
                        id: 空闲比例
                        wa: 等待I/O完成所消耗的时间比例
                        st: 被虚拟化偷走的时间比例
                选项:
                    -s: 显示内存的统计数据

            kill命令:

                向进程发送控制信号,以实现对进程管理

                显示当前系统可用信号:
                    # kill -l

                    常用信号:
                        1) SIGHUP: 无须关闭进程而让其重读配置文件
                        2) SIGINT: 终止正在运行的进程,相当于Ctrl+c
                        9) SIGKILL: 杀死正在运行的进程
                        15) SIGTERM: 终止正在运行的进程
                        18) SIGCONT
                        19) SIGSTOP

                    指定信号的方法:
                        (1) 信号的数字标识:1,2,9
                        (2) 信号的完整名称:SIGHUP
                        (3) 信号的简写名称:HUP

                    向进程发信号:
                        kill [-SIGNAL] PID...

                    终止特定名称标记的所有进程:
                        killall [-SIGNAL] Program(进程名)
                            例:
                                killall -15 httpd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Re: 《Linux 进程管理命令》   ---------------------------------------内容提要: 01/15)命令 ps         :查看进程(快照)02/15)命令 pstree   :显示进程状态树03/15)命令 pgrep   :查找匹配条件的进程04/15)命令 kill        :终止进程号(1277)05/15)命令 killall    :通过进程名(nginx)终止进程(父/子进程)06/15)命令 pkill      :通过进程名终止进程(通杀)/终止客户端(pst/tty)07/15)命令 top       :实时显示系统中各个进程的资源占用状况(录像)08/15)命令 nice      :调整程序运行时的优先级09/15)命令 renice   :调整运行中的进程的优先级10/15)命令 nohup  :用户退出系统,进程继续工作11/15)命令 strace   :跟踪进程的系统调用12/15)命令 ltrace    :跟踪进程调用库函数13/15)命令 runlevel:输出当前运行级别14/15)命令 init        :初始化 Linux 进程15/15)命令 service  :管理系统服务  本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机中安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值