Linux17--进程管理

Edmond辉仔 / 2023-07-21 / 原文

进程管理

查看进程

ps命令 查看进程

# 1 ps是获取当前系统进程的命令    是Process Status的缩写
  -a   : 显示当前终端的所有进程
  -u   : 显示进程的用户信息
  -x   : 显示没有控制终端的进程,同时显示各个命令的具体路径
  
  -e   : 显示所有进程
  -f   : 显示程序间的关系


  # 查看系统进程   常用组合
  ps -aux    # 中括号是系统进程  [内核态进程]
  ps -ef
  
  

# 2 -aux 和 -ef之间的区别?
   ps -aux : 会打印出cpu、内存相关的使用情况
   
   ps -ef  : 会打印出父级PID、带有UUID
   
   
   
# 3 ps -aux 结果详解
eg: ps aux | head -5

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128400  7104 ?        Ss   8月12   0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    8月12   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   8月12   0:00 [kworker/0:0H]
root          5  0.0  0.0      0     0 ?        S    8月12   0:01 [kworker/u256:0]

# 各字段详细解释
USER   运行进程的用户
PID    进程ID
%CPU   CPU占用率   
%MEM   内存占用率
    
VSZ    占用虚拟内存,单位:kb(killobytes)
         VSZ是指已分配的线性空间大小,这个大小通常并不等于程序实际用到的内存大小,产生这个的可能性很多 
         比如内存映射,共享的动态库,或者向系统申请了更多的堆,都会扩展线性空间大小。

RSS    占用实际内存,单位:kb(killobytes)
          RSZ是Resident Set Size,常驻内存大小,即进程实际占用的物理内存大小
    
TTY     进程运行的终端

STAT    进程状态    man ps (/STATE)            
   R     正在运行
   S     可中断睡眠 Sleep,即在睡眠的过程中可以接收信号唤醒=》执行的IO操作可以得到硬件设备的响应
   D     不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
   T     停止的进程 
   Z     僵尸进程
   X     死掉的进程(几乎看不见,因为死了就立即回收了)
      
   <     标注了<小于号代表优先级较高的进程
   N     N代表优先级较低的进程
     
   s     包含子进程
      
   +     +表示是前台的进程组
    
   l     小写字母l,代表以线程的方式运行,即多线程
   |     管道符号代表多进程
    
    
START  进程的启动时间
TIME   进程占用CPU的总时间

COMMAND  进程 所执行的进程命令 或进程文件
         # 带[]号的代表内核态进程
         # 不带[]号的代表用户态进程

top命令 动态查看进程

# 默认情况下,top命令是3秒刷新一次
  -d : 指定刷新的频率
  -p : 查看指定进程的信息
  -u : 查看指定用户的进程
  -n : 查看指定top次数的信息

# 4 查看进程 实时变化状态
  top  

    
    
# 5 关闭进程
  kill 进程号  # 正常关闭某进程  <==> kill -15 进程号
    -l   # 列出全部的信号
    
    常用信号:
      1 (HUP)  :重新加载进程
      9 (KILL) :强制杀死一个进程  立即终止
      15 (TERM):正常停止一个进程  会保存信息  # 默认信号
  
# 6 强行关闭某进程
  kill -9 进程id号 

# 7 关闭软件的所有进程
  pkill -9 软件名  
    eg:pkill -9 nginx  # 关闭nginx所有进程
    
  killall 软件名
    eg: killall nginx   # 关闭nginx所有进程

        
        
        

### 后台运行进程: 通过screen 来管理进程  
  1.安装:
     yum install screen -y
        
  2.创建一个screen窗口  指定名称
    screen -S myjobs
    
  3.screen窗口中执行耗时任务、进程
    wget ...
    
  4.后台运行任务   平滑退出screen 但任务还在后台运行
    ctrl+a+d   # 注:exit 才是真正关闭screen窗口
    
  5.查看所有的screen
    screen -list
    
  6.进入正在运行的screen 
    screen -r myjobs  # 调到前台执行
    
  7.终止screen
    exit  或 Ctrl + d

进程信号

kill 信号 关闭进程

HUP信号