UNIX中每个进程都有唯一的数字ID,不同的实例可以同时进行,但是ID不一样,一个进程中包含多种属性
我们学习和进程相关的命令,主要是top,ps pgrep
那么,关于进程的信息,就是如下
ps是收集进程信息的重要工具,其包含
进程拥有者 起始时间 命令行路径 进程ID 进程所属的终端
ps直接使用的显示
ps
PID TTY TIME CMD
5412 pts/3 00:00:00 bash
24580 pts/3 00:00:00 ps
ps命令会结合一系列的参数使用,不使用任何参数,ps会显示运行在当前终端TTY的进城
分别显示PID TTY CMD
如果需要显示更多的信息的更多的列,可以使用-f,例如
ps -f
还会在之中显示UID
如果需要显示在系统中的每一个进城,需要使用选项-e every 或者 -ax all 来生成相同输出
ax的含义还是解除默认的TTY限制
ps -ef显示更多的信息
ps还能显示更多的信息,一般使用-o获取到想要显示的列
-o往往需要配合一个参数列表来使用
-o一般是和-e结合使用的,如果需要过滤某些线程,就不要使用-e,因为这会使得过滤器失效
comm表示COMMAND pcpu表示CPU占用率
参数列表如下
接下来是一些其他的查看进程命令
top
对于管理员来说即为主要的命令,top会显示若干个CPU占用最多的进城
ps进行输出排序
利用–sort 可以配合PS进行特定的排序
ps [OPTIONS] –sort –
需要列出占用CPU最多的10个进程,可以使用
ps -eo pid,comm,pcpu,user,time –sort -pcpu | head
我们可以配合着找到一些其他的目录,比如配合grep命令
ps -eo pid,comm,pcpu,user,time –sort -pcpu | grep java
我们可以识别一个命令的多个进程ID
ps -C COMMAND_NAME
我们可以使用ps来获取到命令对应的进程ID
ps -C COMMAND_NAME -o pid=
后面 pid移除了头部的PID
或者使用工具
pgrep COMMAND
pgrep bash
1255
1680
pgrep只需要命令的一部分就可以了进行模糊搜索了
ps则需要完全的名称
pgrep COMMAND -d “换行符”
pgrep bash -d
指定查看某个用户的列表
pgrep -u root,slynux COMMAND
其中root和slynux都是用户名
返回匹配的进城数量
pgrep -c COMMAND
根据真实用户或者ID以及有效用户或者ID进行过滤PS输出
可以用ps来对ID进行分组,过滤PS的输出
使用 -u 来指定有效用户列表
使用 -U来指定真实用户列表
ps -u root -U root -o user,pcpu
使用TTY来过滤ps输出
指定进程所属的TTY选择ps的输出,-t来指定TTY列表
ps -t TTY1,TTY2..
ps -t pts/0
进程线程相关的信息
与线程进程相关的信息在ps的输出中是看不到的,我们可以使用-L在ps输出中显示线程相关的信息,输出NLWP和NLP
分别是线程数量,和线程ID
首先是ps -eLf
这样会列出对应的线程数和线程ID
支持输出宽度和显示的列
我们可以再输出的时候,对格式进行标准化
-f ps -ef
u ps -e u
ps ps -e w
显示一个进程所需要的环境变量
我们需要显示这个命令所需要的环境变量
可以使用
ps -eo cmd e
使用cmd来展示环境变量
ps -eo pid,cmd e | tail -n 20
COMMAND PID CMD
systemd 1 /usr/lib/systemd/systemd –switched-root –system –deserialize 22
kthreadd 2 [kthreadd]
ksoftirqd/0 3 [ksoftirqd/0]
kworker/0:0H 5 [kworker/0:0H]
migration/0 7 [migration/0]
rcu_bh 8 [rcu_bh]
rcu_sched 9 [rcu_sched]
lru-add-drain 10 [lru-add-drain]
watchdog/0 11 [watchdog/0]
kdevtmpfs 13 [kdevtmpfs]
netns 14 [netns]
khungtaskd 15 [khungtaskd]
writeback 16 [writeback]
kintegrityd 17 [kintegrityd]
bioset 18 [bioset]
bioset 19 [bioset]
bioset 20 [bioset]
kblockd 21 [kblockd]
md 22 [md]
这种方式可以最终设置的环境变量的参数错误,我们如果设置错误了环境变量
比如使用crontab的调度工具设置,会依赖某些环境变量,如果没有设置好环境变量,可能导致到了时间,仍然没有按时启动,因为需要启动Windowapp,而windowapp的环境变量没有配好
于是我们需要知道环境变量,就需要ps -C windowapp -eo cmd e
然后重新修改就可以了