目录

简介

进程优先级是 0-139 共 140 个优先级,数字越小优先级越高,高优先级能获取更多的 CPU 资源优先执行这个任务。0-99:系统分配优先级,用户不可操控,100-139:nice 值,用户可操控的调整只能用 -20~19,root 用户可随意调整 -20~19 之间的值。

ps(process status)

查看运行命令那一刻的进程状态。

Usage:ps [options]
Options:

  • a,显示和终端有关的进程,在某个终端中输入的命令。
  • u,显示和进程用户的信息
  • x,显示和终端无关的进程,内核等进程
  • -e,显示所有进程信息
  • -l,显示进程长格式
  • -F,显示进程完整信息

不加选项显示与终端有关的进程,ps命令有两种风格的使用方法,第一种是BSD:ps -aux,第二种是 systemV:ps -elF

ps -aux 数据内容解释

  • USER,此由那个用户运行的
  • PID,进程ID号,存放在/proc下,CentOS7中进程ID为1的是systemd,6中ID为1的进程是init,id为1的进程是所有进程的父进程。
  • %CPU,占用CPU百分比
  • %MEM,占用内存(Memory)百分比
  • VSZ,虚拟内存集(计算进程占据物理内存,其中共享库被计算在内)
  • RSS,常驻内存集(进程不能被交换出去的数据)
  • TTY,运行在那个终端上
  • STAT,进程状态
    • D,不可终端睡眠
    • S,可中断睡眠状态
    • R,运行状态
    • T,停止状态
    • Z,僵尸状态
    • s,session leader(会话领导者)
    • <,优先级较高的进程(用户不可控)
    • N,优先级较低的进程(用户可控进程)
    • l,多线程进程
    • L,在内存中锁定分页
    • +,前台进程组中的进程
  • START,进程启动时间
  • TIME,该进程在 CPU 实际运行时长
  • COMMAND,进程命令 name

ps -elF 数据内容解释

  • PRI,系统分配的优先级,用户不可更改
  • NI,nice 值

如果要调整正在运行中进程的nice值

renice [nice_num] PID

以指定的优先级运行命令

nice -n nice_num COMMAND

top

每 3 秒显示进程动态信息

top - 15:53:58 up 57 min,  3 users,  load average: 0.00, 0.01, 0.04
Tasks:  95 total,   1 running,  94 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   500152 total,   175252 free,   101132 used,   223768 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.   358424 avail Mem 

第一行:当前系统时间,系统运行时长,登录系统用户个数,过去1分,5分,15分平均负载(只查看负载可以用uptime)。
第二行:进程总数 正在运行进程数 睡眠进程数 停止状态进程数 僵尸进程数
第三行:CPU相关信息:us(用户进程所占CPU百分比) sy(系统进程占CPU百分比) ni(nice占CPU百分比) id(空闲进程占CPU百分比) hi(硬件中断占CPU百分比) si(软件中断占CPU百分比) st(被hypervisor偷走的占CPU百分比)
第四行:物理内存信息
第五行:交换分区内存信息

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  • PR,优先级
  • NI,nice值
  • VIRT,虚拟内存
  • RES,常驻内存
  • SHR,共享内存
  • S,状态
  • %CPU,CPU占用率
  • %MEM,内存占用率
  • TIME+,CPU运行进程的时间

top 交互式命令:

  • 1,可查看每个CPU信息
  • M,按内存百分比排序
  • P,按CPU百分比排序
  • T,按进程运行时长排序
  • c,是否显示COMMAND完整路径
  • l,是否显示第一行
  • t,是否显示第二行和第三行
  • m,是否显示内存相关信息
  • k,杀死某个进程(输入PID)
  • q,退出top命令

pstree

查看进程树父子关系

pgrep

查看进程PID号

pgrep process_name
pidof process_name

kill & pkill

杀死某个进程,向进程传递某个信号,信号是进程之间的通信(IPC),也可以跨系统通信。

kill -l 查看信号列表:

  • 1 SIGHUP,不停止服务情况下,重新读取配置文件并应用。
  • 2 SIGINT,Ctrl+c中断某个进程
  • 9 SIGKILL,强制杀死某个进程
  • 15 SIGTERM,终止某个进程(默认使用的信号)

使用

kill -SIG_NAME PID

也可杀死整个进程树,杀死父进程子进程也会被杀死。

killall -SIG_NAME PID

pkill [options] <pattern> 按照名称杀死进程。

常见几种用法

杀掉已登录终端,-t 匹配终端 -9 发送强制结束信号。

pkill -t -9  pts/2

按照进程名称杀掉

pkill python3

前台进程:李四用终端执行的进程,就是当你运行一个命令不能再执行其他命令这就是前台进程。

foreground-process.png

后台进程:执行命令不利用终端执行的进程

  • &,启动时直接调入后台运行 例子:cp sxx.txt /root/ &
  • Ctrl+z,把进程调入后台停止运行,可以用 bg 把所有进程调入后台继续运行。
  • jobs,查看进程作业序号,1 是作业号,+ 下一次要执行的作业1,- 下一次要执行的作业 2。
  • kill,%Jobnumber 杀死指定后台作业,例子:kill %1
  • fg,把后台进程调入前台运行,例子:fg Jobnumber

lsof

lsof(List Open Files)用来查看进程是由那些文件中打开。

Usage:lsof [u][+d]
Options:

  • -u,来指定查看那个用户
  • -n,禁止解析 IP
  • +d,指定查看某个目录下已经被打开的文件。

最简单用法就是看某个进程打开了哪些文件。这里需要说明,最好要 root 运行才能看的全,普通用户查到的信息是很少的。

ubuntu@TeamServer:~$ sudo lsof
COMMAND       PID     TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
bash       108820                             ubuntu  cwd       DIR              202,1      4096     256459 /home/ubuntu/CobaltStrike4.5-cat
bash       108820                             ubuntu  rtd       DIR              202,1      4096          2 /
bash       108820                             ubuntu  txt       REG              202,1   1183448       5522 /usr/bin/bash
bash       108820                             ubuntu  DEL       REG              202,1                 2920 /usr/lib/x86_64-linux-gnu/ld-2.31.so
bash       108820                             ubuntu  mem       REG              202,1       252       7486 /usr/lib/locale/C.UTF-8/LC_IDENTIFICATION
java       415315  415318 ParGC\x20             root    3r      REG              202,1 142638235    1024382 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules (deleted)
java       415315  415318 ParGC\x20             root    4r      REG              202,1     53615      29779 /usr/share/java/java-atk-wrapper.jar
java       415315  415318 ParGC\x20             root    5r      REG              202,1  34967268     263285 /home/ubuntu/CobaltStrike4.5-cat/cat_server.jar
java       415315  415318 ParGC\x20             root    6u     sock                0,9       0t0   14131159 protocol: TCPv6
java       415315  415318 ParGC\x20             root    7r      REG              202,1     53615      29779 /usr/share/java/java-atk-wrapper.jar
......

常用于查看端口被那些程序占用 lsof -i:端口号

先查端口,发现 8091。

ubuntu@TeamServer:~$ ss -lntp
State                Recv-Q               Send-Q                                    Local Address:Port                                Peer Address:Port               Process               
LISTEN               0                    128                                           127.0.0.1:6010                                     0.0.0.0:*                                        
LISTEN               0                    4096                                            0.0.0.0:8091                                     0.0.0.0:*                                        
LISTEN               0                    4096                                      127.0.0.53%lo:53                                       0.0.0.0:*                                        
LISTEN               0                    128                                             0.0.0.0:22                                       0.0.0.0:*                                        
LISTEN               0                    128                                                   *:1080                                           *:*                                        
LISTEN               0                    128                                                   *:1081                                           *:*                                        
LISTEN               0                    128                                               [::1]:6010                                        [::]:*                                        
LISTEN               0                    32                                                    *:443                                            *:*                                        
LISTEN               0                    32                                   [::ffff:127.0.0.1]:59103                                          *:*                                        
LISTEN               0                    128                                                [::]:22                                          [::]:*                                        

通过 8091 确认是 huanginxg 这个应用占用的,对应 PID 2421137。这里有个缺陷是 COMMAND 对于太长的命令会截断显示,最好根据 PID 去 /proc 查运行参数,只查应用名就直接 ps 查即可。

ubuntu@TeamServer:~$ sudo lsof -i:8091 -n
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
huanxiang    2421137 root    3u  IPv4 25199418      0t0  TCP *:8091 (LISTEN)
huanxiang    2421137 root    7u  IPv4 28809910      0t0  TCP 172.26.7.83:8091->223.104.41.168:48707 (ESTABLISHED)
huanxiang    2421137 root    9u  IPv4 28811665      0t0  TCP 172.26.7.83:8091->223.104.41.168:48729 (ESTABLISHED)
huanxiang    2421137 root   11u  IPv4 28812442      0t0  TCP 172.26.7.83:8091->223.104.41.168:24163 (ESTABLISHED)
huanxiang    2421137 root   12u  IPv4 28812484      0t0  TCP 172.26.7.83:8091->223.104.41.168:49420 (ESTABLISHED)
huanxiang    2421137 root   13u  IPv4 28812429      0t0  TCP 172.26.7.83:8091->223.104.41.168:24162 (ESTABLISHED)
huanxiang    2421137 root   15u  IPv4 28819427      0t0  TCP 172.26.7.83:8091->223.104.41.168:25636 (ESTABLISHED)
huanxiang    2421137 root   42u  IPv4 28816172      0t0  TCP 172.26.7.83:8091->223.104.41.168:25628 (ESTABLISHED)
huanxiang    2421137 root   44u  IPv4 28814480      0t0  TCP 172.26.7.83:8091->223.104.41.168:49467 (ESTABLISHED)
huanxiang    2421137 root   59u  IPv4 28816263      0t0  TCP 172.26.7.83:8091->223.104.41.168:25631 (ESTABLISHED)

最近更新:

发布时间:

摆哈儿龙门阵