进程概念
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等 Process: 运行中的程序的一个 副本,是被 载入内存的一个指令集合 进程ID (Process ID,PID)号码被用来标记各个进程 UID 、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 task struct:Linux内核存储进程信息的数据结构格式 task list :多个任务的的task struct 组成的链表 进程创建: init :第一个进程 父子关系 进程:都由其父进程创建,COW fork(), clone()
进程优先级
进程优先级:
系统优先级: 数字越小,优先级越高
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)
进程相关概念
进程内存:
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 选项显示进程所有者的信息
• f 选项显示进程的父进程 • o 属性… 选项显示定制的信息:o必须在最后
# ps axo pid,comm,%cpu,%mem,state,tty,euser,ruser
常用组合:
-ef -e: 显示所有进程 ==ax-f: 显示完整格式程序信息
-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
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
另外一种实现: # 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 相关的统计数
--tcp--udp--unix--raw--socket--ipc--top-cpu :显示最占用CPU 的进程--top-io: 显示最占用io 的进程--top-mem: 显示最占用内存的进程--top-latency: 显示延迟最大的进程
进程管理工具
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