linux常用操作指令1—— 查看和管理进程指令(ps、top、pstree、kill)

查看和管理进程

1、使用ps命令监控系统进程

ps:查看进程状态 (一个瞬间的进程状态,静态)

语法: ps [options]

参数格式:

    UNIX格式:一个"-"开头

    BSD格式:没有"-"开头

    GNU长格式:两个"-"开头

常用参数:
	a  # 显示与终端相关的所有进程,包含每个进程的完整路径

  u  # 显示进程的用户信息

  x  # 显示与终端无关的所有进程

  -a  # 显示所有终端下执行的进程

  -u  # 显示指定用户相关的进程信息

  -e  # 显示所有进程

  -f  # 额外显示UUID PPID C与STIME栏位

  f  # 显示进程树

  -H  # 显示进程树

  -I  # 以详细的格式来显示进程的状况

  -o  # 自定义输出指定字段,以逗号分隔

实例1: ps -ef
 # 常用组合,UNIX格式组合 -e -f ,额外显示UID,PPID,C与STIME栏位

[root@centos7 ~]# ps
   PID TTY          TIME CMD
  1525 pts/0    00:00:00 bash
  1884 pts/0    00:00:00 ps
[root@centos7 ~]# ps -ef   
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 10:04 ?        00:00:01 /usr/lib/systemd/systemd --switched-rroot          2      0  0 10:04 ?        00:00:00 [kthreadd]
root          3      2  0 10:04 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 10:04 ?        00:00:00 [kworker/0:0H]
root          7      2  0 10:04 ?        00:00:00 [migration/0]  

# UID    进程被该UID所拥有  
# PID    进程的标识号,进程ID 
# PPID   进程的父进程的标识号  
# C     CPU使用的资源百分比  
# STIME  进程开始的时间  
# tty   该进程实在哪个终端机上面运作,若与终端无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0表示网络连接进主机的进程 
# TIME   进程所使用的总的CPU时间 
# CMD   正在执行的命令

实例2: ps aux
BSD格式参数,使用a选项和x选项显示所有进程 ,u显示进程的用户信息

[root@centos7 ~]# ps aux      # BSD格式参数,使用a选项和x选项显示所有进程 u显示进程的用户信息
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.2  43680  4052 ?        Ss   10:04   0:01 /usr/lib/systemd/systroot          2  0.0  0.0      0     0 ?        S    10:04   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    10:04   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   10:04   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    10:04   0:00 [migration/0]      

# USER    该进程所属用户  
# PID     该进程的进程号    
# %CPU     该进程使用掉的CPU资源百分比   
# %MEM    该进程所占用的内存百分比  
# VSZ     该进程使用掉的虚拟内存量  
# RSS     该进程占用的固定的内存量  
# TTY     该进程在那个终端机上面运行的  
# STAT  
   R 正在运行  S 正在中断睡眠中  D 不可中断睡眠  
   T  正在侦测或者是停止了  Z  已经终止,或者zombie僵死进程,    
   + 前台进程  l 多线程进程  N 低优先级进程  
   < 高优先级进程  s 进程领导者  L 已将页面锁定到内存中    
# START    该进程被触发启动的时间    
# TIME    该进程实际使用CPU运作的时间  # COMMAND  该进程的实际命令



实例3: ps - l
将目前属于您自己这次登入的 PID 与相关信息列示出来

# UNIX格式参数,使用参数-l以详细的格式显示进程的状况

[root@centos7 ~]# ps -l 
F S    UID    PID   PPID  C  PRI  NI ADDR  SZ  WCHAN  TTY          TIME CMD
4 S     0    1525   1419  0  80   0   -  29122 do_wai pts/0    00:00:00 bash
0 R     0    1898   1525  0  80   0   -  38300 -      pts/0    00:00:00 ps
    
    # F 代表这个进程的flag,4代表超级用户
    # S 代表这个进程的状态(STAT),
    # PRI  优先级Priorty的缩写,执行顺讯
    # NI  NICE值
    # ADDR  指出该进程在内存那个部分,如果是个running进程,一般是“-”
    # SZ    使用掉的内存大小
    # WCHAN  进程是否在运行当中,-表示正在运行

实例4: ps -ef |grep
ps 与grep 常用组合用法,查找特定进程。
在这里插入图片描述
实例5:ps -u root
显示指定用户进程

[root@localhost ~]# ps  -u zhaojiedi1992             # 查看有效用户为zhaojiedi1992的进程
   PID TTY          TIME CMD
 15368 pts/3    00:00:00 bash
 15389 pts/3    00:00:00 vim
 15390 pts/3    00:00:00 vim

2、使用pstree命令监控系统进程

树状查看 (可以看出所属子进程)

  • linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。
主要参数

-h:高亮显示当前的进程及其祖先
-H:高亮显示指定进程及其祖先
-p:显示进程的pid
-s:显示特定进程的直系进程
-u:指定用户

实例1:pstree -p
显示当前所有进程的进程号和进程ID。
在这里插入图片描述
实例2:pstree -a
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
在这里插入图片描述

3、使用top命令监控系统进程

top:“实时查看” ,按q退出 (实时动态显示)

   -a  # 将进程按照使用内存排序

  -b  # 批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中,配合-n使用,一直打到-n设置的阈值

  -c  # 显示进程的整个命令路径,而不是只显示命令名称

  -d  # 指定每两次屏幕信息刷新之间的时间间隔

  -H  # 指定这个可以显示每个线程的情况,否则就是进程的总的状态

  -i  # 不显示闲置或者僵死的进程状态  

  -n  # top输出信息更新的次数,完成后将推出top命令

  -p  # 显示指定的进程信息

键入 top,显示如下信息

top - 14:27:26 up 4:22, 1 user, load average: 0.08, 0.03, 0.05
Tasks:  96 total,   2 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 :  1865284 total,  1460360 free,    96264 used,   308660 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1595216 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND            
  2029 root      20   0       0      0      0 R  0.3  0.0   0:00.14 kworker/0:1 

第一行:任务队列信息,同uptime命令的执行结果
   

  14:27:26    # 当前系统时间
  up  4:26    # 系统已经运行了4个半小时
  1 user     # 当前有1个用户登录系统
  load average: 0.08, 0.03, 0.05    # 1分钟,5分钟,15分钟的平均负载情况

第二行:Tasks为任务(进程)。上面的信息显示为
  共有96个进程,处于运行状态的有2个,94个在休眠,stoped状态0个,zombie状态有0个

第三行:CPU状态信息
  us  # 用户空间占用CPU的百分比
  sy  # 内核空间占用cpu的百分比
  ni  # 改变优先级的进程占用CPU的百分比
  id  # 空闲CPU百分比
  wa  # I/O等待只用CPU的百分比
  hi  # 硬中断占用CPU的百分比
  si  # 软中断
  st  # 虚拟机占用CPU的百分比

第四行:内存状态

  total  # 物理内存总量
  used   # 使用中的内存总量
  free   # 空闲内存总量
  buffers  # 缓冲的内存量

第五行:swap交换分区信息
  total  # 交换分区总量
  used   # 使用的交换区总量
  free    # 空闲交换区总量
  cached  # 缓存的内存量

第六行:空行
第七行:给出的各进程(任务)的状态监控
  PID  # 进程iD
  USER  # 进程所有者
  PR    # 进程优先级
  NI    # nice值,负值表示高优先级,正值表示低优先级
  VIRT    # 进程使用的虚拟内存总量,单位为KB
  RES    # 进程使用的,未被换出的物理内存大小,单位KB
  SHR    # 共享内存大小,单位为kb
  S      # 进程状态,D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
  %CPU    # 上次更新到现在的CPU时间占用百分比
  %MEM    # 进程使用的物理内存百分比
  TIME+    # 进程使用的物理内存百分比
  COMMAND  # 进程名称

常用操作

1:设置top命令10秒刷新一次。

命令:top -d 102:显示程序及其完整相关信息

命令:top -c

 

例3:设定监控信息的更新次数。如设定系统任务信息更新5次后结束top命令,在命令行提示符下输入:

命令:top -n 5 

4、结束进程

kill[参数][进程号]

常用参数

-l :信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称。
-a :当处理当前进程时,不限制命令名和进程号的对应关系。
-p :指定kill 命令只打印相关进程的进程号,而不发送任何信号。
-s :指定发送信号。
-u :指定用户。

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

HUP    1    终端断线

INT     2    中断(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + \)

TERM   15    终止

KILL    9    强制终止

CONT   18    继续(与STOP相反, fg/bg命令)

STOP    19    暂停(同 Ctrl + Z)

实例1:查看信号的编号
在这里插入图片描述
实例2:杀死指定进程:这个常用

先用ps查找进程,然后用kill杀掉
命令:kill 3268

 
例:强制终止进程,向进程3268发送9信号,也就是杀死他
命令:kill –9 3268
说明:这种方法应该尽量少用。

注意:kill结束进程有些关键进程是无法杀死的。比如:

  • bash的进程。
  • init进程是无法被终止,或者说是不允。

参考

1、https://www.cnblogs.com/shijiaqi1066/p/3836017.html
2、https://www.cnblogs.com/flashfish/p/10750917.html

猜你喜欢

转载自blog.csdn.net/JMW1407/article/details/107747796