进程查询和删除 ps, pgrep, top, kill

1. 查询运行中的进程 ps

  • ps aux: 查询所有运行中的进程
➜  ~ ps aux (只展示部分)
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
_windowserver      230  11.4  0.5  7691192  44908   ??  Ss   24Jun20 329:26.96 /System/
root               296   6.7  1.0  5465444  87664   ??  Ss   24Jun20  28:38.35 /System/
qiushye          39630   5.9  1.9  9101816 160652   ??  S    12:03PM   0:57.58 /Applica

上述结果的列名含义如下:

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT:该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令

  • ps aux | grep [str]: 查找匹配字符串[str]的进程
➜  ~ ps aux | grep 230 (这里查pid)
_windowserver      230   0.6  0.6  7741640  52828   ??  Rs   24Jun20 379:44.27 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon
_driverkit       15230   0.0  0.0  4799176    972   ??  Ss   10:07AM   0:00.02 /System/Library/DriverExtensions/AppleUserHIDDrivers.dext/AppleUserHIDDrivers com.apple.driverkit.AppleUserUSBHostHIDDevice0 0x10000a7f5
qiushye          32820   0.0  0.0  4286712    684 s002  S+   12:13PM   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn 230
  • ps -A (| head -4): 获取所有进程信息,| head -4 用于展示4行内容
➜  ~ ps -A | head -4
  PID TTY           TIME CMD
    1 ??        14:16.34 /sbin/launchd
  107 ??         0:21.43 /usr/sbin/syslogd
  108 ??         2:23.21 /usr/libexec/UserEventAgent (System)
  •  ps -ef (| head -4): 获取所有进程信息, -e等同于-A, -f 展示uid, pid等信息
➜  ~ ps -ef | head -4
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 24Jun20 ??        14:16.64 /sbin/launchd
    0   107     1   0 24Jun20 ??         0:21.43 /usr/sbin/syslogd
    0   108     1   0 24Jun20 ??         2:23.21 /usr/libexec/UserEventAgent (System)

上述结果的列名含义如下:

UID 程序被该 UID 所拥有

PID 就是这个程序的 ID 

PPID 则是其上级父程序的ID

C CPU 使用的资源百分比

STIME 日期信息

TTY 登入者的终端机位置

TIME 使用掉的 CPU 时间。

CMD 所下达的指令为何

  • ps -u root: 获取root用户的进程信息
➜  ~ ps -u root
  UID   PID TTY           TIME CMD
    0     1 ??        14:17.79 /sbin/launchd
    0   107 ??         0:21.46 /usr/sbin/syslogd
    0   108 ??         2:23.24 /usr/libexec/UserEventAgent (System)
    0   111 ??         0:11.97 /System/Library/PrivateFrameworks/Uninstall.framework/Res
  • ps -o uid,pid,comm: 输出指定的进程字段,如uid, pid, comm(命令)
➜  ~ ps -o uid,pid,comm
  UID   PID COMM
  501 33301 /bin/zsh
  501   449 /Applications/iTerm.app/Contents/MacOS/iTerm2
  501   466 -zsh
  501  7057 /Applications/iTerm.app/Contents/MacOS/iTerm2
  501  7061 -zsh
  501 60798 /Applications/iTerm.app/Contents/MacOS/iTerm2
  501 60801 -zsh
  501 62294 mongo

2. 根据命令名称查询进程pgrep

  • pgrep (-o/ -n/ -l) [process_name]: 匹配命令带有[process_name]的进程, -o表示最老的进程,-n表示最新的进程,-l展示PID和命令
➜  ~ pgrep iTerm2
449
6049
6075
57566
60798
➜  ~ pgrep -n "iTerm2"
60798
➜  ~ pgrep -o "iTerm2"
449
➜  ~ pgrep -l iTerm2
449 iTerm2
6049 iTerm2
6075 iTerm2
57566 iTerm2
60798 iTerm2
  • pgrep -u [user] [process_name]: 匹配用户[uesr]下的命令带有[process_name]的进程
➜  ~ pgrep -u root iTerm2
➜  ~ pgrep -u qiushye iTerm2
449
6049
6075
57566
60798
  • pgrep -f "process_name parameter": 匹配命令名为process_name且参数带parameter的进程
➜  ~ pgrep -lf "iTerm2 --launch_shell"
449 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server /usr/bin/login -fpl qiushye /Applications/iTerm.app/Contents/MacOS/iTerm2 --launch_shell
457 /usr/bin/login -fpl qiushye /Applications/iTerm.app/Contents/MacOS/iTerm2 --launch_shell
  • pgrep -P [pid]: 输出父进程为[pid]的子进程号
➜  ~ pgrep -P 449
457

3. 查看实时运行的进程信息 top

  • top: 查看所有进程信息,顶部展示了总体的进程信息,

Processes:进程和线程运行数量

Load Avg:系统的平均负载数,表示 1分钟、5分钟、15分钟到现在的平均数CPU usage表示cpu使用率

PhysMem: 物理内存使用情况

VM: 虚拟内存使用情况

Networks: 流入流出包情况

Disks: 磁盘读写情况

主体列表展示了各进程的信息,其中

PID       进程 id
COMMAND   命令
%CPU      cup 占比
TIME      运行时间
#TH       线程数量
MEM       内存
CMPRS     表示属于您的进程的压缩数据的字节数(不是位)。
PPID 父进程id

Processes: 323 total, 2 running, 321 sleeping, 1916 threads                     12:15:10
Load Avg: 3.97, 2.99, 2.62  CPU usage: 29.59% user, 27.44% sys, 42.95% idle
SharedLibs: 144M resident, 39M data, 12M linkedit.
MemRegions: 160012 total, 2000M resident, 38M private, 693M shared.
PhysMem: 7723M used (2434M wired), 468M unused.
VM: 1595G vsize, 1882M framework vsize, 469317134(64) swapins, 474197570(106491) swapouts
Networks: packets: 60304834/30G in, 44926219/7402M out.
Disks: 71819139/2541G read, 21626745/1976G written.

PID    COMMAND      %CPU  TIME     #TH   #WQ  #PORTS  MEM    PURG   CMPRS  PGRP  PPID
54281  gopls        120.7 13:46.92 16    0    35      1320M  0B     447M-  350   54214
0      kernel_task  70.4  08:13:03 226/4 0    0       342M   0B     0B     0     0
351    iTerm2       12.5  44:24.07 8     3    382-    186M-  8128K  43M-   351   1
  • top -o cpu -O +rsize -s 5 -n 20: 按cpu降序, 剩余存储升序排列,每5秒更新,展示20行。-o表示主排序,-O表示子排序, 排序的key包含pid, cpu, command, time, mem, uid等。
PID    COMMAND      %CPU TIME     #TH  #WQ  #POR MEM  PURG CMPR PGRP  PPID STATE
667    bash         0.0  00:00.03 1    0    11   500K 0B   492K 667   1    sleeping
1355   ioupsd       0.0  00:00.01 1    0    24   516K 0B   512K 120   120  sleeping
  • top -stats pid,command,cpu,th,pstate,time: 主体只展示进程号,命令,cpu占用,线程数,状态和运行时间
PID         COMMAND               %CPU      #TH        STATE         TIME
351         iTerm2                13.3      10         sleeping      45:13.26
230         WindowServer          7.4       10         sleeping      09:10:05
166         hidd                  4.9       6          sleeping      89:45.12
  • top -user [user_name]:只展示属于[user_name]用户的进程
PID    COMMAND      %CPU TIME     #TH   #WQ  #PORT MEM    PURG CMPRS  PGRP  PPID
0      kernel_task  5.4  08:14:04 226/4 0    0     425M   0B   0B     0     0
57147  top          3.7  00:02.24 1/1   0    25    4124K  0B   0B     57147 7061
120    powerd       0.2  04:42.84 3     2    116   2276K  0B   1108K  120   1

4. 终止进程 kill

  • kill (-n | signal) pid: 终止进程号为pid的进程, -n或signal表示设置的信号

kill -1 | HUP:终端断线

kill -2 | INT:中断进程,等同于ctrl+C

kill -3 | QUIT:退出进程,等同于ctrl+\

kill -9 | KILL: 强制立刻杀死进程

kill -15 | TERM: 终止进程 (默认信号),可以使得进程在退出之前清理并释放资源

kill -17 | STOP: 暂停进程

kill -19 | CONT: 继续进程

  • kill -l : 输出所有可用的信号名称,具体对应数字从1开始叠加
➜  ~ kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值