ps命令详解
原文地址:http://apps.hi.baidu.com/share/detail/32573968
有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下,进程的数 量要比程序多的多。为此从阅读方面考虑,管理员需要知道系统中运行的具体程序。要实现这个需求的话,就需要利用命令ps来帮忙。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等。总之大部分信息都是可以通过执行该命令得到的。
内存使用率前十进程: ps -eo pid,ppid,%mem --sort=-%mem | head -n 10
根据进程号查看内存使用率
在Linux系统中,你可以使用多种命令来根据进程号(PID)查看内存使用率。以下是一些常用的方法:
- 使用
ps
命令
ps
命令用于显示当前系统的进程状态。结合grep
命令,你可以根据PID查找特定的进程并查看其内存使用情况。
ps -p <PID> -o pid,%mem,cmd |
其中:
<PID>
是你要查询的进程号。-p <PID>
指定你要查询的进程号。-o pid,%mem,cmd
指定输出格式,包括进程号、内存使用率和命令名。
# ps -ef|grep -v grep |grep hermes-admin work 3489 5374 0 Mar20 ? 00:06:12 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/xxs/hermes-admin -Dfile.encoding=UTF-8 -Dapp.name=hermes-admin -jar ../app.jar # ps -p 3489 -o pid,%mem,cmd PID %MEM CMD 3489 21.0 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCM #
- 使用
top
或htop
命令
top
和htop
是实时显示系统状态的命令。你可以在它们的界面中按进程号查找特定的进程。
- 对于
top
,你可以按o
键,然后输入进程号进行过滤。 - 对于
htop
,你可以直接在界面上按F4
键,然后输入进程号进行过滤。
这两个命令都会显示进程的内存使用率。
3. 使用pmap
命令
pmap
命令可以显示进程的内存映射。虽然它提供了更详细的内存使用信息,但可能不如上述命令直观。
pmap -x <PID> |
其中<PID>
是你要查询的进程号。
4. 使用/proc
文件系统
Linux的/proc
文件系统包含了大量关于系统和进程的信息。你可以直接读取与进程相关的文件来获取内存使用信息。
例如,对于PID为<PID>
的进程,你可以查看/proc/<PID>/status
文件来获取内存使用信息:
cat /proc/<PID>/status | grep VmRSS |
VmRSS`表示进程当前使用的物理内存大小(以KB为单位)。
这些命令和方法提供了不同的视角和详细程度来查看进程的内存使用率。你可以根据自己的需要选择使用哪种方法。
查看内存使用率靠前的百分比
要查看内存使用率靠前的进程及其所占的百分比,你可以使用ps
命令结合sort
命令来实现。以下是一个示例命令:
ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 10 |
这个命令的解释如下:
ps
:显示进程状态。-eo
:使用自定义格式输出。pid
:显示进程ID。ppid
:显示父进程ID(可选,但有助于了解进程间的关系)。%mem
:显示进程使用的物理内存百分比。cmd
:显示启动进程的命令名称。--sort=-%mem
:根据内存使用率降序排序。注意-
表示降序,%mem
是排序依据。head -n 10
:只显示前10行,即内存使用率最高的10个进程。
执行这个命令后,你将看到内存使用率最高的前10个进程及其占用的内存百分比。
如果你想要更详细的内存使用信息,包括交换空间(swap)的使用情况,可以使用top
命令,并在运行时按M
键来根据内存使用进行排序,或者你可以使用htop
命令,它提供了一个更友好的交互式界面。
请注意,ps
命令显示的内存使用百分比是进程使用的物理内存占系统总物理内存的百分比,并不包括交换空间(swap)的使用情况。如果需要包括交换空间的使用情况,你可能需要查看/proc/[pid]/smaps
文件或使用其他工具。但通常物理内存的使用是更关注的指标,因为交换空间的使用可能会导致性能下降。
# ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 10 PID PPID %MEM CMD 3489 5374 21.0 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/hermes-admin -Dfile.encoding=UTF-8 -Dapp.name=hermes-admin -jar ../app.jar 22294 22292 9.0 /axx/xxent/socketbeat/bin/socketbeat -c /xx/xxgent/socketbeat/conf/socketbeat-kafka.yml 6046 1 3.2 /usr/bin/java -Xmx200m -cp /xx/xxagent/flume/lib/*:/lib/* -Dflume.monitoring.type=http -Dflume.monitoring.port=5001 -Djava.library.path= org.apache.flume.node.Application -n flume-master -apollo -configUrl http://test-apollo.xxxx.com -appId arch -clusterName agent -namespaceName flume 3468 3458 1.4 /usr/bin/python /usr/bin/salt-minion 3472 3468 0.5 /usr/bin/python /usr/bin/salt-minion 4592 1 0.3 /usr/sbin/rsyslogd -n 3458 1 0.3 /usr/bin/python /usr/bin/salt-minion 5374 1 0.3 /usr/bin/python2 /usr/bin/supervisord -c /home/server/supervisor/supervisord.conf 5487 5486 0.3 /xx/xxagent/telegraf/bin/telegraf --config /xx/xxagent/telegraf/conf/telegraf.conf #
根据进程号,查看资源使用情况
在Linux中,你可以通过几种方法来根据进程号(PID)查看进程的资源使用情况,包括CPU、内存、磁盘I/O等。以下是一些常用的方法:
1. 使用top
或htop
命令
top
和htop
是实时显示系统状态的命令,你可以通过它们查看进程的CPU和内存使用情况。在top
或htop
的界面中,你可以按进程号来过滤和查找特定的进程。
top
命令中,你可以按o
键,然后输入进程号进行过滤。htop
命令中,你可以直接在界面上按F4
键,然后输入进程号进行过滤。
这两个命令都会显示进程的CPU使用率、内存使用率以及其他相关信息。
2. 使用ps
命令
ps
命令用于显示当前系统的进程状态,你可以结合不同的选项来查看进程的CPU、内存等资源使用情况。
例如,以下命令可以显示指定PID的进程及其CPU和内存使用情况:
ps -p <PID> -o pid,pcpu,pmem,cmd |
其中:
<PID>
是你要查询的进程号。-p <PID>
指定你要查询的进程号。-o pid,pcpu,pmem,cmd
指定输出格式,包括进程号、CPU使用率、内存使用率和命令名。
# ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 3 PID PPID %MEM CMD 22294 22292 27.4 /xx/xxagent/socketbeat/bin/socketbeat -c /xx/axxagent/socketbeat/conf/socketbeat-kafka.yml 3489 5374 21.1 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/hermes-admin -Dfile.encoding=UTF-8 -Dapp.name=hermes-admin -jar ../app.jar # ps -p 22294 -o pid,pcpu,pmem,cmd PID %CPU %MEM CMD 22294 0.2 27.4 /xx/xxagent/socketbeat/bin/socketbeat -c /xx/xxxagent/socketbeat/conf/socketbeat-kafka.yml #
3. 使用pidstat
命令
pidstat
命令可以报告指定进程的CPU、内存、磁盘I/O等统计信息。例如:
pidstat -p <PID> -d -r -t 1 |
这个命令会每秒更新一次指定PID的进程的磁盘I/O和内存使用情况。-d
选项用于显示磁盘I/O统计信息,-r
选项用于显示内存使用情况,-t
选项用于显示线程统计信息,1
表示每秒更新一次。
# ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 3 PID PPID %MEM CMD 22294 22292 27.4 /xx/xxagent/socketbeat/bin/socketbeat -c /xx/axxagent/socketbeat/conf/socketbeat-kafka.yml 3489 5374 21.1 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/hermes-admin -Dfile.encoding=UTF-8 -Dapp.name=hermes-admin -jar ../app.jar # pidstat -p 22294 -d -r -t 1 Linux 5.4.65-200.el7.x86_64 (vm-qa-xxxs-admin002.xx.xxx.com) 03/21/2024 _x86_64_ (2 CPU) 10:50:49 AM UID TGID TID minflt/s majflt/s VSZ RSS %MEM Command 10:50:50 AM 0 22294 - 0.00 0.00 1434320 1106416 27.48 socketbeat 10:50:50 AM 0 - 22294 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22296 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22297 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22298 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22299 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22300 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22301 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22302 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22303 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 22306 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:50 AM 0 - 25137 0.00 0.00 1434320 1106416 27.48 |__socketbeat 10:50:49 AM UID TGID TID kB_rd/s kB_wr/s kB_ccwr/s Command 10:50:50 AM 0 22294 - 0.00 0.00 0.00 socketbeat 10:50:50 AM 0 - 22294 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22296 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22297 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22298 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22299 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22300 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22301 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22302 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22303 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 22306 0.00 0.00 0.00 |__socketbeat 10:50:50 AM 0 - 25137 0.00 0.00 0.00 |__socketbeat
4. 使用/proc
文件系统
Linux的/proc
文件系统包含了大量关于系统和进程的信息。对于特定的PID,你可以查看/proc/[pid]/
目录下的文件来获取各种资源使用情况的信息。
例如:
/proc/[pid]/status
文件包含了进程的内存、CPU等使用情况。/proc/[pid]/io
文件包含了进程的磁盘I/O信息(如果可用的话)。
你可以使用cat
命令来查看这些文件的内容。
cat /proc/<PID>/status | |
cat /proc/<PID>/io |
请注意,不是所有的进程都会提供完整的资源使用信息,这取决于进程的类型和配置。同时,确保你有足够的权限来读取这些信息。通常,读取/proc
文件系统下的文件需要root权限。
这些方法提供了不同的视角和详细程度来查看进程的资源使用情况。你可以根据自己的需要选择使用哪种方法。
# ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 3 PID PPID %MEM CMD 22294 22292 27.4 /xx/xxagent/socketbeat/bin/socketbeat -c /xx/axxagent/socketbeat/conf/socketbeat-kafka.yml 3489 5374 21.1 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/hermes-admin -Dfile.encoding=UTF-8 -Dapp.name=hermes-admin -jar ../app.jar # cat /proc/22294/status Name: socketbeat Umask: 0022 State: S (sleeping) Tgid: 22294 Ngid: 0 Pid: 22294 PPid: 22292 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 22294 NSpid: 22294 NSpgid: 22292 NSsid: 22292 VmPeak: 1434320 kB VmSize: 1434320 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 1106416 kB VmRSS: 1106416 kB RssAnon: 1088752 kB RssFile: 17664 kB RssShmem: 0 kB VmData: 1268048 kB VmStk: 132 kB VmExe: 27064 kB VmLib: 2044 kB VmPTE: 2332 kB VmSwap: 0 kB HugetlbPages: 0 kB CoreDumping: 0 THP_enabled: 1 Threads: 11 SigQ: 0/15629 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000000 SigCgt: ffffffffffc1feff CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: thread vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 3005 nonvoluntary_ctxt_switches: 45 # cat /proc/22294/io rchar: 2952366 wchar: 432887 syscr: 5007 syscw: 4366 read_bytes: 26152960 write_bytes: 839680 cancelled_write_bytes: 0 #
根据进程名称查看内存使用率
在Linux系统中,有多种方法可以查看进程的内存使用率。以下是一些常用的方法:
-
使用
top
命令:top
命令可以实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。直接输入top
命令,然后按M
键,可以按内存使用量对进程进行排序。 -
使用
ps
命令:ps
命令用于报告当前系统的进程状态。你可以结合sort
命令和grep
命令来查找特定进程的内存使用情况。例如,要查看名为"myprocess"的进程的内存使用情况,可以使用以下命令:
ps -e -o pid,comm,%mem --sort=-%mem | grep myprocess |
# ps -e -o pid,comm,%mem --sort=-%mem | grep java
1996 java 36.1
1997 java 32.2
880 java 4.4
# ps -ef|grep java
root 880 1 0 2023 ? 02:57:53 /usr/bin/java -Xmx200m -cp /mcw/xxagent/flume/lib/*:/lib/* -Dflume.monitoring.type=http -Dflume.monitoring.port=5001 -Djava.library.path= org.apache.flume.node.Application -n flume-master -apollo -configUrl http://test-apollo.xx.com -appId arch -clusterName agent -namespaceName flume
work 1996 2494 0 Mar06 ? 01:02:39 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=512M -Xss512K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12321,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/meta-human -Dfile.encoding=UTF-8 -Dapp.name=meta-human -jar ../app.jar
work 1997 2494 0 Mar06 ? 01:08:45 /bin/java -server -Xms1G -Xmx1G -XX:MaxPermSize=256M -Xss256K -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+HeapDumpOnOutOfMemoryError -Xrunjdwp:transport=dt_socket,address=12322,server=y,suspend=n -XX:HeapDumpPath=../logs/ -Dbasedir=/home/apps/meta-xx-admin -Dfile.encoding=UTF-8 -Dapp.name=meta-xx-admin -jar ../app.jar
root 9318 7903 0 15:32 pts/0 00:00:00 grep --color=auto java
这个命令会显示所有进程,按内存使用率降序排序,并过滤出名为"myprocess"的进程。
3. 使用pmap
命令:pmap
命令用于显示进程的内存映射。你可以使用它来查看特定进程的详细内存使用情况。例如:
pmap -x [进程ID] |
将[进程ID]
替换为你要查看的进程的PID。
4. 使用/proc
文件系统:
Linux的/proc
文件系统是一个虚拟文件系统,它包含有关系统运行时信息的接口。每个进程在/proc
下都有一个以其PID命名的目录。你可以查看这些目录中的文件来获取进程的内存使用信息。例如,/proc/[PID]/status
文件包含了关于进程的详细信息,包括内存使用情况。
请注意,不同的方法可能会提供不同级别的详细信息,你可以根据你的需求选择合适的方法。另外,如果你正在使用其他类型的操作系统(如Windows或macOS),那么查看进程内存使用率的方法可能会有所不同。
ps 根据进程id 只查看指定进程的相关资源
如果你只想使用 ps
命令来查看指定进程(通过进程号,即 PID)的资源使用情况,你可以使用以下命令:
ps -p <PID> -o pid,pcpu,pmem,cmd,%time,%mem |
这里,<PID>
是你想要查看的进程号。选项解释如下:
-p <PID>
:只显示指定 PID 的进程。-o
:指定输出格式。pid
:显示进程号。pcpu
:显示 CPU 使用率。pmem
:显示物理内存使用率。cmd
:显示启动进程的命令名称。%time
:显示 CPU 时间百分比(自进程启动以来)。%mem
:显示内存使用的百分比(物理内存)。
查看内存使用前十的,都是同一个父id,都是supervisor管理的,主要是启动的程序太多,导致的内存使用率高
# ps -eo pid,ppid,%mem --sort=-%mem | head -n 10 PID PPID %MEM 3895 14372 8.7 3899 14372 8.1 3865 14372 7.3 3921 14372 7.3 3942 14372 7.3 3909 14372 6.3 3849 14372 5.2 19112 14372 3.2 10159 14372 3.2 # ps -p 14372 -o pid,pcpu,pmem,cmd,%time, PID %CPU %MEM CMD pid,pcpu,pmem,cmd, ELAPSEDime, 14372 0.1 0.1 /usr/bin/python2 /usr/bin/spid,pcpu,pmem,cmd,1045-15:11:45ime, [root@vm-ureplicator008.mcw.com mcw]# ps -p 14372 PID TTY TIME CMD 14372 ? 1-07:09:09 supervisord # superctl status ureplicator-controller RUNNING pid 16120, uptime 0:00:27 ureplicator-controller-ali-biz-zzidc RUNNING pid 31738, uptime 6 days, 15:49:43 ureplicator-controller-idc-ali RUNNING pid 16860, uptime 6 days, 2:17:08 ureplicator-controller-zzidc-ali RUNNING pid 8294, uptime 6 days, 13:50:09 ureplicator-controller-zzidc-ali-log RUNNING pid 16538, uptime 6 days, 15:00:33 ureplicator-controller-zzidc-alibiz RUNNING pid 5685, uptime 6 days, 12:20:25 ureplicator-controller-zzidc-rt-alibiz RUNNING pid 21942, uptime 6 days, 8:23:58 ureplicator-work RUNNING pid 16203, uptime 0:00:09 ureplicator-work-ali-biz-zzidc RUNNING pid 19112, uptime 6 days, 16:31:45 ureplicator-work-copy RUNNING pid 3921, uptime 6 days, 18:50:40 ureplicator-work-idc-ali RUNNING pid 3892, uptime 6 days, 18:50:40 ureplicator-work-zzidc-ali RUNNING pid 3865, uptime 6 days, 18:50:40 ureplicator-work-zzidc-ali-log RUNNING pid 3942, uptime 6 days, 18:50:40 ureplicator-work-zzidc-alibiz RUNNING pid 3899, uptime 6 days, 18:50:40 ureplicator-work-zzidc-rt-alibiz RUNNING pid 10159, uptime 6 days, 17:00:05 ureplicator_controller-sgidc-big-zzidc RUNNING pid 22219, uptime 5 days, 16:29:31 ureplicator_controller-sgidc-log-zzidc RUNNING pid 18375, uptime 3 days, 18:34:02 ureplicator_controller-zzidc-big-sgidc RUNNING pid 1981, uptime 6 days, 10:54:22 ureplicator_work-sgidc-big-zzidc RUNNING pid 3909, uptime 6 days, 18:50:40 ureplicator_work-sgidc-log-zzidc RUNNING pid 3849, uptime 6 days, 18:50:40 ureplicator_work-zzidc-big-sgidc RUNNING pid 3895, uptime 6 days, 18:50:40 # free -mh total used free shared buff/cache available Mem: 7.8G 6.9G 158M 378M 730M 269M Swap: 0B 0B 0B #
如果你还想要查看更多关于该进程的详细信息,可以添加其他字段,例如 vsize
(虚拟内存大小)、rss
(常驻集大小,即物理内存使用量)等。
例如:
ps -p <PID> -o pid,pcpu,pmem,cmd,%time,%mem,vsize,rss |
请注意,ps
命令显示的是进程在采样时刻的瞬时状态,如果你想要持续监控进程的资源使用情况,可能需要结合其他工具(如 watch
命令)或者定期运行 ps
命令。
如果你想要实时查看进程的资源使用情况,top
或 htop
可能是更好的选择,因为它们会动态地更新进程信息。不过,使用 top
或 htop
时,你可以通过按相应的键(如 o
在 top
中)来过滤并只显示特定 PID 的进程。
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
############################################################
常用参数:
-A 显示所有进程(等价于-e)(utility)
-a 显示一个终端的所有进程,除了会话引线
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
-u uid or username 选择有效的用户id或者是用户名
-g gid or groupname 显示组的所有进程。
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
-o 用户自定义格式。
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行
############################################################
ps命令常用用法(方便查看系统进程)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
############################################################
运行 ps aux 的到如下信息:
root:# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
smmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00 f
root 3532 0.0 0.2 2428 452 ? Ss 20:40 0:00 gpm -m /dev/input/mice -t imps2
htt 3563 0.0 0.0 2956 196 ? Ss 20:41 0:00 /usr/sbin/htt -retryonerror 0
htt 3564 0.0 1.7 29460 3704 ? Sl 20:41 0:00 htt_server -nodaemon
root 3574 0.0 0.4 5236 992 ? Ss 20:41 0:00 crond
xfs 3617 0.0 1.3 13572 2804 ? Ss 20:41 0:00 xfs -droppriv -daemon
root 3627 0.0 0.2 3448 552 ? SNs 20:41 0:00 anacron -s
root 3636 0.0 0.1 2304 420 ? Ss 20:41 0:00 /usr/sbin/atd
dbus 3655 0.0 0.5 13840 1084 ? Ssl 20:41 0:00 dbus-daemon-1 --system
Head标头:
USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
PPID 父进程的进程ID(Parent Process id)
SID 会话ID(Session id)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲 Idle
Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先 级进程 低优先序的进程
L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组
START 进程启动时间和日期
TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令
NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识
############################################################
例子:
查看当前系统进程的uid,pid,stat,pri, 以uid号排序.
ps -eo pid,stat,pri,uid –sort uid
查看当前系统进程的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args –sort rss
############################################################
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。
1、ps 的参数说明:
ps 提供了很多的选项参数,常用的有以下几个:
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。
2、ps aux 或 lax 输出的解释:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态(有以下几种)
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
3、应用举例:
[root@localhost ~]# ps -aux |more
可以用 | 管道和 more 连接起来分页查看。
[root@localhost ~]# ps -aux > ps001.txt
把结果输出到ps001.txt文本中并保存。
[root@localhost ~]# more ps001.txt
这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看。
4、kill 终止(杀死)进程,有十几种控制进程的方法,下面是一些常用的方法:
[root@localhost ~]#kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
[root@localhost ~]#kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
[root@localhost ~]#kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
[root@localhost ~]#kill -9 -1
终止你拥有的全部进程。
SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
############################################################
利用ps命令向管理员报告执行中的程序:
有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所在在同等情况下,进程的数 量要比程序多的多。为此从阅读方面考虑,管理员需要知道系统中运行的具体程序。要实现这个需求的话,就需要利用命令ps来帮忙。
一、ps命令显示结果的含义。
当需要查看系统中执行的程序时,虽然ps 命令不是唯一的命令,但绝对是使用的最频繁的命令。如下图所示,就是执行ps命令后显示的结果。
在命令行中输入命令ps,就可以显示系统中当前运行的所有应用程序。如上图所示,如果输入ps命令,其显示结果主要有四部分内容。首先是PID,这是程序 的ID号。才作系统就是利用这个ID号来唯一的标识应用程序,而不是利用命令来辨认。当需要强制关闭应用程序时,就需要用到这个PID号码。其次是 TTY,这个字段表示用户使用的终端代码。Pts表示用户是采用远程登录的。第三个参数TIME表示这个程序所消耗的CPU时间,注意这个时间不是程序开 始运行的时间。最后一个参数CMD就表示程序的名字。
二、让系统报告详细的信息。
在使用ps命令时,如果不采用任何的可选项,则其显示的信息是非常有限的,而且往往只显示当前用户所运行的程序。当系统管理员需要知道应用程序更加详细的 运行信息时,如想要知道这个应用程序内存、CPU的占用率情况时,那么就需要加入一些可选项。如系统管理员需要一并查看其它用户所执行的应用程序时,就需 要在这个命令后面采用可选项-al。如此的话,系统会列出系统中所有用户运行的所有程序。如想要知道某个程序CPU与内存的使用情况,而不是只简单的现实 其CPU的使用时间,那么就需要在这个命令后面加入参数-l ,即使用ps –l命令可以让系统显示出应用程序的详细运行信息。关于上面各个字段所代表的含义,大家若有兴趣的话可以查看相关的帮助。一般来说,系统管理员关心的只是 程序的PID号码、内存与CPU的使用率、命令的名字、用户采用的终端等等。其它的信息对于系统管理员来说价值不是很大。
三、查看后台运行的程序。
默认情况下,ps命令只显示前台运行的程序,而不会显示后台运行的程序。但是并非所有的程序都是在前台运行。正常情况下,隐藏在后台运行的程序数量要比前 台运行的程序多的多。如随着操作系统启动而启动的不少系统自带程序,其运行的方式都是后台运行。而且有时候,系统出现问题往往是由于后台程序所造成的。如 常见的木马等程序都是在后台所运行的。为此系统管理员相对来说,更加想要知道在后台运行着哪些程序。
如果要查看后台运行的程序,那就比较复杂一点。因为在不同版本的Linux操作系统中,要显示后台进程其所采用的可选项是不同的。如在红帽子 Linux操作系统中,其实采用参数的形式而不是可选项。即采用ps aux命令可以显示出所有的应用程序(包括前台与后台的)。参数与可选项的差异主要在前面又没有这个-符号。如果带有这个符号的就表示这是一个可选项。而 如果不带的,就表示这事一个参数。这个符号一般情况下可不能够省。在该写的地方没写,或者不需要些的地方偏偏加上了,则系统都会提示错误信息,说找不到这 个命令。而在其它的Linux系统版本中,可能不能够识别这个aux参数。如在一些Linux操作系统版本中,需要采用-a可选项来完成这个任务。由于系 统版本之间的差异,给系统管理员带来了不少的麻烦。不过值得庆幸的是,各个操作系统版本中都有在线的帮助。如果系统管理员在使用一个新版本的操作系统时, 不知道要显示全部进程该使用哪个可选项时,可以利用ps --heip等命令来查看系统帮助。不过美中不足的是,系统在线帮助都是英文的,对系统管理员的英文水平是一个不小的考验。不过如果要作Linux系统管 理员,这点英文底子还是要有的。因为最新的Linux技术基本上都是先出来英文文档的。其实要掌握最先进的操作系统书籍,大部分的计算机书籍都是英文的。
四、对程序列表进行排序。
当运行的应用程序比较多时,系统管理员需要对应用程序进行排序。Ps命令的排序功能是比较强的。主要是因为这个命令有一个--sort参数(注意在这个参 数前面采用的是两个小横杆符号,各位读者不要以为是笔者写错了)。在这个参数后面加上系统管理员想要的排序字段,就可以进行排序了。如这个命令ps –A --sort cmd,就表示显示系统所有的应用程序,并根据程序命令来进行排序。在Linux操作系统参数中,还有一个比较麻烦的事情,就是参数大小写不同往往代表着 不同的含义。如上面这个命令,将大写字母A换成是小写字符a,则结果就完全两样了。大写字符A表示所有的应用程序,而小写字符a则表示“all w/ tty except session leaders”。两者有本质的区别。通过这个差异可以用来过滤不同终端登陆帐户所运行的应用程序。
在ps命令中,不少参数都有这种情况。运行ps --help查看这个命令的所有参数,就可以看到类似的大小写不同代表不同含义的情况还有很多。如大写字符O与小写字符o、大写字符U与小写字符u等等。 这些差异无形之中增加了系统管理员维护操作系统的难度。系统管理员要掌握这么多的参数以及参数大小写之间的差异,往往是不可能的。系统管理员除了平时要多 使用使用常用的参数来增加值观的印象,这个系统命令的在线帮助确实也是少不了的。这个系统帮助可以给管理员使用系统命令提供在线的指导。
五、报告特定程序的运行情况。
当系统中运行的程序比较多时,通过对程序名字排序可以帮助管理员找到自己所关心的程序。但是这仍然不是最简便的方式。如现在系统管理员在其它操作系统中发 现有一个叫做threadx的木马程序在系统后台运行。为此管理员需要在其它电脑上查看是否也有这个木马程序在运行。此时该如何处理呢?利用排序功能,对 程序的名字进行排序(注意不是对程序的PID进行排序,因为即使程序相同,启动的时间不同或者操作系统中已经启动程序的数量不同,这个PID号码也就不 同。也就是说这个PID号码是自动生成的)。这在一定程度上可以帮助管理员加快程序查找的速度。不过笔者认为,如果系统管理员能够使用管道符与 grep等查询命令可能会更快的找到自己所需要的应用程序信息。
如现在系统管理员若使用这个命令ps aux |grep “threadx”,会出现什么情况呢?首先系统会列出当前系统中所有运行的应用程序(包括前台运行与后台运行的)。然后将输出的结果通过管道符号|传递 给命令grep。然后命令grep就会在ps命令输出的结果中查找是否有threadx这个程序运行的信息。如果有的话,则会在窗口中显示这个程序的信 息,而过滤掉其它应用程序的运行信息。可见采用管道符跟其它查询命令结合,可以帮助系统管理员在最短的时间内找到自己想了解的应用程序的信息。
跟一些特殊符号结合还可以实现一些更加负责的功能。如跟cat命令结合使用可以统计出符合条件的程序数量。如在命令后面加入>符号,可以将输出的结 果定位到一个文件中。如跟通配符结合使用,可以查询出满足特定条件的一类程序。如还可以查询出某个程序父程序或者其子程序的运行信息等等。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到。ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
参数:
- -A :所有的进程均显示出来,与 -e 具有同样的效用;
- -a : 显示现行终端机下的所有进程,包括其他用户的进程;
- -u :以用户为主的进程状态 ;
- x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
- l :较长、较详细的将该PID 的的信息列出;
- j :工作的格式 (jobs format)
- -f :做一个更为完整的输出。
特别说明:
由于 ps 能够支持的系统类型相当的多,所以他的参数多的离谱,而且有没有加上 - 差很多!
1.将目前属于您自己这次登入的 PID 与相关信息列示出来
各相关信息的意义为:
- F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
- S 代表这个程序的状态 (STAT);
- UID 代表执行者身份
- PID 进程的ID号!
- PPID 父进程的ID;
- C CPU使用的资源百分比
- PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
- NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
- ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
- SZ 使用掉的内存大小;
- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
- TTY 登入者的终端机位置;
- TIME 使用掉的 CPU 时间。
- CMD 所下达的指令名称
2.列出目前所有的正在内存当中的程序
- USER:该进程属于那个使用者账号。
- PID :该进程的进程ID号。
- %CPU:该进程使用掉的 CPU 资源百分比;
- %MEM:该进程所占用的物理内存百分比;
- VSZ :该进程使用掉的虚拟内存量 (Kbytes)
- RSS :该进程占用的固定的内存量 (Kbytes)
- TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
- STAT:该程序目前的状态,主要的状态有:
- R :该程序目前正在运作,或者是可被运作;
- S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。
- T :该程序目前正在侦测或者是停止了;
- Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
- START:该进程被触发启动的时间;
- TIME :该进程实际使用 CPU 运作的时间。
- COMMAND:该程序的实际指令。
原文链接:https://www.cnblogs.com/wxgblogs/p/6591980.html
1. 用 | 管道和 more 连接起来分页查看
命令:ps -aux |more
2. 把所有进程显示出来,并输出到ps.txt文件
命令:ps -aux > ps.txt
3. 输出指定的字段
命令: ps -o pid,ppid,pgrp,tpgid,comm
4. 结合watch命令 实时显示系统的进程状态
命令: watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
ps简介:
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps
(1) ps :是显示瞬间进程的状态,并不动态连续;
(2) top:如果想对进程运行时间监控,应该用 top 命令;
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。
命令行格式:
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
ps命令常用用法:
(方便查看系统进程)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
ps常用参数举例:
1,基本ps使用:
$ ps
结果默认会显示4列信息。
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
这些信息在显示时未排序。
2,列出目前所有的正在内存当中的程序。也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:
$ ps -aux
Head标头:
USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
PPID 父进程的进程ID(Parent Process id)
SID 会话ID(Session id)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲 Idle
Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先 级进程 低优先序的进程
L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组
START 进程启动时间和日期
TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令
NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识
4. 可以用 | 管道和 more 连接起来分页查看。
命令:ps -aux |more
5. 把所有进程显示出来,并输出到ps001.txt文件
命令:ps -aux > ps001.txt
6. 输出指定的字段
命令:ps -o pid,ppid,pgrp,session,tpgid,comm
7,根据 CPU 使用来升序排序
$ ps -aux --sort -pcpu | less
8,根据 内存使用 来升序排序
$ ps -aux --sort -pmem | less
9,树形显示进程
$ pstree
10,查看特定用户进程
在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:
$ ps -u pungki
11,通过进程名和PID过滤
使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:
$ ps -C getty
12,显示所有进程信息,连同命令行
命令:ps -ef
---------------------
作者:SaiW-n_n-
来源:CSDN
原文:https://blog.csdn.net/vip_wangsai/article/details/72616587
版权声明:本文为博主原创文章,转载请附上博文链接!
1. ps是什么?
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到。
ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
-A :所有的进程均显示出来,与 -e 具有同样的效用;
-a :显示现行终端机下的所有进程,包括其他用户的进程;
-u :以用户为主的进程状态 ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
l :较长、较详细的将该PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
下面我们就来一个命令进行实践,看看不同的参数都有些什么效果。
这是一个基本的 ps 使用,我们来看看控制台中执行这个命令并查看结果。
结果默认会显示4列信息:
- PID: 运行着的命令(CMD)的进程编号
- TTY: 命令所运行的位置(终端)
- TIME: 运行着的该命令所占用的CPU处理时间
- CMD: 该进程所运行的命令
这些信息在显示时未排序。
使用 -a 参数,-a 代表 all。同时加上x参数会显示没有控制终端的进程。
$ ps -ax # 这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。 $ ps -ax | less
在需要查看特定用户进程的情况下,我们可以使用 -u 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令:
$ ps -u pungki
也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 aux 参数,来显示全面的信息:
$ ps -aux | less
当结果很长时,我们可以使用管道和less命令来筛选。
默认的结果集是未排好序的。可以通过 --sort命令来排序。
$ ps -aux --sort -pcpu | less
$ ps -aux --sort -pmem | less
$ ps -aux --sort -pcpu,+pmem | head -n 10
使用 -C 参数,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令:
$ ps -C getty
如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表:
$ ps -f -C getty
如果我们想知道特定进程的线程,可以使用 -L 参数,后面加上特定的PID。
$ ps -L 1213
有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。
$ ps -axjf
或者可以使用另一个命令。
$ pstree
如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数:
$ ps -eo pid,user,args
参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args参数显示PID,运行应用的用户和该应用。
能够与 -e 参数 一起使用的关键字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。
系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令:
$ ps -U root -u root u
-U 参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。
-u 参数用来筛选有效用户ID(EUID)。
最后的 u 参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几列组成。
这里有上面的命令的输出结果:
ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。
当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以将ps命令和watch命令结合起来。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
如果输出太长,我们也可以限制它,比如前20条,我们可以使用 head 命令来做到。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
这里的动态查看并不像top或者htop命令一样。但是使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。
举个例子,如果你只需要看名为'pungki'用户的信息,你可以使用下面的命令:
$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’
你也许每天都会使用ps命令来监控你的Linux系统。但是事实上,你可以通过ps命令的参数来生成各种你需要的报表。
ps命令的另一个优势是ps是各种 Linux系统都默认安装的,因此你只要用就行了。不要忘了通过 man ps来查看更多的参数。
=====
原文来自:https://os.51cto.com/art/202004/615653.htm
本文地址:https://www.linuxprobe.com/process-analysis-under-linux.html编辑:冯瑞涛,审核员:逄增宝
Linux命令大全:https://www.linuxcool.com/