一、进程
1、进程属性:
a)进程状态
b)父子关系
c)优先级关系
0-139用户优先级,数字越小优先级越高;
0-99:内核调整的
100-139:用户可控制
nice值:
-20-19
100-139
普通用户仅能够调大自己的进程的Nice值;
2、进程优先级
a)衡量面对不同的算法时,程序的性能如何,O标准(坐标轴表示):
O(1)
O(n)
O(logn)
O(n^2)
O(2^n)
b)每个进程的PID都是唯一的:
init: 进程号为1
3、进程的分类:
跟终端相关的进程
跟终端无关的进程
二、进程相关命令
1、Linux命令的两大阵营:
SysV风格:选项加-
BSD风格: 选项不加-
2、ps: Process State
a)BSD风格选项:
a: 显示所有与终端有关的进程
u: 显示有哪些用户启动
x: 显示所有与终端无关的进程(不完全是和终端无关的进程)
b)进程状态表示:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l: 多线程进程
s: 会话进程首进程
c)ps aux命令执行结果显示字段的信息表示:[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2176 672 ? Ss 20:30 0:00 init [3]
root 2 0.0 0.0 0 0 ? S< 20:30 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 20:30 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 20:30 0:00 [events/0]
root 5 0.0 0.0 0 0 ? S< 20:30 0:00 [khelper]
root 6 0.0 0.0 0 0 ? S< 20:30 0:00 [kthread]
root 9 0.0 0.0 0 0 ? S< 20:30 0:00 [kblockd/0]
root 10 0.0 0.0 0 0 ? S< 20:30 0:00 [kacpid]
root 176 0.0 0.0 0 0 ? S< 20:30 0:00 [cqueue/0]
root 179 0.0 0.0 0 0 ? S< 20:30 0:00 [khubd]
USER:用户
PID:D号
%CPU:占用CPU
%MEM:占用内存
VSZ:虚拟内存集
RSS:常驻内存集
TTY:关联的终端
STAT:状态
START:启动时间
TIME:占cpu的时长
COMMAND:哪个命令启动的进程,加[]的:表示内核线程
d)SysV风格选项:
-e:显示所有线程
-l:长格式
-F: 显示更多内容
-elF
-ef
-eF
-o:显示指定字段,如:ps -o pid,comm,ni
如:[root@localhost ~]# ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 75 0 - 544 - ? 00:00:00 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:00 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 4 1 0 70 -5 - 0 worker ? 00:00:00 events/0
e)ps -el命令显示:
PRI:优先级
NI:nice值
3、pstree: 显示当前系统上的进程树;
4、pgrep:以grep风格显示特定进程,如:pgrep -u root ssh;
5、pidof: 根据程序名称,查找其相关进程的ID号;
6、top命令详解:[root@localhost ~]# top
a)top命令执行结果显示字段的信息表示:
top - 21:18:23 up 47 min, 3 users, load average: 0.00, 0.01, 0.00
Tasks: 100 total, 2 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1034660k total, 288072k used, 746588k free, 23172k buffers
Swap: 2048248k total, 0k used, 2048248k free, 165256k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4638 root 15 0 2308 1084 844 R 0.3 0.1 0:00.07 top
1 root 15 0 2176 672 576 S 0.0 0.1 0:00.85 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
top -:系统当前时间;up,运行时长;user,登录用户
load average:平均队列负载长度,分别表示1分钟、5分钟、10分钟的平均队列长度;
Tasks:所有运行进程
Cpu(s):平均每个cpu的负载情况,可用数字1切换cpu。us,用户空间占用百分比;sy,内核空间占用;ni,nice值占用;id,idle的空闲占用;wa,wait等待I/O完成占用;hi,hardware interrupt硬件中断占用;si,软中断占用;st,被偷走的占用;VIRT,虚拟内存集;RES,常驻内存集;SHR,共享内存大小;S,状态;TIME+,真正占据cpu时长;
b)top命令运行时切换命令:
M: 根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序
T: 根据累计时间进行排序
l: 是否显示平均负载和启动时间
t: 是否显示进程和CPU状态相关信息
m: 是否显示内存相关信息
c: 是否显示完整的命令行信息
q: 退出top
k: 终止某个进程
c)top的SysV风格选项:
-d: 指定延迟时长,单位是秒
-b: 批模式显示
-n #:在批模式下,共显示多少批
7、vmstat:Report virtual memory statistics;
a)vmstat # #:系统状态查看命令,第一个#表示时间秒,第二个#表示显示次数;
b)vmstat命令执行结果显示字段的信息表示:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
6 0 0 80068 93412 726620 0 0 202 136 1026 92 2 2 95 1 0
procs:进程;r,运行进程长度;b,阻塞进程长度;
memory:内存;swpd,交换空间;free,空闲的;buff,用于缓冲的;cache,用于缓存的;
swap:动态分区;si,swap in,有多少页面从物理内存放到交换内存上;so,swap out有多少页面从交换内存放到物理内存,又被调回物理内存;
io:bi,block in 有多少磁盘上的块被调入到内存中;bo,block out 有多少个内存中的块同步到硬盘了;
system:in,interrupt中断个数;cs,context switch 进程上下文切换的次数;
cpu:us,用户空间占用百分比;sy,内核空间;id,空闲空间占用;wa,等待IO;st,被偷走的;
8、free:Display amount of free and used memory in the system;
9、kill:terminate a process;
终止一个进程方法:
kill PID
killall COMMAND
10、pkill:look up or signal processes based on name and other attributes;
三、进程之间的通讯信号
1、2台Linux计算机如何通信?进程间通信(IPC: Inter Process Communication)方式:
共享内存:
信号: Signal
Semaphore:旗语
2、重要的信号:
1:SIGHUP,让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效;
2: SIGINT,Ctrl+c: 中断一个进程
9: SIGKILL,杀死一个进程,强制终止
15: SIGTERM,终止一个进程, 给足够的时间关闭相关文件,它是默认信号
3、指定一个信号方法:
信号号码:kill -1
信号名称:kill -SIGKILL
信号名称简写:kill -KILL
四、调整进程优先级
1、调整nice值(即调整优先级):
调整已经启动的进程的nice值:renice NI PID
在启动时指定nice值:nice -n NI COMMAND,如:nice -n -3 useradd hbase;
五、进程作业
1、概念:
前台作业:占据了命令提示符;
后台作业:启动之后,释放命令提示符,后续的操作在后台完成;
2、把前台作业转换成后台作业(前台-->后台):
Ctrl+z: 把正在前台的作业送往后台,但是作业停止运行;
COMMAND &:让命令在后台执行
3、bg: 让后台的停止作业继续运行;
用法,bg [[%]JOBID]
4、fg: 将后台的作业调回前台
用法,fg [[%]JOBID]
5、jobs: 查看后台的所有作业,而作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
6、kill %JOBID: 终止某作业,命令不能省%号
六、内存信息
1、/proc/meminfo :当前内存信息文件;
2、内存占用信息:/proc/1/maps,每个进程都有maps文件;