标签(空格分隔): Linux
进程的静态查看
查看系统所有进程
-
ps -ef
-- 输出来好乱,看不懂..; -
ps aux
-- a表示所有与终端相关的进程,u表示所有以用户组织的进程状态的信息,x表示与终端无关的所有进程; ps -lA
-
ps -l
-- 只查看与shell有关的进程(即在shell上通过命令或者可执行程序创建的进程) -
ps -lU username
或者ps -fU username
-- 只查看特定用户的进程 -
ps -C 命令
-- 只查看发出某个命令产生的所有进程 -
ps -L 进程号
-- 查看某个进程的线程 -
ps -eLf
或者ps -lLA
-- 查看所有进程(包括线程信息)
1. ps -lA
-
UID
. 表示进程被哪个用户所拥有; -
PID
. 进程的ID; -
PPID
. 进程的父进程的ID; -
F
. 进程标志。4表示此进程有root权限; -
S
. 进程状态。进程的主要状态有:R
表示可运行的进程,包括正在运行的进程以及就绪队列中的进程;S
表示该进程处于可中断的睡眠状态(等待某一时间的发生或等待某种信号的唤醒);D
表示该进程处于不可中断的睡眠状态(不能被信号唤醒,比如等待IO);T
表示该进程处于停止状态(不是终止,只是在后台暂停,有作业控制信号导致);Z
表示该进程处于僵尸状态(进程已经停止,但是父进程未回收该进程资源); -
C
. 该进程使用的CPU的百分比; -
PRI
. Priority,表示进程的优先级,数值越小,优先级越高; -
NI
. Nice,同样表示进程的优先级,数值越小,优先级越高; -
ADDR
. 表示kernel function,指出该进程在内存中的哪个部分; -
SZ
. 表示该进程使用的内存大小; -
WCHAN
. 睡眠的进程等待的事件。如果正在运行,则显示 - ; -
TTY
. 该进程使用哪个命令行终端; -
TIME
. 该进程实际使用CPU的时间; -
CMD
. 该进程由哪个命令所触发。
2. ps aux
-
VSZ
. 该进程使用掉的虚拟内存的大小; -
RSS
. 该进程使用掉的内存大小; -
STAT
. 该进程的状态,与S
一致; -
STARTED
. 该进程被触发启动的时间 -
ps aux --sort -pcpu, -pmem
-- 排序显示,按CPU使用率从大到小排序,CPU使用率相同则按照内存使用率大小排序
进程的动态查看
使用top命令。
-
top -b -n 2 > file.out
-- 以批次方式执行(此时是静态结果),执行2此,并将结果写入文件。
进程的管理
一般是通过信号来管理进程。
-
kill -l
-- 查看所支持的信号; -
SIGINT
。2号信号,相当于ctr + c来终止一个进程的执行; -
SIGKILL
。9号信号,强制终止一个进程; -
SIGSTOP
。17号信号,相当于ctr + z 来暂停一个进程的执行,常用来暂停后台进程的执行。 - 给予特定进程一个信号:
-
kill -9 进程号
或者kill -SIGSTOP 进程号
进程优先级调整
进程的优先级由内核动态指定,即Priority
的值。Priority
的值越小,则优先级越高。但是用户是不能随意指定Priority
的值的,因此Linux操作系统引入了Nice
,取值范围为:[-20, 19]
,用户可以通过指定Nice
的值来调整进程的优先级,二者的关系为:
Priority(new) = Priority(old) + Nice
但并非用户修改了一个进程的Nice
指标后,Priority
的值就会根据上面的关系式改变。内核会进行分析,最终才能决定最后的Priority
的值。
-
nice -n n command
-- 执行新命令并赋予Nice值 -
renice n 进程ID
-- 对已经存在的进程赋予新的Nice值
查看进程打开的文件
-
lsof -u 用户名
-- 显示特定用户的所有进程各自打开的文件 -
lsof -p 进程ID
-- 显示某个进程打开的文件 -
lsof +d 目录路径
-- 显示某个目录下面所有被打开的文件 -
lsof +D 目录路径
-- 递归显示某个目录下的所有被打开的文件
查找正在执行的某个命令或者可执行程序的进程ID
pidof
-- 正在执行的可执行程序的路径或命令