Linux 进程管理工具

…衆ロ難τιáo~ 提交于 2019-12-21 00:12:45

Linux进程管理命令:
    pstree、ps、top、pidof、htop、glances、pmap、vmstat、dstat、kill、pkill、job、bg、fg、nohup、pgrep、
    
    pstree:display a tree of processes
    ps:report a snapshot of the current processes.
        Linux系统上运行中的各个进程的相关信息都保存在/proc/PID目录下的各文件中;
            所以这些状态查看工具无非都是通过查看这些目录下的相关文件来实现的;
        ps [options…]
            支持两种风格的选项:加"-"和不加"-"
            常用组合:
                u:以用户为中心组织进程状态信息显示;
                a:与终端相关的进程;
                x:与终端无关的进程;
            ~]#ps aux
                USER    PID         %CPU             %MEM         VSZ                      RSS        TTY       STAT    START   TIME         COMMAND
                属主     进程号  使用cup时间百分比  使用内存百分比   已用虚拟内存大小   常驻内存集   终端类型   进程状态    启动时间  累计占用CPU的时间   由哪个命令                           启动的
                    VSZ:Virtual memory Size 虚拟内存大小,进程在其线性地址空间占用的内存大小;
                        虚拟/线性内存集
                    RSS:ReSident Size 常驻内存大小;
                        常驻内存集
                        虚拟内存集大小一般大于常驻内存集大小,除了常驻内存集的数据剩下的都可以被交换到swap分区中;
                    TTY:通过哪个终端启动的
                        ?:与终端无关;
                    STAT:进程状态
                        帮助:man ps
                        R:running
                        S:可中断的sleeping
                        D:不可中断的sleeping
                        T:stopped
                        Z:僵死态
                        +:前台进程
                        l:多线程进程
                        N:低优先级进程
                        <:高优先级进程
                        s:session leader
            ~]#ps -ef
                -e:显示所有进程
                -f:显示完整格式的程序信息
            ~]#ps -ejH
                已进程层级格式显示进程相关信息
            ~]#ps -eFH
                相对于上一个命令组合显示更完整的格式的进程信息
            ~]#ps -U username
                显示某用户的运行的进程
            ~]#ps stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,…
                显示指定选项
                pri:优先级
                ni:nice
                psr:processor,运行在哪颗CPU上;
    pgrep、pkill:look up or signal processes based on name and other attributes
        pgrep [options] pattern
        pkill [options] pattern
            -u uid:effective  user
            -U uid:real user
            -t terminal:与指定终端相关的进程
            -l:显示进程名
            -a:完整格式的进程名
            -P:显示其父进程为此处指定的进程的进程列表
    pidof:find the process ID of a running program.
        根据进程名获取其PID
    top:display Linux processes
        选项:
            -d:指定刷新时间间隔,默认为3s;
            -b:以批次方式显示,从第一屏刷到最后一屏;
            -n #:显示多少批次;
        有许多内置命令
            排序:
                P:以占据的CPU百分比排序;
                M:以占用的内存百分比排序;
                T:以累计占用CPU时长排序;
            修改刷新时间间隔:s+键入秒数;
            中止指定进程:k+进程号;
        信息显示:
            1:Def - 22:12:23 up 12:38,  2 users,  load average: 0.00, 0.01, 0.05  =》  uptime
                系统时间            主机已运行时间  使用者数量        负载均衡          一分钟  五分钟  十五分钟          使用"l"可以隐藏第一行信息
            Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
            进程总数量                             运行中的进程    睡眠中的进程           停止的进程         僵死的进程
            %Cpu(s):                  0.0 us,           3.1 sy,   0.0 ni,  96.9 id,  0.0 wa,          0.0 hi,     0.0 si,      0.0 st
            CPU的使用情况    用户空间程序占据的百分比   内核空间       nice          空闲的         等待IO完成时间    硬件中断    软件中断     虚拟机窃取的时间     使用"1"可以显示多个cpu
            KiB Mem :  1867048 total,  1515904 free,    86300 used,   264844 buff/cache
             内存使用情况        物理内存总大小                空闲空间                  已使用内存         已使用的缓冲和缓存占据的空间
            KiB Swap:  2097148 total,  2097148 free,        0 used.  1550164 avail Mem      =》free -m
            交换分区使用情况   总空间大小          空间交换空间                已使用交换空间          物理内存可使用空间                            
            1   PID USER      PR    NI    VIRT         RES       SHR         S      %CPU         %MEM     TIME+   COMMAND                                             
                     进程号  属主          优先级     nice      虚拟内存集  常驻内存集  共享内存大小  状态   占据CPU百分比  占据内存百分比  累计运行时长        启动命令
        退出:q
    htop:interactive process viewer     界面美观
        安装htop:
            tar -zxvf htop-1.0.2.tar.gz
            cd htop-1.0.2.tar.gz
            yum groups install Development\ Tools
            yum install ncurses-devel.x86_64
            ./configure
            make
            make install
        选项:
            s:跟踪选定进程的系统调用;
            l:显示选定进程打开的文件列表;
            a:将选定进程绑定至某指定cpu核心;
        帮助:man htop、top界面键入h
    vmstat:Report virtual memory statistics
        vmstat [options] [delay [count]]
        各字段信息:
            procs:
                r:等待运行的进程数;
                b:处于不可中断睡眠态的进程数(被阻塞的队列的长度);
            memory:
                swpd:交换内存的使用总量;
                free:空间物理内存的总量;
                buffer:用于buffer的内存总量;
                cache:用于cache的内存总量;
            swap:
                si:数据从swap到内存的速率(Kb/s);
                so:数据从内存进入swap的速率(Kb/s);
            io:
                bi:从块设备读入数据到系统中的速率(Kb/s);
                bo:保存数据到块设备的速率(Kb/s);
            system:
                in:终端速率(Kb/s);
                cs:进程/上下文切换速率(Kb/s);
            cpu:
                us:用户空间占据CPU的时间比例;
                sy:内核空间占据CPU的时间比例;
                id:空闲时间比例;
                wa:等待IO完成所需要的时间比例;
                st:被vm窃取的时间比例
        选项:
            -s:显示内存的统计数据信息;
    pmap:report memory map of a process
        pmap [options] pid [...]  =》cat /proc/PID/maps
        选项:
            -x:以扩展格式显示;
    glances:
        帮助:man glances
            可以查看内建命令;
        常用选项:
            -b:以Byte为单位显示网卡数据速率;
            -d:关闭磁盘IO模块;
            -f /path/to/somefile:设定输入文件位置;
            -o {HTML|CSV}:输出格式;
            -m:禁用mount模块;
            -n:禁用网路模块;
            -t # :延迟时间间隔;
            -1:每个cpu的相关数据单独显示;
        C/S模式下运行glances命令:
            服务模式:
                glances -s -B IPADDR(指明监听于本机的哪个地址)
            客户端模式:
                glances -c IPADDR(指明服务器端的地址)
    dstat:versatile tool for generating system resource statistics
        选项:
            -c:显示CPU相关信息;
                -C #,#,…,total
            -d:显示disk相关信息;
                -D total,sda[#],sdb[#],…
            -g:显示page相关统计信息;
            -m:显示memory相关统计信息;
            -n:显示network相关统计信息;
            -p:显示process相关统计信息;
            -r:显示io请求的相关统计信息;
            -s:显示swapped的相关统计信息;
            
            --tcp:显示tcp相关统计信息;
            --udp:显示udp相关统计信息;
            --unix:
            --raw:
            --socket:
            --icp:
            
            --top-cpu:显示最占用CPU的进程;
            --top-mem:显示最占用内存的进程;
            --top-io:显示最占用io的进程;
            --tcp-lantency:显示延迟最大的进程;
    kill:terminate a process
        向进程发送控制信号,以实现对进程的控制;
        显示当前系统可用进程:
            man 7 signal
            kill -l
            常用信号:
                1)SIGHUP:无需关闭进程而让其重读配置文件;
                2)SIGINT:终止正在进行的进程,相当于Ctrl+c;
                9)SIGKILL:杀死正在运行的进程;
                15)SIGTERM:终止正在进行的进程;
            指定信号的方法:
                信号的数字标识:1,2,9,…
                信号完整名称:SIGHUP,SIGINT,SIGKILL,…
                信号的简写名称:HUP,INT,KILL,…
            向进程发信号:
                kill [-SIGNAL] PID...
            终止名称之下的所有进程:
                killall [-SIGNAL] Program
    
    Linux的作业控制:
        前台作业:通过终端启动,且启动后一直占据终端;
        后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);
        如何让作业运行于后台?
            运行中的作业
                Ctrl+z:停止
            尚未启动的作业
                # COMMAND &
                    虽然这样作业被送往后台而释放了终端(前端),但是依然与终端相关;
                    如果希望送往后台后,剥离与终端的关系可使用:nohup COMMAND &
        查看所有作业情况:
            jobs
        作业控制:
            fg [[%]JOB_NUM]:将指定的后台作业调回前台;
            bg [[%]JOB_NUM]:让送往后台的处于停止状态的进程继续运行;
            kill [%JOB_NUM]:杀死指定作业号的进程;
    进程优先级调整:
        进程默认启动时的nice为0,优先级为120;
        nice:run a program with modified scheduling priority
            对启动时的进程的优先级进程调整;
            nice -n 5 htop
        renice:alter priority of running processes
            renice -n 2 pid
            对启动后的进程的优先级进程调整;
        在生产环境中,如果某一进程占用cpu过多,内核会根据情况自动降低其优先级;
            

注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!