• linux系统的进程


    进程管理

    1.1 程序与进程的关系

    程序 -> 软件

    • 程序是保存在尾部存储介质(如硬盘,光盘)等中的可执行静态

    • 静态保存代码

      进程:

    • 加载到内存中的程序代码(计算机程序,由cup运行)

    • 动态执行的代码

    • 父子进程:每一个进程可以创建爱你一个或多个进程

    • systemd为系统请懂得第一个程序:pid号为1

    • 守护进程:常驻内存,与终端无关的进程(自己在系统后台执行)

    • 用户进程:通过终端执行加载的程序

    1.2 ps命令:

    • 查看静态的进程统计量

    • linux上进程有5种状态:

      1. 运行(正在运行或在运行队列中等待)

      2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

      3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

      4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

      5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

    • ps工具标识进程的5种状态码:

      D 不可中断 uninterruptible sleep (usually IO)

      R 运行 runnable (on run queue)

      S 中断 sleeping

      T 停止 traced or stopped

      Z 僵死 a defunct (”zombie”) process

    • 参数
      a 显示所有进程

      -a 显示同一终端下的所有程序

      -A 显示所有进程

      c 显示进程的真实名称

      -N 反向选择

      -e 等于“-A”

      e 显示环境变量

      f 显示程序间的关系

      -H 显示树状结构

      r 显示当前终端的进程

      T 显示当前终端的所有程序

      u 指定用户的所有进程

      -au 显示较详细的资讯

      -aux 显示所有包含其他使用者的行程

      -C<命令> 列出指定命令的状况

      --lines<行数> 每页显示的行数

      --width<字符数> 每页显示的字符数

      --help 显示帮助信息

      --version 显示版本显示

    • ps aux #查看所有进程

      1. user:,用户名字

      2. pid:pid号

      3. %cup:cup使用率

      4. %mem:内存使用率

      5. vsz:虚拟内存

      6. Rss: 常驻物理内存

      7. tty:终端 “?”表示为之活着不需要终端

      8. stat:状态
        S:可中断的睡眠
        R:就绪或者运行的状态
        Z:僵死状态
        <:高优先级进程
        +:前台进程组中的进程

      9. start:使用时间

      10. time:运行时间

      11. command:命令

    • ps -elf #比aux多一个ppid号和一个ni:启动时候的优先级负数

    • ps aux | grep "sshd" #查看sshd进程是否活着

      最后一个进程是查询sshd时的进程,前面两个是运行的进程

    • ps -C sshd --no-headers #查询进程名称且检查是否存活

    1.3 top命令:

    • 查看进程动态信息:以当前终端全屏交互式界面显示,每三秒刷新一次

    • 第一组,第一行:表示全局
      top - 03:57:48 :当前系统时间 24 min :表示系统运行时间 3 users :表示当前登录3个用户 load awerage : 系统平均负载(1,5,15)
      ``

    • 第二组,第二行 :系统任务Tasks信息
      total:总进程数;running:正在运行的进程数;sleeping:休眠的进程数;stopped:中止的进程数;zomibe:僵死无响应的进程数

    • 第三组,第三行:CPU占用信息
      us:用户占用;sy:内核占用;ni:优先级占用;id:空闲CPU;

    • 第四组,第四行:内存占用mem信息:total
      used总交换空间;free:已用交换空间;cached:缓存空间

    • 参数:
      -d:指定刷新间隔时间、
      -b: 一批量处理模式操作(非交互)
      -n:指定循环显示次数
      -u:指定用户名
      -p: 指定进程号

    • eg:

      top -d 1  #隔离一秒刷新
      top -b -n2  #已批量的方式循环显示2两次
      top -u 用户名  #指定用户进程
      top -p 进程号(pid号)
      
    • 常用交互命令
      K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号 15。在安全模式中此命令被屏蔽。

      i:忽略闲置和僵死进程。这是一个开关式命令。

      q:退出程序

      r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。

      S:切换到累计模式。

      s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。

      f或者F:从当前显示中添加或者删除项目。

      o或者O:改变显示项目的顺序

      l:切换显示平均负载和启动时间信息。

      m:切换显示内存信息。

      t:切换显示进程和CPU状态信息。

      c:切换显示命令名称和完整命令行。

      M:根据驻留内存大小进行排序。

      P:根据CPU使用百分比大小进行排序。

      T:根据时间/累计时间进行排序。

      W:将当前设置写入~/.toprc文件中。

    1.3. pstree命令:

    • 用ASCII字符显示进程结构,主要看父子进程关系
    • -p:列出对应的pid号
    • -u:列出对应的用户名
    • -a: 列出完整的用户信息

    1.4. 终止进程:

    • Ctrl+c

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

    • killall命令
      -Z 只杀死拥有scontext 的进程
      -e 要求匹配进程名称
      -I 忽略小写
      -g 杀死进程组而不是进程
      -i 交互模式,杀死进程前先询问用户
      -l 列出所有的已知信号名称
      -q 不输出警告信息
      -s 发送指定的信号
      -v 报告信号是否成功发送
      -w 等待进程死亡
      --help 显示帮助信息
      --version 显示版本显示
      -u 指定用户

    • pkill命令:根据指定条件终止
      pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。

  • 相关阅读:
    Alpha、Beta、RC、GA版本的区别
    convertView
    Layouts
    Styles and Themes
    Android Studio
    Promise.race
    Base64
    NodeJS搭建HTTPS服务器
    CoreSeek
    Ping of Death
  • 原文地址:https://www.cnblogs.com/wml3030/p/15181865.html
Copyright © 2020-2023  润新知