Linux
reference: 《Linux命令行与Shell脚本编程大全》,本文内容绝大部分来自书内(命令啥的比起背果然还是自己敲一敲来的直观一些)
监测程序
-
探查进程
ps
- 默认情况下,ps只会显示运行在当前控制台下的,属于当前用户的进程
- Linux中使用的GNU ps命令支持3种不同类型的命令行参数
- Unix风格,前面加单破折线
- BSD风格,前面不加破折线
- GNU风格,前面加双破折线
- 这里拿Unix风格列出来作为例子
参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示所有除控制进程(session leader)和无终端进程外的所有进程 -d 显示除控制进程外的所有进程 -e 显示所有进程 -C cmdlist 显示包含在cmdlist列表中的进程 -G grplist 显示组ID在grplist列表中的进程 -U userlist 显示属主的用户ID在userlist列表中的进程 -g grplist 显示会话或组ID在grplist列表中的进程 -p pidlist 显示PID在pidlist列表中的进程 -s sesslist 显示会话ID在sesslist列表中的进程 -t ttylist 显示终端ID在ttylist列表中的进程 -u userlist 显示有效用户ID在userlist列表中的进程 -F 显示更多额外输出(相对-f) -O format 显示默认的输出列以及format列表指定的特定列 -M 显示进程的安全信息 -c 显示进程的额外调度器信息 -f 显示完整格式的输出 -j 显示任务信息 -l 显示长列表 -o format 仅显示由format指定的列 -y 不要显示进程标记(显示进程状态的标记) -Z 显示安全标签信息 -H 用层级格式来显示进程 -n namelist 定义了WCHAN列显示的值 -w 采用宽输出模式,不限宽度显示 -L 显示进程中的线程 -V 显示ps命令的版本号 (说实在的指令太多,最后也用不上几个,况且这只是UNIX风格的而已,这种还是适合自己用时查,绝对比记列表靠谱多了)
-
一些例子:
-
ps -a
输出的只有TTY(终端设备)参数有值的所有进程,且不包含控制进程 -
ps -A
则为所有 -
ps -la
相比-a会多出许多其他属性供查看 -
ps -L
会多出LWP参数,表示线程 - 很多指令后面都是可以直接加上进程号的,不输入的情况下只会把此操作的进程号展示出来
-
-
一些在输出中可能出现的属性:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要带累计CPU时间
- CMD:启动的程序名称
- F:内核分配给进程的系统标记
- S:进程的状态
- O代表正在运行(Operating)
- S代表在休眠(Sleep)
- R代表可运行,等待运行(Runnable)
- Z代表僵化,进程已结束但父进程已不存在(Zombie 僵尸进程)
- T代表停止(Terminated)
- PRI:进程的优先级(数字越大优先级越低)
- NI:谦让度值用来参与决定优先级
- ADDR:进程的内存地址
- SZ:假如进程被换出,所需交换空间的大致大小
- WCHAN:进程休眠的内核函数地址
-
实时监测进程
-
top
能够实时显示进程信息-
f
可以选择对输出进行排序的字段- 进入后能够上下选择字段用来排序,s表示确定
- d控制此字段是否显示
- q退出并让设置生效
-
d
修改轮询间隔(刷新频率) -
q
退出
-
- 一些字段属性
- PID,USER,PR,NI,S和上面一样
- VIRT 占用虚拟内存
- RES 占用物理内存
- SHR 和其他进程共享的内存
- %CPU 进程使用的CPU时间比例
- %MEM 使用的内存占可用内存的比例
- TIME+ 启动开始所占时间总量
- COMMAND 对应命令行名称,即启动的程序名
-
-
结束进程
-
kill PID
,需要是进程属主或者root用户 -
killall name
可以通过进程名来结束进程,且在其中可以设置通配符(root用户使用时要小心)- 比如
killall http*
结束以http开头的所有进程
- 比如
-
网友评论