Linux进程管理

bluecarrot 2020-04-20

 一、Linux下存在进程和线程两种操作系统的基本概念。

   Linux系统特性:

1. 以多进程形式,允许同时多个任务

2. 以线程形式,允许单个任务分成不同的部分去运行

3. 锁机制,防止线程资源抢夺。

二、Linux管理进程的命令

1. ps命令

    ps命令用于报告当前系统的进程状态。可以搭配kill指令随时终端、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行状态、进程是否结束、进程有没有僵死,哪些进程占用了过多的资源等等。

    ps不加参数,输出的是当前用户所在终端的进程

   Linux进程管理

    PID:进程标识号

    TTY:进程所属的控制台号码

    TIME:进程使用CPU总的时间

    CMD:正在执行的命令行

    ps -ef 参数

    Linux进程管理

    Linux进程管理

    UID:由该用户执行的进程

    PID:进程标识号

    PPID:进程的父进程标识号

    C:CPU使用的资源百分比

    STIME:进程开始的时间

    TTY:该进程是哪个终端上运行的,若无终端,显示?。tty1-tty6是本机的登录进程,pts/0等表示远程连接。

    TIME:进程使用CPU总的时间

    CMD:正在执行的命令行

    ps -aux

    Linux进程管理

    USER:该进程属于的用户

    PID:该进程号码

    %CPU:进程占用CPU的资源比率

    %MEM:该进程占用CPU的资源比率

     VSZ:进程使用的虚拟内存,单位Kbytes

     RSS:该进程占用固定的内存量,单位Kbytes

     TTY:该进程运行的终端位置

     STAT:进程的目前状态(R运行中;S终端睡眠中,可以被唤醒;D不可中断睡眠;T正在检测或是停止了;Z已停止,无法由父进程正常终止,变成了zombie僵尸进程;+前台进程;|多线程进程;N低优先级进程;<高优先级进程;s进程领导者(含有子进程);L锁定到内存中)

    START:进程启动时间

    TIME:CPU运行时间

    COMMAND:进程命令

    显示指定用户的进程:ps -u root

    Linux进程管理

    显示进程树:ps -eH (-e显示所有进程;-H显示进程树)

    Linux进程管理

2. pstree命令

    pstree指令用ACSII字符显示树状结构,清楚的表达了程序间的相互关系。它能将当前的执行程序已树状结构显示。pstree命令支持指定特定程序PID或使用者USER作为显示的起始。

  Linux进程管理

3. pgrep命令

    pgrep命令是通过程序的名字来查询进程的工具。一般是用来判断程序是否正常进行。

  Linux进程管理

4. kill命令

    kill命令发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程

 Linux进程管理

    常用信号解释

 Linux进程管理

    终止进程:kill默认发送的信号是15,用于终止进程。

  Linux进程管理

   特殊信号0:kill的信号中存在一个特殊信号0,使用kill -0 $pid,代表不发给任何信号给pid,但是会对pid是否存在对应的进程做检查,存在此进程返回0,不存在返回1

 Linux进程管理

5. killall命令

    killall命令:kill杀死进程需要获取进程的pid号,killall命令可以直接通过名字杀死

 Linux进程管理

   杀死所有某用户启动的进程:killall -u 用户名 进程名

   杀死等待进程:killall -w 进程名

6.pkill命令

   pkill命令可以通过进程名终止指定的进程,对比killall杀死进程可能要执行多次,pkill可以杀死进程以及子进程

   通过进程名杀死

  Linux进程管理

   通过终端名杀死进程(检查多个终端使用命令w,pkill的-t参数可以指定终端下的所有进程)

  Linux进程管理

   通过用户名杀死进程:pkill -u 用户名

 Linux进程管理

7. top命令

    top命令用于实时的监控系统处理器的状态,以及各种进程的资源占用情况。还可以按照CPU使用量、内存使用量进行排序显示,以及交互式的命令操作。

   显示进程信息:

  Linux进程管理

   前五行是系统整体的统计信息。

   第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

   08:42:32  当前时间

   up 9min   系统运行时间,格式为时:分

   2 users    当前登录用户数

   load average: 0.00, 0.03, 0.04    系统负载,即任务队列的平均长度.(三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值)

   第二、三行为进程和CPU的信息 

   Tasks: 111                     total 进程总数
   1 running                      正在运行的进程数
   110 sleeping                 睡眠的进程数
   0 stopped                     停止的进程数
   0 zombie                      僵尸进程数
   Cpu(s): 0.0% us           用户空间占用CPU百分比
   0.2% sy                        内核空间占用CPU百分比
   0.0% ni                         用户进程空间内改变过优先级的进程占用CPU百分比
   98.8%                           id 空闲CPU百分比
   0.0% wa                       等待输入输出的CPU时间百分比
   0.0% hi
   0.0% si

   最后两行为内存信息。内容如下:   

   Mem: 1863088k total              物理内存总量
   178572k used                         使用的物理内存总量
   1546084k free                         空闲内存总量
   138432k buff/cache                用作内核缓存的内存量
   Swap: 2097148k total             交换区总量
   0k used                                   使用的交换区总量
   2097148k free                        空闲交换区总量
   1535660k cached                   缓冲的交换区总量

    内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。

    相应的内存再次被换出时可不必再对交换区写入。

 Linux进程管理

    动态进程字段解释如下:    

   PID 进程id
   PPID 父进程id
   RUSER Real
   UID 进程所有者的用户id
   USER 进程所有者的用户名
   GROUP 进程所有者的组名
   TTY 启动进程的终端名。不是从终端启动的进程则显示为
   PR 优先级
   NI nice值。负值表示高优先级,正值表示低优先级
   P 最后使用的CPU,仅在多CPU环境下有意义
   %CPU 上次更新到现在的CPU时间占用百分比
   TIME 进程使用的CPU时间总计,单位秒
   TIME+ 进程使用的CPU时间总计,单位1/100秒
   %MEM 进程使用的物理内存百分比
   VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
   SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
   RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
   CODE 可执行代码占用的物理内存大小,单位kb
   DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
   SHR 共享内存大小,单位kb
   nFLT 页面错误次数
   nDRT 最后一次写入到现在,被修改过的页面数。
   S 进程状态。
   - D=不可中断的睡眠状态
   - R=运行
   - S=睡眠
   - T=跟踪/停止
   - Z=僵尸进程
   COMMAND 命令名/命令行
   WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
   Flags 任务标志,参考

   显示多核不同的CPU信息(进入top命令,按下数字1,查看逻辑CPU的个数):

 Linux进程管理

   按照内存使用量排序(进入top命令,按下M)

 Linux进程管理

   显示进程完整路径:top -c

 Linux进程管理

   设置刷新到的时间(设置top检测信息,几秒钟更新一次):top -d 2

   设置top命令刷新次数:top -n 2 #top命令更新2次后退出

   显示指定的进程信息(检测某一个进程的实时资源使用量):top -p pid

  Linux进程管理

8.nohup命令

   nohup命令可以将程序已忽略挂起信号的方式运行起来,被运行程序的输出信息将不再显示到终端。无论是否将nohup命令的输出重定向到终端,输出都将写入到当前目录的nohup.out文件,如果当前目录的nohup.out文件不可写入,则输出到$HOME/nohup.out文件中。

   nohup直接加命令(让执行命令在当前会话终止后,继续保持运行(用户关闭终端后,程序将结束运行,nohup可以让它一直在后台运行))

  Linux进程管理

   此时关闭终端,再次登录新终端,检查进程和命令的输出

  Linux进程管理

   一般不会去关闭当前窗口,而是nohup命令配合&符号,直接把程序存放后台,如:nohup ping www.baidu.com &

  Linux进程管理

   不显示命令执行结果,直接重定向,如:nohup ping www.baidu.com > mynohup.out 2>&1 &

 Linux进程管理

9.bg命令

   bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加&的效果相同,都是将其放在系统后台执行。

  Linux进程管理

   Linux进程管理

10.runlevel命令

   读取系统/var/run/utmp文件夹定位系统的运行级别记录,然后显示当前系统的执行等级。

    0 :停机
    1 :单用户模式
    2 :多用户模式,无网络
    3 :完全的多用户模式
    4 :用户自定义
    5 :图形界面多用户模式
    6 :重启

    直接输出当前运行模式:runlevel

  Linux进程管理

11. init命令

     init命令是Linux的进程初始化工具,是所有Linux进程的父进程,进程ID号是1。init命令的主要任务是根据配置文件/etc/inittab创建Linux进程

12. glances命令

     glances是一个由python编写,使用psutil库来从系统抓取信息的基于curses开发的跨平台命令行系统监视工具。

     glances可以为Unix和Linux性能专家提供监视和分析性能数据的功能,其中包括:CPU使用率,内存使用情况,内核统计信息和运行队列信息;磁盘I/O速度、传输和读/写比率;文件系统中的可用空间;磁盘适配器;网络I/O速度、传输和读/写比率;页面空间和页面速度;消耗资源最多的进程;计算机信息和系统资源等。

    glances工具可以在用户的终端上实时显示重要的系统信息,并动态的对其进行更新。glances在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。glances工具还可以将相同的数据捕获到一个文件,便于以后对报告进行分心和绘制图形。输出文件可以是电子表格的格式(.csv)或html格式。

   1)安装glances:yum install glances

   2)glance 界面

        glances 是一个命令行工具包括如下命令选项:
                     -b:显示网络连接速度 Byte/ 秒
                     -B @IP|host :绑定服务器端 IP 地址或者主机名称
                     -c @IP|host:连接 glances 服务器端
                     -C file:设置配置文件默认是 /etc/glances/glances.conf
                     -d:关闭磁盘 I/O 模块
                     -e:显示传感器温度
                     -f file:设置输出文件(格式是 HTML 或者 CSV)
                    -m:关闭挂载的磁盘模块
                    -n:关闭网络模块
                    -p PORT:设置运行端口默认是 61209
                    -P password:设置客户端 / 服务器密码
                   -s:设置 glances 运行模式为服务器
                    -t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767
                    -h : 显示帮助信息
                    -v : 显示版本信息

   Linux进程管理

   进程信息字段解释:  

   VIRT: 虚拟内存大小
   RES: 进程占用的物理内存值
   %CPU:该进程占用的 CPU 使用率
   %MEM:该进程占用的物理内存和总内存的百分比
   PID: 进程 ID 号
   USER: 进程所有者的用户名
   TIME+: 该进程启动后占用的总的 CPU 时间
   IO_R 和 IO_W: 进程的读写 I/O 速率
   NAME: 进程名称
   NI: 进程优先级
   S: 进程状态,其中 S 表示休眠,R 表示正在运行,Z 表示僵死状态。
   IOR/s 磁盘读取
   IOW/s 磁盘写入

 3)glances交互式命令:

         h : 显示帮助信息
         q : 离开程序退出
         c : 按照 CPU 实时负载对系统进程进行排序
         m : 按照内存使用状况对系统进程排序
          i: 按照 I/O 使用状况对系统进程排序
         p: 按照进程名称排序
         d : 显示磁盘读写状况
         w : 删除日志文件
          l : 显示日志
         s: 显示传感器信息
          f : 显示系统信息
         1 : 轮流显示每个 CPU 内核的使用情况(次选项仅仅使用在多核 CPU 系统)

  4)glances运行web服务

    (1).安装python的包管理工具pip:yum install python python-pip python-devel gcc

    (2). 安装web模块bottle:pip install bottle

    (3). 启动服务:glances -w

 Linux进程管理

  5)glances服务器/客户端模式

       glances支持C/S模块,可以实现远程监控,而不用登陆另一台服务器

    (1)运行服务端:glances -s -B 0.0.0.0

 Linux进程管理

    (2)客户端连接:glances -c 服务端ip

 Linux进程管理

相关推荐