zoukankan      html  css  js  c++  java
  • linux进程查看及管理的工具

     介绍Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
     
      一.    pstree命令:
                 pstree - display a tree of processes
     
      二.    ps: process state, report a snapshot of the current processes
         
                Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中,每一个PID都是一个进程号,PID中的cmdline文件说明了这个进程是由哪个文件启动的;
     
                ps [OPTION]... 选项:支持两种风格
                   
                   1)  BSD风格,前面没-  ,
                        常用组合:aux
                        u: 以用户为中心组织进程状态信息显示
                        a: 与终端相关的进程;
                        x: 与终端无关的进程;
     
                         ~]# ps aux
                        USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
                            VSZ: Virtual memory SiZe,能使用的虚拟内存大小
                            RSS: ReSident Size, 常驻内存大小,不能放在交换分区中的
                            STAT:进程状态
                                R:running
                                S: interruptable sleeping
                                D: uninterruptable sleeping
                                T: stopped
                                Z: zombie
                                +: 前台进程
                                l: 多线程进程
                                N:低优先级进程
                                <: 高优先级进程
                                s: session leader,会话创建者,这个启动后,会引起很多其他进程,如果它被终止,与它相关的进程也会终止
                           COMMAND: 由什么命令启动的进程
     
                   2) 标准风格:
                        常用组合1:-ef (PPID是父进程号)
                        -e: 显示所有进程
                        -f: 显示完整格式程序信息
                        -U: 显示指定用户进程 ps -U root
                        -o: 自定义显示输出
     
                       常用组合2:-eFH
                        -F: 显示完整格式的进程信息
                        -H: 以进程层级格式显示进程相关信息
     
                       常用组合3:-eo, axo,指明要显示的字段
                        例如:  ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
                                     ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
     
                                     ni: nice值
                                     pri: priority,优先级
                                     psr: processor, CPU
                                     rtprio: 实时优先级
     
     三.       pgrep, pkill:
                       pgrep [options] pattern------进程显示过滤,用法和pkill一样,比如pgrep -u root -l
     
                       pkill [options] pattern
                           -u uid: effective user,真实有效的用户
                           -U uid: real user,看到的用户
                           -t terminal: 与指定终端相关的进程
                           -l: 显示进程名
                           -a: 显示完整格式的进程名
                           -P pid: 显示其父进程为此处指定的进程的进程列表
     
      四.      pidof:
                   根据进程名获取其PID;
     
      五.      top:               
                  1)有许多内置命令(就是进入top显示界面后直接按命令键):
                         排序:默认以CPU排序
                           P:以占据的CPU百分比;
                           M:占据内存百分比;
                           T:累积占据CPU时长;
     
                         首部信息显示:
                           uptime信息:l命令
                           tasks及cpu信息:t命令, cpu分别显示:1 (数字)  
                           memory信息:m命令,其中us:用户空间,sy:内核空间,ni:nice值,id:空闲时间,wa:等待I/O时间,hi:硬件中断时间,si:软件中断时间,st:被虚拟技术偷走的时间
     
                         退出命令:q
                         修改刷新时间间隔:s
                         终止指定进程:k
     
                   2)参数选项:
                       -d #: 指定刷新时间间隔,默认为3秒;
                       -b: 以批次方式;自动翻页
                       -n #: 显示多少批次;比如 top -b -n 1--只显示第一屏
     
    六.        htop命令:
                   选项:
                       -d #: 指定刷新时间间隔;
                       -u UserName: 仅显示指定用户的进程;
                       -s COLOMN: 以指定字段进行排序;
     
                  内建命令:
                       s: 跟踪选定进程的系统调用;(上下键选进程)
                       l: 显示选定进程打开的文件列表;
                       a:将选定的进程绑定至某指定CPU,比如有多个CPU时,要把进程运行在哪个CPU上
                       t: 显示进程树
     
                   注意:Fedora-EPEL源中提供此软件,比如在镜像源中指定base=mirrors.aliyun.com/epel/7/x86_64/
     
    七     vmstat命令:虚拟内存状态工具---经典
            vmstat [options] [delay [count]]    ,比如 vmstat 2,表示2秒刷新一次,vmstat 2 5,显示5次退出
     
                1)procs相关:
                    r:等待运行的进程的个数,单个CPU时,超过3个就说明CPU性能不够了;
                    b:处于不可中断睡眠态的进程个数;(被阻塞的队列的长度);
     
                2) memory:
                    swpd: 交换内存的使用总量;
                    free:空闲物理内存总量;
                    buffer:用于buffer的内存总量;
                    cache:用于cache的内存总量;
     
                3)swap:
                    si:数据进入swap中的数据速率(kb/s)
                    so:数据离开swap中的数据速率(kb/s),重新载入内存
     
                4)io:
                    bi:从块设备(磁盘)读入数据到系统(内存)的速率;(kb/s)
                    bo: 保存数据至块设备的速率;
     
                5)system:
                    in: interrupts, 中断速率;
                    cs: context switch, 进程切换速率;
     
                6)cpu:
                    us--用户空间占据CPU的比例
                    sy--内核空间
                    id--空闲比例
                    wa--等待I/0完成所消耗的时间比例
                    st--被虚拟化技术偷走的比例
     
            选项:
                -s: 显示内存的统计数据
     
     
    八.     pmap命令:
              pmap - report memory map of a process,查看进程都占用了哪些内存空间
                pmap [options] pid [...]
                    -x: 显示详细格式的信息;
     
                另外一种实现方式:
                    # cat /proc/PID/maps
     
     
    九.     dstat命令:-系统资源统计数据,支持插件来扩展功能,比较好用
              dstat [-afv] [options..] [delay [count]]
                -c: 显示cpu相关信息;
                    -C #,#,...,total ---显示哪一个CPU信息
                -d: 显示disk读写相关信息;
                    -D total,sda,sdb,...单独显示某个disk,或全部disk
                -g:显示page相关统计数据;
                -m: 显示memory相关统计数据;
                -n: 显示network相关统计数据;
                -p: 显示process相关统计数据;
                -r: 显示io请求相关的统计数据;
                -s: 显示swapped相关的统计数据;
                --tcp
                --udp
                --unix
                --raw
                --socket---相当于参数tcp,udp,raw一起用
                --ipc ----进程间通讯的相关信息
                --top-cpu:显示最占用CPU的进程;
                --top-io: 显示最占用io的进程;
                --top-mem: 显示最占用内存的进程;
                --top-latency: 显示延迟最大的进程,运行起来最慢,跟不上CPU;
     
    十.   kill命令:
            向进程发送控制信号,以实现对进程管理,不单是杀死进程
     
            显示当前系统可用信号:
                # kill -l  列出kill支持能发出的信号
                # man 7 signal
     
                常用信号:
                    1) SIGHUP: 无须关闭进程而让其重读配置文件,就是不重启就让修改的配置生效;
                    2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;
                    9) SIGKILL: 杀死正在运行的进程;
                    15) SIGTERM:终止正在运行的进程,温柔的关闭;
                    18) SIGCONT:进程继续态
                    19) SIGSTOP:进程暂停态
     
                指定信号的方法:
                    (1) 信号的数字标识;1, 2, 9
                    (2) 信号完整名称;SIGHUP
                    (3) 信号的简写名称;HUP,就是把前面的SIG去掉就行
     
               向进程发信号:
                kill [-SIGNAL] PID...
     
               终止“名称”之下的所有进程:
                killall [-SIGNAL] Program
     
    十一.   Linux的作业控制
               前台作业:通过终端启动,且启动后一直占据终端;
               后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);
     
               如何让作业运行于后台?
                  (1) 运行中的作业
                    Ctrl+z
                  (2) 尚未启动的作业
                    # COMMAND &
                此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系。也就是终端关闭,进程依然运行:
                    # nohup COMMAND &
     
                查看所有作业:
                    # jobs  ,这个命令输出会显示作业号
     
                作业控制:
                    # fg % JOB_NUM:把指定的后台作业调回前台;
                    # bg % JOB_NUM:让送往后台的作业在后台继续运行;
                    # kill  % JOB_NUM:终止指定的作业,这里的%不能省去
     
     
     十二. 进程优先级调整:
              静态优先级:100-139,数字越小,优先级越高
              进程默认启动时的nice值为0,优先级为120,nice值的范围是(-20,19)
     
              nice命令:启动进程时,以指定优先级运行
                nice [OPTION] [COMMAND [ARG]...],例如:nice -n 5 htop
     
              renice命令:对已处于运行态的进程,调整优先级
                renice [-n] priority pid...,例如: renice -n 2 3618
     
              查看:
                ps axo pid,comm,ni
     
     
  • 相关阅读:
    Hadoop Python 调用自定义so动态库
    Golang Redigo连接Redis 简单使用
    Golang 错误 "bad file descriptor"
    Centos Git 安装与升级
    初识数据库
    MySQL介绍,下载和安装
    并发编程:协程
    并发编程:多线程
    并发编程:多进程
    操作系统,进程理论
  • 原文地址:https://www.cnblogs.com/regit/p/7766135.html
Copyright © 2011-2022 走看看