首页 > 代码库 > 进程管理学习笔记
进程管理学习笔记
一、状态
1.正在运行或在运行队列中等待[就绪队列]) ,用状态码R表示
2. 中断状态(休眠中, 受阻, 在等待某个条件的形成或接受到信号) ,用状态码S表示
3. 不可中断状态(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) ,用状态码D表示
4. 僵死状态(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) ,用状态码Z表示
5. 停止状态(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ,用状态码T表示
PS工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l:多线程进程
s:会话进程
二、进程间通信(IPC:Inter Process Communication)
共享内存
信号:Signal
kill -l 显示所有可用的信号
1:SIGHUP: 让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效
2: SIGINT:Ctrl+c: 中断一个前台进程
9: SIGKILL:杀死一个进程(直接强行关闭进程)
15: SIGTERM:终止一个进程, 默认信号(释放所有的资源)
Semaphore:通过打旗语与其他进程通信
...
指定杀死一个信号(默认15信号):
以top为例
信号号码:kill 13310信号名称:kill -SIGKILL
信号名称简写:kill -KILL
kill PID
killall COMMAND(需要杀掉多个进程时):killall httpd
二、指令
ps:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
-F 显示更多的字段
-o 显示指定字段(ps -o pid,comm,ni)
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
常用指令实例:
-elf
-ef
-eF
数据标签:
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程
CMD //命令的名称和参数
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
PRI //优先级
NI //nice值
PSR //进程运行所处的CPU
pstree:显示当前系统上的进程树
pgrep:获取进程ID
[root@oracle 2]# pgrep -u root bash
9339
pidof:根据进程名称查找其相关进程的ID号
[root@oracle 2]# pidof bash
9339 767
top:
M: 根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序T: 根据累计时间进行排序
l: 是否显示平均负载和启动时间
t: 是否显示进程和CPU状态相关信息
m: 是否显示内存相关信息
c: 是否显示完整的命令行信息
q: 退出top
k: 终止某个进程
-d: 指定延迟时长,单位是秒
-b: 以批处理模式,以翻屏模式进行
-n #:在批模式下,共显示多少屏
free:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
vmstat:系统状态查看命令
[root@oracle 2]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 3055292 976 528100 0 0 7 1 28 49 0 0 100 0 0
四、调整nice值
调整已经启动的进程的nice值:renice NI PID
在启动时指定nice值:nice -n NI COMMAND
五、前台和后台
前台作业:占据了命令提示符
后台作业:启动之后,释放命令提示符,后续的操作在后台完成
前台-->后台:
Ctrl+z: 把正在前台的作业送往后台,加送一个停止信号,作业在后台停止运行
COMMAND &:让命令在后台执行
bg: 让后台的停止作业继续运行
bg [[%]JOBID]
jobs: 查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
fg: 将后台的作业调回前台
fg [[%]JOBID]
kill %JOBID:终止某作业
进程管理学习笔记