Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能
Process:运行中的程序的一个副本
存在生命周期
linux内核存储进程信息的固定格式:task struck
多个任务的task struck组件的链表:task list
进程创建
init
父子关系
进程:都由其父进程创建
fork(),clone()
进程优先级:
0-139:
1-99:实时优先级,数值越大, 优先级越高
100-139:静态优先级,数值越小,优先级越级高
Nice值:-20,19,依次对应100-139
Big O
O(1),O(logn),O(n),O(n^2),O(2^n)
进程内存:
Page Frame:页框,用于存储页面数据
MMU:Memory Management Unit负责转换线性和物理地址
IPC:Inter Process Communication
同一主机上:
signal
shm:shared memory
semerpher
不同主机上:
rpc:remote procecure call
socket
Linux内核:抢占式多任务
进程类型:
守护进程:daemon,在系统引导过程中启动的进程,跟终端无关
用户进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送至后台,以守护模式运行
进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动之
僵死态:zombie
进程的分类:
CPU-Bound
IO-Bound
I/O:分时复用
linux进程查看及管理工具:pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat, dstat, kill,pkill, job, bg, fg, nohup
pstree命令
pstree 命令:
pstree - display a tree of processes
ps: process state
ps - report a snapshot of the current processes
Linux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中
ps [OPTION]...
选项:支持两种风格
常用组合:aux
u:以用户为中心组织进程状态信息显示
a:与终端无关的进程
x:与终端无关的进程
[root@danran ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
PID:进程号
%CPU:CPU使用率
%MEM:内存使用率
VSZ:Virtual memory Size 虚拟内存集
RSS:ReSident Size:常驻内存集,一般小于虚拟内存集
tty:终端
STAT:进程状态
R:running
S:interruptable sleeping
D:uninteruptable sleeping
T:stopped
Z:zombie
+:前台进程
l:多线程进程
L:内存分页并带锁
N:低优先级进程
<:>
s:session leader,会话子进程发起者
START:启动时间
TIME:运行占用CPU的累计时长
COMMAND:表示启动进程的命令
常用组合:-ef
-e:显示所有进程
-f:显示完整格式的程序名称
常用组合:-ejH
以进程层级格式显示进程相关信息(树状显示)
-j:BSD格式的任务格式
-H:显示树状结构
j :BSD风格的任务控制格式
常用组合:-eFH
-F:显示网整格式的进程信息
-H:以进程层级格式显示进程相关信息
常用组合:-axZ
-Z:表示Selinux的安全上下文标签
-a:显示所有进程
-x:显示没有终端的进程
常用组合:-eo,axo
-eo pid,tid class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ni:nice值
pri:priority,优先级
psr:processor,CPU
rtprio:实时优先级
epid:表示真实用户
ppid:父进程
pgrep
pgrep [options] pattern
pkill [options] pattern
-u UID:指明有效用户的进程
-U uid:指明真实用户的进程
-t terminal:跟指定终端相关的进程
-a:显示完整格式的进程名
-l:显示进程名
-P pid:显示其父进程为此处指定进程的进程列表
pidof
根据进程名获取其PID
top
有许多内置命令
排序:
P:以占据的CPU百分比;
M:占据内存百分比
T:累积占据CPU时长
首部信息显示:
uptime信息:l命令
tasks及CPU信息:t命令
CPU分别显示:1(数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
选项:
-d #:指定刷新时间间隔,默认为3s
-b:以批次方式全部显示
-n #:显示多少批次
栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
htop
epel源下载安装
htop命令
选项:
-d #:指定延迟时间
-u Username:仅显示指定用户的进程
-s COLOMN:以指定字段进行排序
命令
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某CPU核心
t:显示进程数
注意:Fedora-EPEL源
Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
vmstat命令
vmstat [options] [delay [count]]
procs:
r:等待运行的进程的个数
b:处于不可中断睡眠态的进程个数,(被阻塞的队列的长度)
memory:
swpd:交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
swap:
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap中的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率(kb/s)
bo:保存数据至块设备的速率(kb/s)
system:
in:interrupts,中断速率
cs:context switch,进程切换速率
cpu:
us:用户空间占据CPU的比率
sy:内核空间占据CPU的比率
id:空闲空间占据CPU的比率
wa:等待IO完成所消耗的比率
st:被虚拟化偷走的CPU比率
选项:
-s:显示内存统计数据
pmap(内存映射)
NAME
pmap - report memory map of a process(内存映射表)
格式:
pmap [options] pid [...]
-x:显示详细格式的信息
另外一种实现:
cat /proc/PID/maps
glances
epel源安装
http://172.16.0.1/fedora-epel/7/x86_64 epel源
客户端和服务端都需要安装glances工具
使用glances工具时需要关闭防火墙
glances使用格式
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
内建命令:
a Sort processes automatically
c Sort processes by CPU%
m Sort processes by MEM%
p Sort processes by name
i Sort processes by I/O rate
d Show/hide disk I/O stats
f Show/hide file system stats
n Show/hide network stats
s Show/hide sensors stats
y Show/hide hddtemp stats
l Show/hide logs
b Bytes or bits for network I/O
w Delete warning logs
x Delete warning and critical logs
1 Global CPU or per-CPU stats
h Show/hide this help screen
t View network I/O as combination
u View cumulative network I/O
q Quit (Esc and Ctrl-C also work)
常用选项:
-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 -c IPADDR
IPADDRR:要连入的服务器端地址
dstat
格式:
dstat [-afv] [options..] [delay [count]]
选项:
-c:显示cpu相关信息
-C#,#,...,total单独显示指定Cpu的信息
-d:显示disk读写速率等相关信息
-D:total,sda,sdb...单独显示指定磁盘的信息
-g:显示page相关统计数据(换进换出)
-i:显示统计的详细信息
-l:仅显示load(负载)
-n:显示network的相关统计数据
-m:只显示memory的相关统计数据
-p:显示process的相关统计数据
-r:显示io请求相关的统计
-s:显示swapped相关的统计数据
--tcp:显示tcp协议相关统计数据
--udp:显示udp协议的相关统计数据
--socket:显示socket文件的统计数据
--raw:裸套接字文件的统计数据
--ipc:进程间通信的统计数据
--top-cpu:显示最占用CPU的进程
--top-io:显示最占用io的进程
--top-mem:显示最占用内存的进程
--top-lantency:显示延迟最大的进程
dstat 1 每秒刷新一次
total-cpu-usage:cpu使用状态
dsk/total:磁盘读写速率
net/total:网络收发速率
paging:页面的换进换出速率
systea:中断和上下文切换的速率
dstat -D total,sda -C 0,total 显示sda磁盘,CPU0的详细信息
kill命令
向进程发送控制号,以实现对进程管理
显示当前系统可用信号
kill -l
man 7 signal
常用信号(SIGNAL):
1)SIGHUP:无需关闭进程而让其重读配置文件
2)SIGINT:中止正在运行的程序,相当于Ctrl+c
9)SIGKILL:杀死正在运行的进程
15)SIGTERM:终止正在运行的进程
18)SIGCOUT:处于停止态的继续运行
19)SIGSTOP:让进程处于停止状态
指定信号的方法:
1) 信号的数字标识:1,2,9
2) 信号完整名称:SIGHUP
3) 信号的简写名称:HUP
向进程发信号:
kill [-SIGNAL] PID...
kill -15 2440 杀死ID号为2440的进程
kill -SIGINT 2440
终止“名称”之下的所有进程
killall [-SIGNAL] Program
Linux作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)
如何让作业运行于后台:
1):运行中的作业
Ctrl+z
2):尚未运行的作业
COMMAND &
此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:
nohup COMMAND &
查看当前终端所有作业:
jobs
作业控制:
fg [[%]JOB_NUM]:把指定的后台作业调回前台(JOB_NUM为后台作业ID)
bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
kill [[%]JOB_NUM]:中止指定作业
并行运行
同时运行多个进程,提高效率
方法1
vim all.sh
f1.sh & <==> ping 127.0.0.1 &
f2.sh & <==> ping 192.168.198.134 &
f3.sh &
方法2
(f1.sh &);(f2.sh &);(f3.sh &)
(ping 127.0.0.1 &);(ping 192.168.198.134 &)
方法3
{ f1.sh & f2.sh & f3.sh & }
{ ping 127.0.0.1 & ping 192.168.198.134 & }
进程优先级调整
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120
nice命令:(启动进程时指定nice值)
nice [OPTION] [COMMAND [ARG]...]
nice -n 5 htop htop进程启动的nice值为5,优先级为125,数值越小,优先级越高
nice,renice
renice命令(修改以启动进程的nice值)
renice [-n] priority [-gpu] identifier...
renice -n 2 htop
查看:
ps axo pid,comm,ni
未涉及的命令:sar,tsar,iostat,iftop