您的位置:首页 > 运维架构 > Linux

Linux运维之进程管理

2016-09-09 19:23 302 查看
一、进程概念

进程是内核的一个功能,在Linux中,运行一个程序或命令可以出发一个事件而驱动一个PID,在linux系统中,系统只识别二进制程序文件,我们可以通过执行系统上的二进制程序来运行程序,进而产生进程。在linux系统中第一个进程是init程序,它是系统开机第一个加载的程序,用来支撑系统的正常运行的一个程序,内核启动的一个用户级进程。
1.进程优先级
进程优先级被分为系统优先级和实时优先级
系统优先级:数字越小,优先级越高
0-139(老版本操作系统如4,5)
各有140个运行队列和过期队列,当一个进程支执行完成后会将进程放到过期队列上来,如果一个进程的优先级低,进程执行了一会,系统将会把它丢到过期队列当中来。
实时优先级:99-0:值越大优先级越高

nice值:-20,19对应系统优先级100-139或99

2.进程状态
在linux中,进程是抢占式多任务的,进程的类型被分为:
守护进程:在系统引导过程中启动的进程,即跟终端无关的进程
前台进程:跟终端有关,通过终端启动的进程;需要注意的是,也可以吧前台启动的进程送往后台,以守护模式运行。

运行态: running进程正在运行中就绪态:ready睡眠态:sleeping 可中断:interruptable
不可中断:uninterruptable,通常是指被IO阻塞的进程,等待IO满足之前无法继续运行
停止态:stopped,暂停于内存中,但不会被调度,除非手动启动僵死态:zombie,进程结束,父进程结束前,子进程不关闭根据进程占用资源的多少可以将进程分为:
CPU密集型:对CPU占用率高的进程IO密集型:等待I/O时间长的进程

3.进程管理
在linux系统中,有很多的进程都在运行,但其中有一个程序很重要,那该如何让这个最重要的程序先运行呢,所以这些情况下,我们都应该先查询系统当前运行的进程,此时我们可以通过一些进程的管理工具来获得进程的管理工具有:top,pstree,ps,pidof,pgrep,pkill,htop,glances,pmap,vmstate,dstat,iostat,sar,kill,jobs,bg,fg等
pstree:以显示当前系统上的进程树

ps:process state 进程状态
默认显示当前终端中的进程
命令格式:ps [options]
-a:所有与终端有关的进程-x:所有与终端无关的进程,通常与-a选项一起使用,可列出教完整信息-u:显示与进程所有者的信息-f:显示进程的父进程-l:较长、教详细的将该PID信息列出-o 显示指定的信息如 pid(进程号),comm(命令),%cpu(cpu占用百分比),%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:占用内存百分比VSZ:Virtual memory Size,虚拟内存集,线性内存RSS:ReSident Size,常驻内存及STAT:进程状态R:runnings:interruptable sleepingD:uninterruptable sleepingT:stoppedZ:zombie+:前台进程l:多线程进程N:低优先级进程<:高优先级进程s:session leader,会话进程首进程START:进程起始时间TIME:进程运行时长COMMAND:运行进程的命令ni:nice值pri:priority优先级psr:processor,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运行,可执行程序passwd有suid它是以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
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的分军服在,一般不会超过1)系统平均负载:在特定时间间隔内运行队列中的平均进程数
如果每个CPU内核当前活动的进程数不大于3,那么系统新能良好,如果CPU内核任务数大于5,这台机器性能有严重问题,如果主机是一个双核CPU的话,当Load Average为6的时候说明机器已经被充分使用了20:49:12 up 5:07, 3 users, load average: 0.00, 0.02, 0.05

4.进程管理工具

top



top栏位信息介绍
us:用户空间sy:内核控件ni:调整nice时间id:空闲wa:I/O等待时间hi:硬终端si:软终端(模式切换)st:被偷走的时间 PID:任务的进程IDPPID:父进程IDRUSER:进程真正执行者UID:任务所有者IDUSER:任务所有者名称GROUP:任务所有者群组名TTY:终端PR:优先级%CPU:CPU使用率%MEM:内存使用率S:进程状态TIME+:CPU时间,精确到秒 top命令有许多命令,当我们执行top命令后,在交互界面敲一下键会显示不同的效果排序P:以占据CPU百分比排序 %CPUM:以占据内存百分比排序 %MEMT:累计占据CPU时长,TIME+
首部信息显示:
uptime信息: l命令tasks及cpu信息: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:显示进程树


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
in:interrupts,中断速率,包括时钟
cs:context switch,进程切换速率

cpu
us:用户空间
sy:内核控件ni:调整nice时间id:空闲wa:I/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


客户端模式glances –c ip


dstate命令,系统资源统计
命令格式: dstat [-afv] [options..] [delay [count]]
-c:显示CPU相关信息-d:显示disk相关信息-g:显示page相关统计信息-m:显示内存相关统计信息-n:显示网络相关统计信息-p:显示进程相关统计信息-r:显示io请求相关的同属数据-s:显示swaped相关的统计数据


6. 进程管理工具
重要的信号
1)SINGHUP:让一个进程不用重启就可以重读其配置文件,并让新的配置信息生效2)SIGINT:中止正在运行的进程相当于ctrl+c9)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 hadooppkill -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.shf1.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 (进程已经运行)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息