ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux进程管理

2022-08-17 20:30:52  阅读:144  来源: 互联网

标签:00 管理 0.0 PID Linux 进程 root CPU


Linux进程管理

简介

  • 在Linux系统当中,触发任何一个事件时,系统都会将它定义成为一个进程,并给予这个进程一个ID,称为PID,同时依据启发这个进程的使用者与相关属性关系,给予这个PID一组有效的权限设置

  • 在Linux中,每一个程序都有一个自己的进程,每一个进程都有一个ID号

  • 每一个进程,都有一个父进程

  • 进程可以有两种存在方式:前台和后台。一般情况下,服务都是在后台运行的,基本的程序都是前台运行的

查看进程

静态查看进程

  • ps命令将某个时间点的程序运行情况截取下来

仅查看自己的bash相关进程

root@TNTksals:~# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  7062  7056  0  80   0 -  5285 -      pts/2    00:00:00 bash
0 R     0  7105  7062  0  80   0 -  7466 -      pts/2    00:00:00 ps
  • F:代表这个进程标识(process flags),说明这个程序的总体权限。若为4表示此程序的权限为root;若为1则表示此子程序仅进行负责(fork)而没有实际执行(exec)
  • S:代表这个进程的状态(STAT),主要状态有:
    • R:该程序正在运行中
    • S:该进程目前正在睡眠状态(idle),但可以被唤醒(signal)
    • D:不可被唤醒的睡眠状态,通常这支进程可能在等待I/O的情况
    • T:停止状态,可能是在工作控制(背景暂停)或除错(traced)状态
    • Z:僵尸状态,进程已经终止但却无法被移除至内存外
  • UID/PID/PPID:此进程被该UID所有/进程的PID号/此进程的父进程的PID号
  • C:代表CPU使用率,单位为百分比
  • PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先顺序,数值越小代表该进程越快被执行
  • ADDR/SZ/WCHAN:都与内存有关。ADDR是 kernel function,指出该进程在内存的哪个部分,如果是个 running 进程,一般就会显示 “-”;SZ代表此进程占用的内存;WCHAN表示目前进程是否在运行中,同样的,若为 “-” 表示正在运行中
  • TTY:运行该进程的终端机的位置。若与终端机无关则显示 ?;另外 tty1 ~ tty6 是本机上面的登录者程序;若为 pst/0 等等的,则表示由网络连接进主机的程序
  • TIME:使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间
  • CMD:就是 command 的缩写,造成此进程的触发程序之指令

查看系统所有进程

root@TNTksals:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3  56972  6672 ?        Ss   Aug10   0:01 /sbin/init noibrs
root         2  0.0  0.0      0     0 ?        S    Aug10   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Aug10   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Aug10   0:00 [kworker/0:0H]
......
root      7062  0.0  0.2  21140  4896 pts/2    Ss   12:40   0:00 -bash
root      7077  0.0  0.0      0     0 ?        S    12:41   0:00 [kworker/u4:1]
root      7097  0.0  0.0      0     0 ?        S    12:45   0:00 [kworker/0:1]
root      7100  0.0  0.0      0     0 ?        S    12:45   0:00 [kworker/1:0]
root      7119  0.0  0.1  38304  3360 pts/2    R+   13:15   0:00 ps aux
  • USER:该进程所属的用户
  • PID:该进程的标识码
  • %CPU:该进程占用的CPU资源
  • %MEN:该进程所占用的实体内存
  • VSZ:该进程使用掉的虚拟内存量(KB)
  • RSS:该进程占用的固定的内存量(KB)
  • TTY:同上
  • STAT:该进程目前的状态。状态显示同上
  • START:该进程被触发启动的时间
  • TIME:同上
  • COMMAND:该进程的实际指令

动态查看进程

  • top命令可以持续侦测程序运行的状态

  • top执行过程当中可以使用的按键指令:
    • ?:显示在top当中可以输入的按键指令
    • P:以CPU的使用资源排序显示
    • M:以内存的使用资源排序显示
    • N:以PID来排序
    • T:由该进程使用的CPU时间累积排序

管理进程

介绍

  • 进程之间是可以相互控制,我们可以通过给予该进程一个讯号(signal)去告知该进程你想要让它做什么

  • 可以使用kill -l查询所有的讯号(signal)

  • 主要的讯号代号与名称对应及内容是:

    代号 名称 内容
    1 SIGHUP 启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动
    2 SIGINT 相当于用键盘输入 Ctrl-c 来中断一个进程的进行
    9 SIGKILL 代表强制中断一个进程的进行,如果该进程进行到一半,那么尚未完成的部分可能会有”半产品“产生,类似vim会有.filename.swp保留下来
    15 SIGTERM 以正常的结束程序来结束该进程。由于是正常的终止,所以后续的动作会将它完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时,输入这个signal也是没有用的
    19 SIGSTOP 相当于用键盘输入 Ctrl-z 来暂停一个进程的进行

结束进程

  • 结束指定进程

    kill -signal PID
    
  • 结束指定名字的进程及其所有子进程

    killall -signal 指令名称
    

    例如,可以用killall -9 httpd杀死所有以httpd启动的进程

注意,只有第9种信号(SIGKILL)才可以无条件终止进程,其他讯号进程都有权利忽略

拾遗

僵尸进程

  • 通常,造成僵尸进程的原因是因为该进程应该已经执行完毕,或者是因故应该要终止了,但是该进程的父进程却无法完整的将该进程结束掉,而造成那个进程一直存在内存当中
  • 如果发现在某个程序的 CMD 后面还接上 <defunct> 时,就代表该进程是僵尸进程
  • 事实上,通常僵尸进程都已经无法管控,而是直接交给 systemd 这个进程来负责了,而 systemd 是Linux内核主动调用的第一个进程,它是所有进程的父进程,我们无法杀掉该进程(杀掉它,系统就死掉了!)
  • 所以,如果产生僵尸进程,而系统过一阵子还没办法通过内核非经常性的特殊处理来将该进程删除时,那只好通过 reboot的方式来将该进程抹去了

标签:00,管理,0.0,PID,Linux,进程,root,CPU
来源: https://www.cnblogs.com/TNTksals/p/16596626.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有