Linux运维之进程管理

一、进程概念

进程是内核的一个功能,在Linux中,运行一个程序或命令可以出发一个事件而驱动一个PID,在linux系统中,系统只识别二进制程序文件,我们可以通过执行系统上的二进制程序来运行程序,进而产生进程。在linux系统中第一个进程是init程序,它是系统开机第一个加载的程序,用来支撑系统的正常运行的一个程序,内核启动的一个用户级进程。

 

1.进程优先级

         进程优先级被分为系统优先级和实时优先级

         系统优先级:数字越小,优先级越高

         0-139(老版本操作系统如4,5

         各有140个运行队列和过期队列,当一个进程支执行完成后会将进程放到过期队列上来,如果一个进程的优先级低,进程执行了一会,系统将会把它丢到过期队列当中来。

         实时优先级:99-0:值越大优先级越高

 

         nice值:-2019对应系统优先级100-13999

 

2.进程状态

         linux中,进程是抢占式多任务的,进程的类型被分为:

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

         前台进程:跟终端有关,通过终端启动的进程;需要注意的是,也可以吧前台启动的进程送往后台,以守护模式运行。

 

运行态: running进程正在运行中

就绪态:ready

睡眠态:sleeping

            可中断:interruptable

            不可中断:uninterruptable,通常是指被IO阻塞的进程,等待IO满足之前无法继续运行

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

僵死态:zombie,进程结束,父进程结束前,子进程不关闭

根据进程占用资源的多少可以将进程分为:

CPU密集型:对CPU占用率高的进程

IO密集型:等待I/O时间长的进程

 

 

3.进程管理

linux系统中,有很多的进程都在运行,但其中有一个程序很重要,那该如何让这个最重要的程序先运行呢,所以这些情况下,我们都应该先查询系统当前运行的进程,此时我们可以通过一些进程的管理工具来获得进程的管理工具有:toppstreepspidofpgreppkillhtopglancespmapvmstatedstatiostatsarkilljobsbgfg

 

pstree:以显示当前系统上的进程树

 

psprocess state 进程状态

默认显示当前终端中的进程

命令格式:ps [options]

-a:所有与终端有关的进程

-x:所有与终端无关的进程,通常与-a选项一起使用,可列出教完整信息

-u:显示与进程所有者的信息

-f:显示进程的父进程

-l:较长、教详细的将该PID信息列出

-o 显示指定的信息如 pid(进程号),comm(命令),%cpucpu占用百分比),%mem(内存占用百分比),state(进程状态),tty(终端),euser(进程生效者),ruser(进程真正执行者)

组合选项

-ef

           -e:显示所有进程

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

-eFH

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

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

 

ps显示字段解释

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

root          1  0.0  0.0  19352  1552 ?        Ss   15:41   0:01 /sbin/init

root          2  0.0  0.0      0     0 ?        S    15:41   0:00 [kthreadd]

root          3  0.0  0.0      0     0 ?        S    15:41   0:00 [migration/0]

root          4  0.0  0.0      0     0 ?        S    15:41   0:00 [ksoftirqd/0]

root          5  0.0  0.0      0     0 ?        S    15:41   0:00 [stopper/0]

root          6  0.0  0.0      0     0 ?        S    15:41   0:00 [watchdog/0]

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

—————————————————————————————————————————–

USER:用户

PID:进程ID

%CPU:占用cpu百分比

%MEM:占用内存百分比

VSZVirtual memory Size,虚拟内存集,线性内存

RSSReSident Size,常驻内存及

STAT:进程状态

Rrunning

s:interruptable sleeping

D:uninterruptable sleeping

T:stopped

Z:zombie

+:前台进程

l:多线程进程

N:低优先级进程

<:高优先级进程

ssession leader,会话进程首进程

START:进程起始时间

TIME:进程运行时长

COMMAND:运行进程的命令

ninice

pripriority优先级

psrprocessor,cpu编号

rtprio:实时优先级

 

 

pgrep 搜索进程

pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,…] [-g pgrp,…] [-s sid,…] [-u euid,…] [-U uid,…] [-G gid,…] [-t term,…] [pattern]

           

-u uid:进程生效者

-U uid:进程真正发起者(比如我普通用户运行passwd运行,可执行程序passwdsuid它是以root的身份来运行程序,但进程真正的发起者是普通用户)

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

-l:显示进程名

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

-p pid:显示指定进程的子进程

 

示例:

pgrep  -u   hadoop  查找生效者是hadoop用户的进程

pgrep  -t  pts/2

 

 

 

pidof  根据程序名查找pid

命令格式:pidof [-s] [-c] [-x] [-m] [-o omitpid] [-o omitpid..]  program [program..]

pidof bash

 

uptime

显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1510分钟的分军服在,一般不会超过1

系统平均负载:在特定时间间隔内运行队列中的平均进程数

 

如果每个CPU内核当前活动的进程数不大于3,那么系统新能良好,如果CPU内核任务数大于5,这台机器性能有严重问题,如果主机是一个双核CPU的话,当Load Average6的时候说明机器已经被充分使用了

20:49:12 up  5:07,  3 users,  load average: 0.00, 0.02, 0.05

 

4.进程管理工具

 top

1.jpg

top栏位信息介绍

us:用户空间

sy:内核控件

ni:调整nice时间

id:空闲

waI/O等待时间

hi:硬终端

si:软终端(模式切换)

st:被偷走的时间

 

PID:任务的进程ID

PPID:父进程ID

RUSER:进程真正执行者

UID:任务所有者ID

USER:任务所有者名称

GROUP:任务所有者群组名

TTY:终端

PR:优先级

%CPUCPU使用率

%MEM:内存使用率

S:进程状态

TIME+:CPU时间,精确到秒

 

top命令有许多命令,当我们执行top命令后,在交互界面敲一下键会显示不同的效果

排序

P:以占据CPU百分比排序 %CPU

M:以占据内存百分比排序 %MEM

T:累计占据CPU时长,TIME+

 

首部信息显示:

uptime信息: l命令

taskscpu信息:t命令

cpu分别显示:1(数字)

memory信息: m命令

退出命令:q

修改刷新时间间隔: s  #

终止指定进程: k  pid

保存文件:W,默认保存在/root/.toprc文件中

 

选项:

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

-b:以批次方式显示

-n #:显示多少批次

 

htop命令该命令系统默认不会安装,需要从epel源上安装htop命令

命令格式:   htop [-dChusv]

选项:

-d # :指定延迟时间

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

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

 

子命令:(在执行htop命令后在进入界面输入一下子命令)

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

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

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

t:显示进程树

2.jpg

 

5.内存工具

vmstate命令:虚拟内存信息

vmstat[options] [delay [count]]

vmstat 2  5每两秒显示一次,一共显示五次,然后退出

procs ———–memory———- —swap-– —–io-— —system— —–cpu—–

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 1  0      0 1169128  32640 403716    0    0     8     1   12    9  0  0 100  0  0        

 1  0      0 1169048  32640 403720    0    0     0     0   37   26  0  0 100  0  0        

 0  0      0 1169048  32648 403720    0    0     0     6   46   48  0  0 100  0  0        

 0  0      0 1169112  32648 403720    0    0     0    16   42   33  0  0 100  0  0        

 1  0      0 1169112  32648 403720    0    0     0     0   40   26  0  0 100  0  0        

栏位信息

procs

r:等待运行的进程个数,和核心数有关

b:处于不可中断睡眠态的进程个数(被阻塞的队列长度)

 

memory

         swap:交换内存的使用总量

         free:空闲屋里内存总量

         buffer:用于缓冲的内存总量

         cache:用于缓存的内存总量

 

swap

         si:从磁盘交换内存的数据速率(kb/s

         so:从内存交换至磁盘的数据速率(kb/s

 

io

         bi:从块设备读入数据到系统的速率(kb/s

         bo:保存数据到块设备的速率(kb/s

 

system

         ininterrupts,中断速率,包括时钟

         cscontext switch,进程切换速率

 

cpu

      us:用户空间

sy:内核控件

ni:调整nice时间

id:空闲

waI/O等待时间

hi:硬终端

si:软终端(模式切换)

st:被偷走的时间

 

选项

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

 

pmap:进程对应的内存映射

命令格式:pmap [ -x | -d ] [ -q ] pids…

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

或者查看文件来显示此信息

cat /proc/pid/pmap      pid进程编号

 

 

系统监控工具

glances

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

 

选项

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

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

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

-o {html|csv}:输出格式

-m:禁用mount模块

-n:禁用网络模块

-t #:延迟时间间隔

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

      

C/S模式下运行glances

服务模式:

glances –s –B ip

 4.jpg

客户端模式

glances –c  ip

3.jpg

 

dstate命令,系统资源统计

命令格式: dstat [-afv] [options..] [delay [count]]

-c:显示CPU相关信息

-d:显示disk相关信息

-g:显示page相关统计信息

-m:显示内存相关统计信息

-n:显示网络相关统计信息

-p:显示进程相关统计信息

-r:显示io请求相关的同属数据

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

5.jpg

 

6. 进程管理工具

重要的信号

1SINGHUP:让一个进程不用重启就可以重读其配置文件,并让新的配置信息生效

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

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

15)SINGTERM:终止正在运行的进程,正常结束进程

18)SINGCONT:继续运行一个进程

19)SINGSTOP:后台休眠

指定信号的方法:

信号的数字标识:1,2,9

信号完整名称:SIGHUP

信号简写名称:HUP

 

杀死进程

kill命令

命令格式kill [-s signal|-p] [–] pid..

示例:

kill  -1    120  使用1号信号重读该进程的配置文件

kill  -9    120  强制杀死该进程

 

killall  command(当某个命令运行多个进程时,想杀死该命令产生的全部进程)

 

pkill

命令格式:pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,…] [-g pgrp,…] [-s sid,…] [-u euid,…] [-U uid,…] [-G gid,…]

-SIGNAL

-u uid: 生效者

-U uid real user ,进程真正发起者

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

-l:显示进程名

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

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

 

示例:

pkill  -u   hadoop

pkill  -t   pts/3  

 

二、作业管理

Linux的作业控制

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

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

 

运行中的作业 ctrl+z让作业运行与后台

command & 作业未启动是执行此操作让作业进入后台

后台作业虽然被送往后台运行,但依然与终端相关,退出终端,将关闭后台作业。

nohup command     screen command 剥离与终端的关系,即使终端断开,也依然运行

 

jobs:查看所有作业

[root@server ~]# jobs

[1]   Stopped                 vim

[2]-  Stopped                 find / -name a

[3]+  Stopped                 vim

 

1.作业控制

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

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

kill [%JOB_NUM]:终止指定的作业

 

当工作中需要同时运行多个进程,提高工作效率,可以这么干

 

vi all.sh

f1.sh&

f2.sh&

f3.sh&

(f1.sh&);(f2.sh&);(f3.sh&)

{ f1.sh& f2.sh& f3.sh& }

 

2.进程优先级调整

进程是存在优先级的,所谓优先级是指被执行的顺序,优先级越高,被执行的顺序越靠前,反之,越靠后

静态优先级:100-139

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

只有根用户才能降低nice值(提高优先性)

 

进程优先级的调整方法

nice命令

命令格式:nice [OPTION] [COMMAND [ARG]…] (程序未启动时)

nice  -n  -10   pid

 

renice

命令格式:renice [-n] priority [[-p] pid …] [[-g] pgrp …] [[-u] user …]

renice –n  -10  pid   (进程已经运行)

 

 

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/44777

(0)
fszxxxksfszxxxks
上一篇 2016-09-09
下一篇 2016-09-09

相关推荐

  • Linux系统程序包管理—rpm

     概述:      本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装 一、软件运行环境     1.□API:Application Programming Interface (应用程序开发接口)         &n…

    Linux干货 2016-09-01
  • Linux之sed的使用

    sed的工作原理         sed是一种流编辑器以行为单位来处理文本的一款功能十分强大的编辑器,一次只处理一行内容,当处理文本是,将要处理的行放置在模式空间里(缓冲区),接下来sed命令处理模式空间里的内容,处理完成后,把模式空间里处理后的内容送至屏幕打印输出,接下来处理下…

    Linux干货 2016-08-09
  • 几种常见开源协议

    几种常见的开源协议: 一、GPL详解: 在自由软件所使用的各种许可证之中,最为人们注意的也许是通用公开许可证(General Public License,简称GPL)。 GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 GPL还规定:只要这…

    Linux干货 2016-07-12
  • RPM总结(一)

    软件包基础软件包运行环境硬件、内核、应用程序的关系包管理器程序包管理器Linux不同系统上的包管理器RPM的优点rpm包命名方式一般源代码的命名rpm包的命名rpm包的分类与拆包包管理工具RPM包管理器:程序包管理器:获取程序包的途径:rpm包管理CentOS系统上使用rpm命令管理程序包:安装升级:降级降级实例more 软件包基础 包管理过程中,最常用的操…

    Linux干货 2016-08-24
  • 学习宣言

    不积跬步无以至千里,不积小流无以成江海。 在Linux的世界,我还只是一个顽童,我会通过我的努力证明,我可以攀登峻峰,笑看风云!

    Linux干货 2016-12-28
  • ☞Linux进程管理与性能分析

    Linux进程管理与性能分析 概述 系统维护的一个重要工作就是监控Linux系统的运行状态是否正常,分析系统资源的使用情况,进而对系统进行优化,提高其性能。在实际环境中,系统稳定性尤为重要,可以说系统的稳定性关系到企业的存亡。因此,第一时间掌握CPU、Memory、IO、Network的等系统资源的状态则可以在系统出现问题时及时解决,把损失降到最低。&nbs…

    Linux干货 2016-09-11