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

5.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:显示进程树

6.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:显示内存的统计数据

7.jpg

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

 

客户端模式

glances –c  ip

8.jpg

 

dstate命令,系统资源统计

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

-c:显示CPU相关信息

-d:显示disk相关信息

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

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

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

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

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

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

9.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/45981

(0)
fszxxxksfszxxxks
上一篇 2016-09-13 11:17
下一篇 2016-09-13 11:17

相关推荐

  • mariadb基础应用

    mariadb基础应用 一、 前言 MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users …

    Linux干货 2016-12-16
  • Linux基础知识之用户和组管理

    系统环境:    该博文以CentOS6.8_x86_64和CentOS7.2_x86_64系统为基础,Xshell5远程登录CentOS6.8和CentOS7.2系统,分别以root身份和sjsir用户身份登录系统。 学习的重要问题: 一、为什么要学习用户和组?    首先Linux区别于其他的系统的最重要的特性就是…

    Linux干货 2016-08-02
  • 计划任务

              前要:Linux的计划任务主要分为三块。单一的执行一次计划任务,系统自动的选择空闲时间去执行特定的任务, 周期性的执行相关任务,下面就此三块做简要的描述。 一:单一的计划任务at      &nbsp…

    2017-07-01
  • Linux系统压缩和解压缩工具gzip、bzip2、xz以及tar打包工具总结

    在Linux系统使用过程中,对于一些不是常用的文件,利用cpu的时间资源对文件进行压缩可以节省一定的磁盘空间,对系统中某个目录经常会有备份的需求,可以使用Linux系统中的tar打包工具实现,文件的压缩对于大量的网络文件传输可以节约带宽,同时也能降低服务器的负载,我们经常需要从网站下载软件包到本地主机,这些包基本都是打包压缩的,要想使用安装,需要我们解压缩他…

    Linux干货 2016-08-18
  • 0803作业

    课上练习 1.当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?  drwxr-xr–. 14 root root 4096 Aug  3 13:35 /testdir [xiaoming@localhost ~]$ touch /testdir/f1…

    Linux干货 2016-08-04
  • 2016.10.12 成为了马帮的一员!

    未来的6个月内,好好学习天天向上!

    Linux干货 2016-10-19