首页 > 系统相关 >Linux 进程探查

Linux 进程探查

时间:2023-12-20 21:22:06浏览次数:27  
标签:探查 00 ps -- 显示 列表 Linux 进程

想监测Linux进程,需要熟悉 ps 命令的用法。

Linux系统中使用的GNU ps 命令支持3种不同类型的命令行参数:
 Unix风格的参数,前面加单破折线;
 BSD风格的参数,前面不加破折线;
 GNU风格的长参数,前面加双破折线。

1. Unix风格的参数

Unix风格的参数是从贝尔实验室开发的AT&T Unix系统上原有的 ps 命令继承下来的。
Unix风格的ps命令参数

参 数 描 述
-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 不要显示进程标记(process flag,表明进程状态的标记)
-Z 显示安全标签(security context) 信息
-H 用层级格式来显示进程(树状,用来显示父进程)
-n namelist 定义了WCHAN列显示的值
-w 采用宽输出模式,不限宽度显示
-L 显示进程中的线程
-V 显示ps命令的版本号

使用 ps 命令的关键不在于记住所有可用的参数,而在于记住最有用的那些参数。,如果想查看系统上运行的所有进程,可用 -ef参数组合。

$ ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD 
root         1     0  0 11:29 ?        00:00:01 init [5] 
root         2     0  0 11:29 ?        00:00:00 [kthreadd] 
root         3     2  0 11:29 ?        00:00:00 [migration/0] 
root         4     2  0 11:29 ?        00:00:00 [ksoftirqd/0] 
root         5     2  0 11:29 ?        00:00:00 [watchdog/0] 
root         6     2  0 11:29 ?        00:00:00 [events/0] 
root         7     2  0 11:29 ?        00:00:00 [khelper] 
root        47     2  0 11:29 ?        00:00:00 [kblockd/0] 
root        48     2  0 11:29 ?        00:00:00 [kacpid] 

-e 参数指定显示所有运行在系统上的进程; -f 参数则扩展了输出,这些扩展的列包含了有用的信息。
 UID:启动这些进程的用户。
 PID:进程的进程ID。
 PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
 C:进程生命周期中的CPU利用率。
 STIME:进程启动时的系统时间。
 TTY:进程启动时的终端设备。
 TIME:运行进程需要的累计CPU时间。
 CMD:启动的程序名称。

如果想要获得更多的信息,可采用 -l 参数,它会产生一个长格式输出。

$ ps -l 
F S  UID PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY      TIME   CMD 
0 S  500 3081  3080  0  80   0 -  1173 wait pts/0   00:00:00 bash 
0 R  500 4463  3081  1  80   0 -  1116 -    pts/0   00:00:00 ps 
$ 

注意使用了 -l参数之后多出的那些列。
 F :内核分配给进程的系统标记。
 S :进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵
化,进程已结束但父进程已不存在;T代表停止)。
 PRI :进程的优先级(越大的数字代表越低的优先级)。
 NI :谦让度值用来参与决定优先级。
 ADDR :进程的内存地址。
 SZ :假如进程被换出,所需交换空间的大致大小。
 WCHAN :进程休眠的内核函数的地址。

2. BSD风格的ps命令参数

参 数 描 述
T 显示跟当前终端关联的所有进程
a 显示跟任意终端关联的所有进程
g 显示所有的进程,包括控制进程
r 仅显示运行中的进程
x 显示所有的进程,甚至包括未分配任何终端的进程
U userlist 显示归userlist列表中某用户ID所有的进程
p pidlist 显示PID在pidlist列表中的进程
t ttylist 显示所关联的终端在ttylist列表中的进程
| O format | 除了默认输出的列之外,还输出由format指定的列 |

|X | 按过去的Linux i386寄存器格式显示 |
|Z | 将安全信息添加到输出中 |
|j |显示任务信息 |
| l |采用长模式 |
|o format | 仅显示由format指定的列 |
| s |采用信号格式显示 |
| u | 采用基于用户的格式显示 |
|v |采用虚拟内存格式显示 |
|N namelist | 定义在WCHAN列中使用的值 |
|O order | 定义显示信息列的顺序 |
|S | 将数值信息从子进程加到父进程上,比如CPU和内存的使用情况 |
| c | 显示真实的命令名称(用以启动进程的程序名称) |
| e| 显示命令使用的环境变量 |
| f | 用分层格式来显示进程,表明哪些进程启动了哪些进程 |
| h| 不显示头信息 |
| k sort| 指定用以将输出排序的列 |
| n |和WCHAN信息一起显示出来,用数值来表示用户ID和组ID |
| w |为较宽屏幕显示宽输出 |
|H |将线程按进程来显示 |
|m |在进程后显示线程 |
|L| 列出所有格式指定符 |
|V |显示ps命令的版本号 |

在使用BSD参数时, ps 命令会自动改变输出以模仿BSD格式。下例是使用l 参数的输出:

$ ps l 
F  UID  PID PPID PRI  NI  VSZ  RSS WCHAN  STAT TTY      TIME COMMAND 
0  500 3081 3080  20   0 4692 1432 wait   Ss   pts/0    0:00 -bash 
0  500 5104 3081  20   0 4468  844 -      R+   pts/0    0:00 ps l 
$ 

注意,其中大部分的输出列跟使用Unix风格参数时的输出是一样的,只有一小部分不同。
 VSZ:进程在内存中的大小,以千字节(KB)为单位。
 RSS:进程在未换出时占用的物理内存。
 STAT:代表当前进程状态的双字符状态码。

第一个字符采用了和Unix风格 S 列相同的值,表明进程是在休眠、运行还是等待。第二个参数进一步说明进程的状态。
 < :该进程运行在高优先级上。
 N :该进程运行在低优先级上。
 L :该进程有页面锁定在内存中。
 s :该进程是控制进程。
 l :该进程是多线程的。
 + :该进程运行在前台。

3. GNU风格的ps命令参数

参 数 描 述
--deselect 显示所有进程,命令行中列出的进程
--Group grplist 显示组ID在grplist列表中的进程
--User userlist 显示用户ID在userlist列表中的进程
--group grplist 显示有效组ID在grplist列表中的进程
--pid pidlist 显示PID在pidlist列表中的进程
--ppid pidlist 显示父PID在pidlist列表中的进程
--sid sidlist 显示会话ID在sidlist列表中的进程
--tty ttylist 显示终端设备号在ttylist列表中的进程
--user userlist 显示有效用户ID在userlist列表中的进程
--format format 仅显示由format指定的列
--context 显示额外的安全信息
--cols n 将屏幕宽度设置为n列
--columns n 将屏幕宽度设置为n列
--cumulative 包含已停止的子进程的信息
--forest 用层级结构显示出进程和父进程之间的关系
--headers 在每页输出中都显示列的头
--no-headers 不显示列的头
--lines n 将屏幕高度设为n行
--rows n 将屏幕高度设为n排
--sort order 指定将输出按哪列排序
--width n 将屏幕宽度设为n列
--help 显示帮助信息
--info 显示调试信息
--version 显示ps命令的版本号

可以将GNU长参数和Unix或BSD风格的参数混用来定制输出。GNU长参数中一个着实让人喜爱的功能就是 --forest 参数。它会显示进程的层级信息,并用ASCII字符绘出可爱的图表。

1981 ?        00:00:00 sshd 
3078 ?        00:00:00  \_ sshd 
3080 ?        00:00:00      \_ sshd 
3081 pts/0    00:00:00          \_ bash 
16676 pts/0    00:00:00              \_ ps 

这种格式让跟踪子进程和父进程变得十分容易。

标签:探查,00,ps,--,显示,列表,Linux,进程
From: https://www.cnblogs.com/conpi/p/17917624.html

相关文章

  • 断网或者杀死进程后,退出房间的最长时间
    RTCSDK5.1.13版本之前:一端杀进程,或是断网,server端会在60s后触发超时逻辑,另一端会收到对端离线的消息。不立刻发送通知是因为断网情况,server要兼容断线重连逻辑,需要对客户端的断网有一个容忍时长(目前是60s),也不会立即发送断线的通知。RTCSDK5.1.13版本及之后:可以提工单......
  • Linux的链接文件
    如需要在Linux系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:符号链接硬链接符号链接就......
  • 5.经典进程同步问题
    生产者消费者问题一组生产者进程和一组消费者进程共享一个初始为空,大小为n的缓冲区。当缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待,只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者从中取出消息。......
  • 4.进程同步与互斥
    生产者消费者问题一组生产者进程和一组消费者进程共享一个初始为空,大小为n的缓冲区。当缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待,只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者从中取出消息。......
  • linux 内存碎片处理
    Linux内存碎片化主要由于内存的分配和释放不均匀导致,会降低内存利用效率。可以通过以下方法对Linux内存进行碎片整理:执行sync命令:该命令会强制将内存中的脏数据写回磁盘,释放内存。这可以腾出较大的连续内存块,减少碎片。执行echo1>/proc/sys/vm/drop_caches命令:该命令会......
  • 在linux中使用chmod更改文件权限
    在linux中使用chmod更改文件权限的方法一、chmod基本用法chmod是修改文件权限的命令。可以更改文件或目录的读、写、执行权限。其基本语法如下:chmod[options]modefileoptions:是可选的,可以是一些额外的参数,用来指定修改权限的方式,例如-R表示递归地修改目录及其子目录中......
  • Linux 本地安装搭建Gitlab私有仓库实现无公网远程访问
    GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。Gitlab是被广泛使用的基于git的开源代码管理平台,基于RubyonRails构建,主要针对软件开发过程中产生的代码和文档进行管理,Gitlab主要针对group和project两个维度进行代码和......
  • 《算法、C++、Linux、Android》
    ......
  • FastDFS 单机版linux部署笔记
    参考文章:https://blog.csdn.net/qq_20409407/article/details/134201386备忘:fastdfs三部分路径为:/home/fastdfs/tracker/home/fastdfs/storage/home/fastdfs/client#fastdfs命令工具所在路径usr/└──bin/├──fdfs_appender_test├──fdfs_appender_test1├......
  • DBus.server服务启动报错->"/etc/selinux/*/contexts/dbus_contexts": No such file o
    系统启动后很多使用dbus1的命令没法使用,查看日志发现dbus.service没有启动,并伴随下面报错:Failedtostartmessagebus:Failedtoopen"/etc/selinux/targeted/contexts/dbus_contexts":Nosuchfileordirector 进入到该目录后发现缺少这个文件,经过简单搜索发现这个由......