进程简介
进程:运行中程序
进程分类:批处理进程、交互式进程、实时进程
进程优先级:0-139
实时优先级:0-99,数字越大,优先级越高
静态优先级:100-139,数字越小,优先级越高
nice值:-20, 19
进程启动,默认nice值为0
动态优先级:由内核维护,动态调整
进程状态:
运行态:running
睡眠态:sleeping
可中断睡眠:interruptable
不可中断睡眠:等待外部满足之前无法继续运行, uninterruptable
停止态:不会被内核调度并运行,stopped
僵死态:zombie
进程创建机制:每一个进程都是由其父进程fork()自身而来;
进程间通信:IPC (InterProcess Communication)
同一主机:
signal
shm:共享内存
semerphor: 旗语
不同主机:
rpc: Remote Procedure Calling
socket
进程管理
ps: 显示进程状态的命令,快照式、一次性
进程信息字段:
与终端相关的进程: a
与终端无关的进程:x
常用组合:ps aux
VSZ: Virtual memory SiZe
RSS: 常驻内存集
STAT状态:
R: running
S: 可中断睡眠
D:不可中断睡眠
T:stopped
Z:zombie
s: session leader
+:前台进程
l: 多线程进程
N:低优先级进程
<: 高优先级进程
COMMAND:包含在方括号中的进程表示为内核线程
常用组合:ps -ef
-e: 显示所有进程
-f: 显示完整格式的信息
常用组合:ps -eFH
-F: 显示额外信息
-H:显示进程的层次结构
自定义要显示的信息:-o
ps axo pid,command,psr,pri,ni
ni: nice值
pri: 优优级
psr: 运行的CPU
pgrep
-U UID:仅显示由指定用户启动的进程
-G GID:仅显示与指定组相关的进程
-t term...: 仅显示与指定终端相关的进程
-l: 同时显示进程号和程序名
pidof:显示指定命令所启动的进程的ID
pidof COMMAND
top:查看进程信息
top查看进程字段信息
M: 内存百分比
P: CPU百分比
T: 累积占用的CPU时间
l: 显示或不显示负载信息
过去1分钟、5分钟、15分钟的平均负载
等待运行的进程队列的长度
t: 显示或不显示进程及CPU相关的信息
1: 数字,分别显示各CPU的相关信息
us: user space
sy: system
ni:
id:
wa: wait io
hi: hardware interrupt
si: soft interrupt
st:
m: 显示或不显示物理内存和交换内存的相关信息
q: 退出
k: 终止指定进程
s: 修改刷新时间间隔
常用选项:
-d #: 指定刷新时间间隔
-b: 以批次的方式显示top的刷新
-n #: 显示的批次
htop:查看进程信息
htop查看进程信息字段:
u: 交互式选择显示指定用户的进程
l: 显示光标所在进程所打开的文件列表
s: 显示光标所在进程执行的系统调用
a: 绑定进程到指定的CPU
#:快速定位光标至PID为#的进程上
F1:获取帮助
vmstat:查看存储信息
procs:
r: 运行队列的长度
b: 被阻塞(等待IO完成)队列的长度
memory:
swpd: 从物理内存交换至swap中的数据量
free: 空间物理内存
buffer:
cache:
swap:
si: swap in, 数据进入swap中的数据速率,kb/s
so: swap out,数据离开swap中的数据速率
io:
bi: block in, 从块设备读入的数据速率,kb/s
bo: block out,保存至块设备的数据速率
system:
in: interrupt, 中断速率
cs: context switch, 进程切换速率
cpu:
us, sy, id, wa, st
-s: 显示内存统计数据
nice:启动进程并调整进程号
直接启动一个进程,并指定其Nice值:
nice -n # COMMAND
调整已运行的进程的nice值:
renice -n # -p PID
kill:杀死进程
信号:signal,借助于kill命令
基于kill命令向其它的进程发信号:
显示常用信号:
# kill -l
# man 7 signal
每个信号都可以使用三种方式之一在Kill进行调用:
数字代称: 1, 2, 9, 15
信号完整名称:SIGHUP, SIGINT, SIGKILL, SIGTERM
信号简称:HUP, INT, KILL, TERM
1) SIGHUP:让程序重读配置文件需无须重新启动;
2) SIGINT:interrupt,打断正在运行中的程序;
9) SIGKILL:
15) SIGTERM:
kill [-SIGNAL] PID
-9, -SIGKILL
killall [-SIGNAL] COMMAND
job:作业控制
前台作业:通过终端启动,并在终止之前一直占据着终端
后台作业:作业启动之后即运行于后台,释放前台
交互式模式:手动启动的非守护进程类的程序,一般都运行于前台;
将作业运行于后台:
1、运行中的作业:
Ctrl+z
送往后台后,作业处于STOPPED状态
2、尚未启动作业:
COMMAND &
此类由手动方式控制的作业,与终端相关作业会被终止;如果把作业送往后台,且与终端无关:
# nohup COMMAND &
作业号
# jobs
作业控制命令:
# fg [[%]JOBNUM]: 将指定的作业调回前台
# bg [[%]JOBNUM]: 让送往后台的作业在后台继续运行
# kill %JOBNUM: 终止指定的作业
dstat:查看系统相关信息(uptime, vmstat, iostat, netstat, ifstat, nfsstat)
-c: 显示CPU统计数据
-d: 显示disk统计数据
-D DISK: 只显示指定disk的统计数据
-g: 显示page的统计数据
-i: 显示中断的统计数据
-m: 显示内存的统计数据
-l: 显示系统负载的统计数据
-n: 显示网络接口相关
-N INTERFACE: 仅显示指定的网络接口的数据
-s: 显示交换内存
-p: 进程队列
--ipc: 显示ipc消息队列、信号量和共享内存的使用状况
-y: 系统状态数据
默认相当于使用“dstat -cdngy”,也相当于“dstat -a”
使用"dstat -f", 以完整格式显示所有信息,
使用"dstat -v",显示结果类似于vmstat命令
网络连接状态统计:
--tcp
--udp
--raw
--unix
pmap:显示指定进程的物理内存空间映射表