linux进程管理

进程概念

内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等
Process:  运行中的程序的一个 副本,是被 载入内存的一个指令集合
    进程ID (Process ID,PID)号码被用来标记各个进程
    UID 、GID、和SELinux语境决定对文件系统的存取和访问权限,
    通常从执行进程的用户来继承
    存在生命周期
task struct:Linux内核存储进程信息的数据结构格式
task list :多个任务的的task struct 组成的链表
进程创建:
    init :第一个进程
       父子关系
    进程:都由其父进程创建,COW       fork(), clone()

进程优先级

进程优先级:

imageimage

系统优先级: 数字越小,优先级越高
0-139(CentOS4,5)默认为120
    各有140 个运行队列和过期队列
    运行队列和过期队列互换**        
0-98,99(CenOS6)
实时优先级: 99-0 :值最大优先级最高
Nice 值:-20,19对应系统优先级100-139或99
Big O :时间复杂度,用时和规模的关系
O(1), 
O(logn), 
O(n) 线性, 
O(n^2) 抛物线, 
O(2^n)

image

进程相关概念

进程内存:
Page Frame:  页框,用存储页面数据,存储Page 4k
LRU :Least Recently Used  近期最少使用算法, 释放内存
    物理地址空间和线性地址空间
MMU :Memory Management Unit负责转换线性和物理地址
IPC: Inter Process Communication
同一主机上
    signal
    shm: shared memory
    semophore  信号量,一种计数器
不同主机上:
    rpc: remote procedure call
    socket: IP和端口号

进程状态

Linux 内核:抢占式多任务
进程类型:
守护进程: daemon, 在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
  
注意:两者可相互转化
进程状态:
运行态:running就绪态:ready
睡眠态:
      可中断:interruptable
     不可中断:uninterruptable
停止态:stopped,暂停于内存中,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭

系统管理工具

进程的分类:
CPU-Bound :CPU 密集型,非交互
IO-Bound :IO 密集型,交互
Linux 系统状态的查看及管理工具:
pstree, ps, pidof,
pgrep, top, htop, glance, pmap, vmstat, dstat, kill,
pkill, job, bg, fg, nohup
pstree 命令:
pstree - display a tree of processes
  -p:列举编号
ps: process state
ps - report a snapshot of the current processesLinux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中

进程管理工具

VSZ: Virtual memory SiZe ,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT :进程状态
    R :running
    S: interruptable sleeping
    D: uninterruptable sleeping
    T: stopped
    Z: zombie
    +:  前台进程
    l:  多线程进程
    N: 低优先级进程
    <:  高优先级进程
    s: session leader ,会话(子进程)发起者

列举进程ps

适用ps 来查看进程信息  ps [OPTION]...
支持三种选项:
     
    UNIX 选项如-A -e
    BSD 选项如 a
    GUN 选项如--help
• 默认显示当前终端中的进程
• a 选项包括所有终端中的进程
• x 选项包括不连接终端的进程
• u 选项显示进程所有者的信息

image

• f 选项显示进程的父进程
• o 属性… 选项显示定制的信息:o必须在最后
# ps axo pid,comm,%cpu,%mem,state,tty,euser,ruser

image

常用组合:
-ef  
-e:  显示所有进程 ==ax-f:  显示完整格式程序信息

image

-eFH    -F:显示更完整格式的进程信息    -H:以进程层级格式显示进程相关信息(父子进程关系)
优先级
ni: nice值pri: priority ,优先级psr: processor, CPU 编号rtprio: 实时优先级
自定义
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
    pid,    进程ID
    tid,    线程ID    class,  类型
    rtprio,实时优先级
    ni,    nice优先级
    pri,    实时优先级
    psr,    cpu编号
    pcpu,   CPU占用率
    stat,   进程状态
    comm    发起命令
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
    euid,   有效用户ID   进程执行者
    ruid,   实际用户ID   进程发起者
    tty,     终端号
    tpgid,  控制tty进程组ID
    sess,    会话ID
    pgrp,    进程组ID
    ppid,    父进程ID
参数 描述
pcpu CPU占用率
pid 进程ID
ppid 父进程ID
pmem 内存使用率
comm 可执行文件
cmd 简单命令(simplecommand)
user 启动进程的用户
nice 优先级(niceness)
time 累计的CPU时间
etime 进程启动后累计时间
tty 当前终端进程
euid 有效用户ID 进程执行者
stat 进程状态
ruid 真实用户ID 进程发起者

搜索进程

最灵活:ps  选项 |  其它命令按预定义的模式:pgrep
pgrep [options] pattern
-u uid: effective user,生效者-U uid: real user ,真正发起运行命令者-t terminal:  与指定终端相关的进程-l: 显示进程名
# pgrep -t pts/1 -l
-a: 显示完整格式的进程名(centos6无效)
# pgrep -t pts/0 -a
-P  pid:显示指定进程的子进程
# pgrep -P 3522 -l
按确切的程序名称:/sbin/pidof$pidof bash
[root@lvasu ~]# pidof bash3457
系统工具
uptime:
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1 、5 、10 分钟的平均负载,一般不会超过1)
[root@lvasu ~]# uptime
 23:47:00 up  2:05,  4 users,  load average: 0.06, 0.05, 0.05
系统平均负载:
指在特定时间间隔内运行队列中的平均进程数 。
如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。 如果每个CPU 内核的任务数大于5 ,那么这台机器的性能有严重问题。
如果linux 主机是1 个双核CPU 的话,当Load Average 为6 的时候说明机器已经被充分使用了。

进程管理工具

top :有许多内置命令:
排序: (CAPM)
P :以占据的CPU 百分比,%CPUM :占据内存百分比,%MEM
T :累积占据CPU 时长,TIME+
首部信息显示:
uptime 信息: l显示
tasks 及cpu 信息:t 显示
cpu 分别显示:1 ( 数字)memory 信息:m 命令
      
退出命令:q修改刷新时间间隔:s #   单位s 
终止指定进程:k
保存文件:W   (CAPS)   
       位置 /root/.toprc
栏位信息简介
us :用户空间
sy :内核空间
ni :调整nice 时间
id :空闲
wa :等待IO 时间
hi :硬中断
si :软中断(模式切换)
st :虚拟机偷走的时间


PID (Process Id): 任务的进程ID
PPID (Parent Process Pid): 父任务的进程ID
RUSER (Real User Name): 任务的所有者真实名称
UID (User Id): 任务所有者IDUSER (User Name): 任务所有者名称GROUP (Group Name): 任务所有者群组名
TTY (Controlling Tty): 终端
PR (Priority): 优先级
%CPU (CPU usage):CPU 使用率
%MEM (Memory usage (RES)): 内存使用率
S (Process Status): 进程状态
TIME+ (CPU Time, hundredths):CPU 时间,精确到秒

进程管理工具

选项:
-d #:   指定刷新时间间隔,默认为3秒
-b:    以批次方式(自动翻屏)
-n #:   显示多少批次(并且自动退出)
htop
命令:需从Fedora-EPEL 源安装http://172.16.0.1/fedora-epel/7/x86_64
    
选项:
-d #:    指定延迟时间;
-u UserName:  仅显示指定用户的进程;-s COLUME:  以指定字段进行排序;子命令:(htop 界面实现)
    s:  跟踪选定进程的系统调用;
    l:  显示选定进程打开的文件列表;
    a:将选定的进程绑定至某指定CPU 核心;
    t:显示进程树

内存工具

vmstat 命令:虚拟内存信息
vmstat [options] [delay [count]]
    vmstat 2 5

image

procs:
r:等待运行的进程的个数,和核心数有关b:处于不可中断睡眠态的进程个数( 被阻塞的队列的长度)
memory:
swpd:  交换内存的使用总量free :空闲物理内存总量buffer :用于buffer 的内存总量cache :用于cache 的内存总量
swap:(相对于内存)
si :从磁盘交换进内存的数据速率(kb/s)so :从内存交换至磁盘的数据速率(kb/s)
io:
bi :从块设备读入数据到系统的 速率(kb/s)bo:  保存数据至块设备的速率
system:
in: interrupts,  中断速率,包括时钟cs: context switch,  进程切换速率
cpu:
us:Time spent running non-kernel codesy: Time spent running kernel codeid: Time spent idle. Linux  
   2.5.41 前, 包括IO-wait time.
wa: Time spent waiting for IO. 
   2.5.41 前,包括in idle.
st: Time stolen from a virtual machine. 
   2.6.11 前, unknown.
选项:
   -s:  显示内存的统计数据
pmap 命令 :进程对应的内存映射
pmap [options] pid [...]
    -x:  显示详细格式的信息;
    # pmap 1

image

另外一种实现:    # cat /proc/PID/maps
[root@lvasu ~]# cat /proc/1/maps

系统监控工具

glances 命令:EPEL源
      
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 logsc Sort processes by CPU% b Bytes or bits for network I/Om Sort processes by MEM% w Delete warning logsp Sort processes by name x Delete warning and critical logsi Sort processes by I/O rate 1 Global CPU or per-CPU statsd Show/hide disk I/O stats h Show/hide this help screenf Show/hide file system stats t View network I/O as combinationn 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 -s -B 10.1.27.100
客户端模式:
    glances -c IPADDR
    IPADDR :要连入的服务器端地址
# glances -c 10.1.27.101
dstat 命令:系统资源统计
dstat [-afv] [options..] [delay [count]]
    -c:  显示cpu 相关信息      -C #,#,...,total      include cpu0, cpu3 and total    -d:  显示disk 相关信息      -D total,sda,sdb,...   include hda and total    -g :显示page 相关统计数据    -m:  显示memory 相关统计数据    -n:  显示network 相关统计数据    -p:  显示process 相关统计数据    -r:  显示io 请求相关的统计数据    -s:  显示swapped 相关的统计数

image

--tcp--udp--unix--raw--socket--ipc--top-cpu :显示最占用CPU 的进程--top-io:  显示最占用io 的进程--top-mem:  显示最占用内存的进程--top-latency:  显示延迟最大的进程

image

进程管理工具

kill 命令:
  向进程发送控制信号,以实现对进程管理
  显示当前系统可用信号: kill -l
  常用信号:man 7 signal    1) SIGHUP:  无须关闭进程而让其重读配置文件    2) SIGINT:  中止正在运行的进程;相当于Ctrl+c    9) SIGKILL:  杀死正在运行的进程    15) SIGTERM :终止正在运行的进程  (正常关闭,默认15)    18) SIGCONT :继续运行    19) SIGSTOP :后台休眠
  指定信号的方法:
     (1)  信号的数字标识;1, 2, 9
     (2)  信号完整名称;SIGHUP
     (3)  信号的简写名称;HUP
      
按PID :kill [-SIGNAL] pid …
按名称:killall [-SIGNAL] comm…
# killall -9 ping
按模式:pkill [options] pattern
    -SIGNAL    -u uid: effective user ,生效者    -U uid: real user ,真正发起运行命令者    -t terminal:  与指定终端相关的进程    -l: 显示进程名    -a: 显示完整格式的进程名    -P pid:  显示父 进程为此处指定的进程的进程列表
# pkill -u root# pkill -9 -t pts/1

进程优先级

进程优先级调整:
    静态优先级:100-139
    进程默认启动时的nice值为0 ,优先级为120
    只有根用户才能降低nice值(提高优先性)
nice 命令:
    nice [OPTION] [COMMAND [ARG]...]
    nice -n -5 htop 
renice 命令:
    renice [-n] priority pid...  运行中的进程
查看:
    ps axo pid,comm,ni

未涉及到的命令

sat,tsar,lostat,lftop,nethog,....

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

(0)
lvasulvasu
上一篇 2016-09-12
下一篇 2016-09-12

相关推荐

  • 文件管理命令及通配符练习

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例 按增删改查的思路来 增: touch filename:这个命令本身不是用来新建文件的,它是用来修改文件的时间属性,不过默认情况时当filename不存在时,它会默认建立一个空文件 mkdir: 常用参数 -p:相当于递归创建目录 -v:显示出创建过程中的信息 cp : 常用参数 -r:…

    Linux干货 2016-11-06
  • 马哥教育网络班21期+第14周课程练习

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; INPUT链 # iptables -I INPUT 1 -p tcp&nb…

    Linux干货 2016-11-14
  • 管窥Linux史

    管窥Linux史 众所周知,绝大部分发行版本都被称为类Unix系统,要说Linux就应该先了解Unix的历史,Unix的起源应该赘述MULTICS的历史,Unix的父辈是颇具开拓性的Multics项目…… Unix创世纪 二战结束以后,冷战开始了。1957年苏联发射了第一颗人造卫星,进而开始筹备发射载人宇宙飞船。与此同时,美国宇航局的研究却连连受挫。航天领域…

    Linux干货 2016-10-14
  • openssl、openssh

    openssl 传输层协议:TCP,UDP,SCTPport:进程地址,进程向内核注册使用某端口(独占) 同一主机上的进程间通信:IPC, message queue, shm, semerphor 不同主上的进程间通信:socket cip:port <– –> sip:port cip:55673 <&#8211…

    Linux干货 2017-05-31
  • 浅谈技术管理(转载,讲的非常不错,技术和产品都值得一看)

      针对这些年旁观和经历过的技术产品场景,做一些个人的总结和判定,尽量不涉及争议性话题,比如对一个互联网公司而言,技术重要还是产品重要之类的,这种话题一扯开,各有道理,谁也别指望说服谁。     此外,加一个前缀,主要针对非技术领导者所面临的技术管理困境,在很多从传统企业转型或个人站转型的互联网企业里,这个问…

    Linux干货 2015-04-04
  • lnmap实战之负载均衡架构(无高可用)

    lnmap实战之负载均衡架构(无高可用) 架构图如下: 此次实战软件,全部yum安装 1.准备好机器,同步好时间 192.168.42.150 node1 [负载均衡器]192.168.42.152 node3 [web2]192.168.42.153 node4 [web1]192.168.42.151 node2 [memcached session存储…

    Linux干货 2017-06-22