Linux进程及作业管理

目录

一、Linux进程基本工作模式

二、Linux进程查看及管理的工具

1.pstree

2.ps:process state

3.pgrep, pkill

4.pidof

5.top

6.htop

7.vmstat

8.pmap

9.glances

10.dstat

11.kill命令

三、Linux作业控制

四、进程优先级调整

1.nice

2.renice

回顾

参考资料

一、Linux进程基本工作模式

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

      Process:运行中的程序的一个副本

            存在生命周期

      Linux内核存储进程信息的固定格式:task struct

            多个任务的的task struct组件的链表:task list

      进程创建:

            init

                  父子关系

                  进程:都由其父进程创建

                       fork(), clone()

            进程优先级:

                  0-139:

                       1-99:实时优先级

                       100-139:静态优先级

                             数字越小,优先级越高

                       Nice值:

                             -20,19

                  Big O:O(1), O(logn), O(n), O(n^2), O(2^n)

            进程内存:

                  Page Frame:页框,用存储页面数据

                       存储Page

                       MMU:Memory Management Unit

            IPC:Inter Process Communication

                  同一主机上:

                       signal

                       shm:shared memory

                       semerphor

                  不同主机上:

                       rpc:remote procecure call

                       socket:

      Linux内核:抢占式多任务

            进程类型:

                  守护进程:在系统引导过程中启动的进程,跟终端无关的进程

                  前台进程:跟终端相关,通过终端启动的进程

                       注意:也可把在前台启动的进程送往后台,以守护模式运行

            进程状态:

                  运行态:running

                  就绪态:ready

                  睡眠态:

                       可中断:interruptable

                       不可中断:uninterruptable

停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped

                  僵死态:zombie

            进程的分类:

                  CPU-Bound

                  IO-Bound

二、Linux进程查看及管理的工具

pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

1.pstree

pstree - display a tree of processes

2.ps:process state

ps - report a snapshot of the current processes

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

      ps [OPTION]...

            选项:支持两种风格

常用组合:aux

                       u:以用户为中心组织进程状态信息显示

                       a:与终端相关的进程

                       x:与终端无关的进程

                            ~]# ps aux

USER  PID %CPU %MEM  VSZ   RSS TTY    STAT START   TIME COMMAND

USER:进程属组

                                   VSZ:Virtual memory SiZe,虚拟内存集

                                   RSS:ReSident Size, 常驻内存集

                                   TIME:累计运行时长

                                   STAT:进程状态

                                         R:running

                                         S:interruptable sleeping

                                         D:uninterruptable sleeping

                                         T:stopped

                                         Z:zombie

 

                                         +:前台进程

                                         l:多线程进程

                                         N:低优先级进程

                                         <:高优先级进程

                                         s:session leader

常用组合:-ef

                       -e显示所有进程

                       -f显示完整格式程序信息

常用组合:axZ       

常用组合:-eFH

                       -F显示完整格式的进程信息

                       -H以进程层级格式显示进程相关信息

常用组合:-eo, axo      自定义显示信息

                  -eo pid, tid, class, rtprio, ni, pri, psr, pcpu, stat, comm

                  axo stat, euid, ruid, tty, tpgid, sess, pgrp, ppid, pid, pcpu, comm

 

                                   ni:nice值

                                   pri:priority,优先级

                                   psr:processor, CPU

                                   rtprio:实时优先级

3.pgrep, pkill

      pgrep [options] pattern

pkill [options] pattern

                   -u uid:effective user

                   -U uid:real user

                   -t terminal:与指定终端相关的进程

                   -l:显示进程名

                   -a:显示完整格式的进程名

                   -P pid:显示其父进程为此处指定的进程的进程列表

4.pidof

根据进程名获取其PID

5.top

排序:

P:以占据的CPU百分比

M:占据内存百分比

T:累积占据CPU时长

首部信息显示:

      uptime信息:l命令

      tasks及cpu信息:t命令

        cpu分别显示:1 (数字)

      memory信息:m命令

退出命令:q

修改刷新时间间隔:s

    终止指定进程:k

选项:

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

    -b:以批次方式

    -n #:显示多少批次

6.htop

    选项:

         -d #:指定延迟时间

         -u UserName:仅显示指定用户的进程

         -s COLOMN:以指定字段进行排序

    命令:

          s:跟踪选定进程的系统调用

          l:显示选定进程打开的文件列表

          a:将选定的进程绑定至某指定CPU核心

          t:显示进程树

        注意:Fedora-EPEL源

7.vmstat

      虚拟内存状态

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:interrupts, 中断速率

                       cs:context switch, 进程切换速率

                  cpu:

                       us:用户空间占据CPU比例

                       sy:内核空间占据CPU比例

                       id:空闲比例

                       wa:等待IO完成消耗的比例

                       st:被虚拟化技术用走的比例

            选项:

                  -s:显示内存的统计数据

8.pmap

      报告进程内存映射表

pmap - report memory map of a process

      pmap [options] pid [...]

            -x:显示详细格式的信息;

另外一种实现:

      # cat /proc/PID/maps

9.glances

      基于C/S架构

      glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]

      内建命令:

a  Sort processes automatically     l  Show/hide logs

c  Sort processes by CPU%           b  Bytes or bits for network I/O

m  Sort processes by MEM%           w  Delete warning logs

p  Sort processes by name           x  Delete warning and critical logs

i  Sort processes by I/O rate       1  Global CPU or per-CPU stats

d  Show/hide disk I/O stats         h  Show/hide this help screen

f  Show/hide file system stats      t  View network I/O as combination

n  Show/hide network stats          u  View cumulative network I/O

s  Show/hide sensors stats          q  Quit (Esc and Ctrl-C also work)

y  Show/hide hddtemp stats

常用选项:

            -b:以Byte为单位显示网卡数据速率

            -d:关闭磁盘I/O模块

            -f /path/to/somefile:设定输入文件位置

            -o {HTML|CSV}:输出格式

            -m:禁用mount模块

            -n:禁用网络模块

            -t #:延迟时间间隔

            -1:每个CPU的相关数据单独显示

      C/S模式下运行glances命令:

            服务模式:

                  glances -s -B IPADDR

                  IPADDR:指明监听本机哪个地址

            客户端模式:

                  glances -c IPADDR

                  IPADDR:要连入的服务器端地址

10.dstat

      vmstat的替代工具,生成系统资源统计数据

dstat [-afv] [options..] [delay [count]]

            -c:显示cpu相关信息

                  -C #,#,...,total

            -d:显示disk相关信息

                  -D total,sda,sdb,...

            -g:显示page相关统计数据

            -l:显示负载load相关统计数据

            -m:显示内存memory相关统计数据

            -n:显示数据包交换速率相关统计数据

            -p:显示process相关统计数据

            -r:显示io请求相关的统计数据

            -s:显示swapped相关的统计数据

            --tcp

            --udp

            --unix

            --raw   显示裸套接字相关信息

            --socket

            --ipc显示进程间通信相关数据

            --top-cpu:显示最占用CPU的进程

            --top-io:显示最占用io的进程

            --top-mem:显示最占用内存的进程

            --top-lantency:显示延迟最大的进程

11.kill命令

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

      显示当前系统可用信号:

            # kill -l

            # man 7 signal

常用信号:

            1) SIGHUP:无须关闭进程而让其重读配置文件

            2) SIGINT:中止正在运行的进程;相当于Ctrl+c

            9) SIGKILL:杀死正在运行的进程

            15) SIGTERM:终止正在运行的进程

            18) SIGCONT

            19) SIGSTOP:使进程处于停止态

指定信号的方法:

            ①信号的数字标识;1, 2, 9

            ②信号完整名称;SIGHUP

            ③信号的简写名称;HUP

 

向进程发信号:

            kill [-SIGNAL] PID...

      终止“名称”之下的所有进程:

            killall [-SIGNAL] Program

      重读配置文件

三、Linux作业控制

      jobs

      前台作业:通过终端启动,且启动后一直占据终端

      后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)

如何让作业运行于后台?

运行中的作业

                       Ctrl+z

尚未启动的作业         # COMMAND &

此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:

            # nohup COMMAND &

      查看所有作业:

                  # jobs

作业控制:

            # fg [ [%] JOB_NUM]:把指定的后台作业调回前台;

            # bg [ [%] JOB_NUM]:让送往后台的作业在后台继续运行;

            # kill [ %JOB_NUM]:终止指定的作业,P.S.此处%不能省

四、进程优先级调整

      静态优先级:100-139

      进程默认启动时的nice值为0,优先级为120;

1.nice

      启动进程时以指定优先级运行

      nice [OPTION] [COMMAND [ARG]...]

2.renice

      renice [-n] priority pid...

            查看:ps axo pid,comm,ni

回顾

      Linux基础:

            CPU:timeslice

            Memory:线性地址空间

            I/O:

                  分时复用

            《Linux内核设计与实现》,《深入理解Linux内核》

      进程查看工具:pstree, ps, pgrep, pidof, top, htop

      进程管理工具:pmap, glances, vmstat, dstat, kill, jobs, bg, fg, nice, renice, pidof

            未涉及到的命令:sar, tsar, iostat, iftop

      博客作业:进程管理工具top/htop/glances/dstat的使用

参考资料:

马哥随堂笔记

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

猜你喜欢

转载自blog.csdn.net/RaBo123/article/details/82829744
今日推荐