zoukankan      html  css  js  c++  java
  • 进程管理

    进程管理
    知识要点
    认识进程
    进程和程序的关系
    进程相关操作
    查看系统性能
    进程是什么
    程序
    保存在硬盘、光盘等介质中的可执行代码和数据
    是静态保存的代码
    进程
    在CPU及内存中运行的动态执行的程序代码
    进程是程序运行的实例
    同一个程序可能对应多个进
    子进程和父进程
    INIT进程是系统中第一个进程,PID永远是1
    [root@localhost ~]# ps -f
    UID PID PPID  C STIME TTY TIME CMD
    root     10872 10870 0 13:17 pts/3 00:00:00 -bash
    root     11267 10872 0 16:36 pts/3 00:00:00 bash
    进程相关操作
    PS命令
    用途:查看静态的进程统计信息
    格式:ps aux
    ps -elf
    常用命令选项
    • ax:显示所有进程信息
    • u:使用以用户为主的格式输出进程信息
    • -e:显示系统内的所有进程信息
    • -l:使用长格式显示进程信息
    • -f:使用完整的格式显示进程信息
    ps aux:
    • USER 进程的用户;
    • PID 进程的ID;
    • %CPU 进程占用的CPU百分比;
    • %MEM 占用内存的百分比;
    • VSZ 该进程使用的虚拟内存量(KB);
    • RSS 该进程占用的物理内存量(KB);
    • TTY 该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程;
    • STAT 进程状态
    • START 该进程启动时间;
    • TIME 该进程实际使用CPU运行的时间;
    • COMMAND 命令的名称和参数;
    ps -elf:
    • F 进程的flag, 4 代表使用者为 super user
    • S 进程状态
    • UID 进程的用户;
    • PID 进程的ID;
    • PPID 父进程的ID
    • C CPU利用率,以整数表示
    • PRI Priority的缩写
    • NI Nice的缩
    • PRI/NI 代表此进程被 CPU 所执行的优先顺序,数值越小代表该进程越快被 CPU 执行。
    • ADDR 指出该进程内存的地址,如果是 running的程序,一般就是 "-"
    • SZ 占用内存大小;
    • WCHAN 是否正在运作当中,若为 - 表示正在运作
    • STIME 进程的启动时间
    • TTY 该进程在哪个终端上运行(登陆者的终端位置)
    • TIME 该进程实际使用CPU运行的时间;
    • CMD 命令的名称和参数;
    top命令
    用途:查看动态的进程排名信息
    P:按%CPU排序
    M:按%MEM排序
    空格:马上刷新
    [root@localhost ~]# top
    top - 06:08:48 up 4 days, 6:57, 1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.3% us, 0.7% sy, 0.0% ni, 97.4% id, 0.4% wa, 0.1% hi, 1.1% si
    Mem: 191228k total, 171424k used, 19804k free, 19436k buffers
    Swap: 265064k total, 1284k used, 263780k free, 120480k cached
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
     6779 root      16 0 2536 832 668 R  3.8 0.4 0:00.04 top
     1 root      16 0 2648 604 520 S  0.0 0.3 0:13.54 init
     2 root      34 19 0 0 0 S  0.0 0.0 0:00.07 ksoftirqd/0
    top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
    • 01:06:48 当前时间
    • up 1:22 系统运行时间,格式为时:分
    • 1 user 当前登录用户数
    • load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
    w和uptime 命令也能看到这些信息
    Tasks:
    29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0%st
    • total 进程总数
    • running 正在运行的进程数
    • sleeping 睡眠的进程数
    • stopped 停止的进程数
    • zombie 僵尸进程数
    • Cpu(s):
    • 0.3%us 用户空间占用CPU百分比
    • 1.0% sy 内核空间占用CPU百分比
    • 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    • 98.7% id 空闲CPU百分比
    • 0.0% wa 等待输入输出的CPU时间百分比
    • 0.0%hi:硬件CPU中断占用百分比
    • 0.0%si:软中断占用百分比
    • 0.0%st:虚拟机占用百分比
    Mem:
    191272k total, 173656k used, 17616k free, 22052k buffersSwap: 192772k total, 0k used, 192772k free, 123988k cached
    • Mem:
    • 191272k total 物理内存总量
    • 173656k used 使用的物理内存总量
    • 17616k free 空闲内存总量
    • 22052k buffers 用作内核缓存的内存量
    • Swap:
    • 192772k total 交换区总量
    • 0k used 使用的交换区总量
    • 192772k free 空闲交换区总量
    • 123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
    相关信息
    • PID 进程id
    • USER 进程所有者的用户名
    • PR 优先级
    • NI 负值表示高优先级,正值表示低优先级
    • VIRT 进程使用的虚拟内存总量,单位kb
    • RES 进程使用的、未被换出的物理内存大小,单位kb
    • SHR 共享内存大小,单位kb
    • S 进程状态
    • %CPU 使用的CPU百分比
    • %MEM 使用的物理内存百分比
    • TIME+ 使用的CPU时间总计,单位1/100秒
    • COMMAND 命令名
    pstree命令
    用途:以树型结构显示各进程间的关系
    常用命令选项:
    [root@localhost ~]# pstree -p
    init,1
      ├─acpid,2866
      ├─atd,3060
      ├─auditd,2516
      │   ├─python,2518 /sbin/audispd
      │   └─{auditd},2517
      ├─automount,2842
    ……
    pgrep命令
    用途:根据特定条件查询进程PID信息
    常用命令选项:
    [root@localhost ~]# pgrep "init"
    1
    [root@localhost ~]# pgrep -l "log"
    2538 syslogd
    2541 klogd
    3221 login
    [root@localhost ~]# pgrep -l -u teacher -t tty1
    27483 bash
    27584 vim
    进程的状态
    • D 无法中断的休眠状态(通常 IO 的进程);
    • R 正在运行,在可中断队列中;
    • S 处于休眠状态,静止状态;
    • T 停止或被追踪,暂停执行;
    • W 进入内存交换(从内核2.6开始无效);
    • X 死掉的进程;
    • Z 僵尸进程不存在但暂时无法消除;
    • W: 没有足够的记忆体分页可分配
    • WCHAN 正在等待的进程资源;
    • <: 高优先级进程
    • N: 低优先级进程
    • L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
    • s 进程的领导者(在它之下有子进程);
    • l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
    • + 位于后台的进程组;
    进程优先级设置
    Linux内核的基本任务是调度进程
    每个进程受两个参数影响其调度
    优先级(priority):内核控制动态变化
    • 值越小越早被cpu执行
    • 用户无法直接调整数值大小
    niceness:表示进程可被执行的优先级的修正数值 ,可手工修改
    • 与priority有关
    • 优先级有正负之分(-20 -19)
    • 加入nice值后 PRI(新) = PRI(老) + nice
    • root可以设置nice值范围(-20 - 19)
    • 普通用户可以设置nice值范围(0- 19)
    nice值越大,优先级越低
    用nice命令新的nice(新开启的进程)
    • 以新的nice来启动命令
    • nice -10 vi & 设置nice值为10
    • nice --10 vi & 设置nice值为-10
    用renice命令设置新nice(已经存在的进程)
    • renice 10 15132 设置nice值为10
    • renice -10 15132 设置nice值为-10
    用top命令修改进程的优先级
    • 先输入r,然后输入pid,最后输入优先级
    作业控制
    手工启动
    • 前台启动:用户输入命令,直接执行程序
    • 后台启动:在命令行尾加入“&”符号
    [root@localhost ~]# cp /dev/cdrom mycd.iso &
    [1] 28454 //后台作业号为1,PID号为28454
    jobs命令查看作业
    • +:最新放到后台的进程
    • - :仅次于最新放到后台的进程
    fg命令
    • 将处于后台的进程恢复到前台运行,需指定作业号
    • 不指定作业号,将恢复有“+”标记的进程
    [root@localhost ~]# jobs
    [1]-   Stopped                 cp /dev/cdrom mycd.iso 
    [2]+  Stopped                 top
    [root@localhost ~]# fg 1
    Ctrl + Z组合键
    • 将当前进程挂起,即调入后台并停止执行
    bg命令
    • 将后台停止的进程,在后台重新运行
    kill命令
    软中断信号,简称信号。
    是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
    • kill -l列出Linux系统支持的信号种类
    发送信号的原因
    • 硬件异常
    • 软件状态
    • 终端中断
    kill命令用来发送信号
    • kill -信号代码 PID
    进程收到信号后采取的行动
    • 终止
    • 忽略信号
    • 挂起
    用户常用的信号
    信号值
    符号
    行为
    2
    SIGINT
    ctrl+c
    9
    SIGKILL
    请求终止(不能忽略)
    15
    SIGTERM
    请求终止(默认值)
    20
    SIGTSTP
    ctrl+z
    kill命令取消后台作业
    • kill -9 PID
    • kill -9 %作业号
    命令
    行为
    jobs
    列出后台作业
    fg[N]
    将后台作业调到前台
    Ctrl+Z
    挂起当前进程,放到后台停止运行
    bg[N]
    启动在后台挂起的进程
    kill %N
    终止后台作业
    kill、killall命令
    • kill用于终止指定PID号的进程
    • killall用于终止指定名称的所有进程
    [root@localhost ~]# pgrep -l "portmap"
    2869  portmap
    [root@localhost ~]# kill  -9  2869
    [root@localhost ~]# killall -9 vim
    [1]-  已杀死               /usr/bin/vim file1
    [2]-  已杀死               /usr/bin/vim file2
    pkill命令
    pkill命令
    • 用途:根据特定条件终止相应的进程
    常用命令选项:
    • -u:根据进程所属的用户名终止相应进程
    • -t:根据进程所在的终端终止相应进程
    [root@localhost ~]# w | grep -v "root"
    14:10:10 up  6:08, 4 users,  load average: 0.00, 0.01, 0.00
    USER TTY FROM LOGIN@   IDLE JCPU PCPU WHAT
    teacher  tty1     - 14:04 5:34 0.16s  0.16s -bash
    hack      pts/1 173.17.17.174 14:05 4:32 0.17s  0.17s -bash 
    [root@localhost ~]# pkill -9 -t pts/1
    [root@localhost ~]# w | grep -v "root"
     14:12:22 up  6:10, 3 users,  load average: 0.00, 0.00, 0.00
    USER TTY FROM LOGIN@   IDLE JCPU PCPU WHAT
    teacher  tty1     - 14:04 7:46 0.16s  0.16s -bash
    系统性能监控 —— 查看内存使用情况
    cache:缓存从硬盘读取出来的数据
    buffer:缓存需要写入硬盘的数据
    free命令
    • 显示系统的物理内存和交换空间的使用情况
    • -m:以MB的形式显示内存信息
    [root@localhost ~]# free
                          total       used       free     shared    buffers     cached
    Mem: 515600 211320 304280 0 27264 145852
    -/+ buffers/cache: 38204 477396
    Swap: 1048568 0 1048568
    top命令
    Mem: 1035140k total, 1020560k used, 14580k free, 86504k buffers
    Swap: 522104k total, 0k used, 522104k free, 771528k cached
    内存监控
    • /proc/meminfo文件
    [root@localhost ~]# cat /proc/meminfo
    MemTotal: 1035140 kB
    MemFree: 15064 kB
    Buffers: 86204 kB
    Cached: 771528 kB
    /proc/sys/vm/drop_caches (since Linux 2.6.16) 
         Writing  to  this  file  causes the kernel to drop clean caches, 
          dentries and inodes from memory, causing that memory  to  become free.
          To  free  pagecache, use echo 1 > /proc/sys/vm/drop_caches;
        to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches; 
        to   free   pagecache,   dentries  and  inodes, use echo 3 > 
     /proc/sys/vm/drop_caches.
             Because this is a non-destructive operation  and  dirty  objects              
             are not freeable, the user should run sync(8) first.
    /proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存
    CPU性能
    • uptime:运行时间,登录用户数,CPU平均负载
    • top:
    iostat命令
    • 用于查看系统磁盘I/O统计信息
    • 由软件包sysstat-7.0.0-3.el5.i386.rpm提供
    • sysstat还提供了 mpstat 命令,用于显示进程负载信息
    [root@localhost ~]# iostat -dkt 5
    Linux 2.6.18-8.el5 (localhost.localdomain) 20090524
    Time: 161749
    Device:         tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               1.28 15.12 6.54 167183 72314
    sdb               0.83 11.95 1.95 132182 21526
    dm-0 2.40 14.95 6.54 165325 72312
    dm-1 0.01 0.04 0.00 456 0
    hdc                0.02 0.07 0.00 746 0
    网口资源的信息:
    [root@localhost ~]# ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:43:F8:FD 
              inet addr:172.16.88.188  Bcast:172.16.255.255  Mask:255.255.0.0
              inet6 addr: fe80::20c:29ff:fe43:f8fd/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
     RX packets:230179 errors:0 dropped:0 overruns:0 frame:0
     TX packets:23470 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
     RX bytes:17195989 (16.3 MiB) TX bytes:18550956 (17.6 MiB)

    [root@localhost ~]# ethtool eth0
    Settings for eth0:
    	Supported ports: [ TP ]
    	Supported link modes: 10baseT/Half 10baseT/Full 
     100baseT/Half 100baseT/Full 
     1000baseT/Full 
    	Supported pause frame use: No
    	Supports auto-negotiation: Yes
    	Advertised link modes: 10baseT/Half 10baseT/Full 
     100baseT/Half 100baseT/Full 
     1000baseT/Full 
    	Advertised pause frame use: No
    	Advertised auto-negotiation: Yes
    	Speed: 1000Mb/s
    	Duplex: Full
    	Port: Twisted Pair
    	PHYAD: 0
    	Transceiver: internal
    	Auto-negotiation: on
    	MDI-X: off (auto)
    	Supports Wake-on: d
    	Wake-on: d
    	Current message level: 0x00000007 (7)
    			       drv probe link
    	Link detected: yes
    [root@localhost ~]# mpstat
    Linux 2.6.18-8.el5 (localhost.localdomain) 20090525
    051811CPU %user  %nice  %sys %iowait  %irq  %soft  %steal  %idle  intr/s
    051811秒  all  0.45 0.02 1.93 3.08 0.02 0.07 0.00 94.43 1010.03
    [root@localhost ~]# mpstat
    Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 01/08/2019 	_x86_64_	(4 CPU)

    02:18:18 PM CPU %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    02:18:18 PM  all    0.20 0.00 0.14 0.23 0.00 0.02 0.00 0.00 99.41
    /、查看某一块核

    [root@localhost ~]# mpstat -P 1
    Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 01/08/2019 	_x86_64_	(4 CPU)

    02:18:57 PM CPU %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    02:18:57 PM 1 0.73 0.00 0.16 0.13 0.00 0.05 0.00 0.00 98.93

    sar
    查看网络流量资源信息
    [root@localhost ~]# sar -n DEV
    本章总结
    理解进程的概念
    掌握基本的进程查看命令
    掌握进程优先级的配置
    掌握管理作业的相关命令
    查看CPU信息:
    top
    ps -ef
    ps -aux
    mpstat
    cat /proc/cpuinfo
    内存:
    top
    iostat -x
    vmstat
  • 相关阅读:
    OpenStack--Rabbitmq组件消息队列
    Redis-主从
    haproxy mycat mysql 读写分离MHA高可用
    mysql小白系列_14 线上故障分析与排错
    mysql小白系列_13 Online DDL
    mysql小白系列_12 sysbench
    mysql小白系列_11 MHA补充
    mysql小白系列_11 MHA
    mysql小白系列_10 mysql主从复制原理
    mysql小白系列_09 mysql性能优化关键点
  • 原文地址:https://www.cnblogs.com/qluzzh/p/10306209.html
Copyright © 2011-2022 走看看