Linux笔记:进程管理、系统状态

进程

  • 程序 是指令和数据的有序集合,是一个静态的概念
  • 进程 代表一个正在运行的程序的实例
  • 线程 通常在一个进程中可以包含若干个线程
  • 在命令的末尾加上&符号,就可以让程序在后台运行(前台运行可以卡住整个终端,阻塞了,无法处理其他事情)
  • 程序正在前台运行,可以使用Ctrl+Z把程序暂停
  • jobs命令 查看运行的程序
  • bg 把暂停的程序放到后台运行
  • fg 把一个程序调到前台运行

进程操作案例

  • 创建一个test.py文件 $vi test.py

  • 编写test.py 文件内容

    #! /usr/bin/python3
    
    print('run')
    while True:pass # 此处做一个死循环
    
  • 给test.py文件添加执行权限 $chmod u+x test.py

  • 运行程序

    ./test.py
    run
    # 至此程序卡住
    
  • Ctrl(Command) + Z 暂停程序

  • 再次执行程序

    ./test.py &
    run
    # 此时没有卡住,可以做别的事情
    
  • 我们通过jobs命令查看

    jobs
    [1]+  Stopped    ./test.py
    [2]-  Running    ./test.py &
    
  • 通过bg命令把暂停的程序放到后台运行

    bg 1
    [1]+ Running    ./test.py &
    # 再次通过job查看
    jobs
    [1]-  Running    ./test.py
    [2]+  Running    ./test.py &
    
  • 通过fg命令把程序调到前台来运行

    fg 2
    ./test.py
    # 此时控制台处于卡住状态,无法做任何操作
    
  • Ctrl(Command) + C 终止程序运行

查看进程

  • 查看全部进程: $ps -ef (推荐使用)

    • UID 程序被该UID所拥有
    • PID 这个程序的进程ID
    • PPID 上级父程序的进程ID
    • C 表示CPU使用的资源百分比
    • STIME 表示进程启动时间
    • TTY 登入者的终端机位置
    • TIME 使用掉的CPU时间
    • CMD 所下达的指令为何
    • 选项 -ef 表示:查看全格式的全部进程
  • 查看全部进程的其他方式:$ps aux

    • USER 进程拥有者
    • PID 这个程序的进程ID
    • %CPU 占用的CPU使用率
    • %MEM 占用的内存使用率
    • VSZ 占用的虚拟内存大小
    • TTY 终端的次要装置号码(minor device number of tty)
    • STAT 该进程的状态,在linux中有5种主要状态
      • D 不可中断 uninterruptible sleep(usually IO)
      • R 运行 runnable (on run queue)
      • S 中断 sleeping
      • T 停止 traced or stopped
      • Z 僵死 a defunct (“zombie”) process
      • 注:其他状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页)
    • START 进程开始时间
    • TIME 执行的时间
    • COMMAND 所执行的指令
  • ps -efps aux 的区别

    • 显示风格不同,aux属于BSD的风格,-ef属于System V风格
    • aux会截断Command列,而-ef显示出来的是带全路径的进程名, 当结合grep时,这种区别会影响到结果
  • 通过搜索查看相关进程:$ps -ef | grep python

    • 表示 ps -ef 输出的结果作为grep的输入参数,然后在里面搜索内容为python的进程
  • 查看CPU信息 top命令

    • 举例:
      top
      # 以下是输出信息
      # 当前时间、系统运行的时间、用户数、平均负载量(当前一分钟平均量[cpu核心数]、当前五分钟平均量[cpu核心数]、当前十五分钟平均量[cpu核心数])
      top - 22:57:13 up 5:53, 2 users, load average: 1.00, 0.90, 1.12
      Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie
      # CPU占用率
      %CPU(s): 47.6 us, 0.1 sy, 0.0 ni, 52.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
      # 物理内存占用情况
      KiB Mem: 997652 total, 443946 free, 88128 used, 465560 buff/cache
      # 虚拟内存(交换分区)占用情况
      KiB Swap: 998396 total, 998396 free, 0 used. 727488 avail Mem
      
      # 以下是具体的进程信息
      PID      USER    PR     NI      VIRT     RES     SHR     S   %CPU    %MEM    TIME+      COMMAND
      2812     jack    20     0       28096    8324    5328    R   99.3    0.8     2:32.21    test.py
      1        root    20     0       37760    5816    4020    S   0.0     0.6     0:02.98    systemd
      # ... 一系列数据展示不再此处列举了
      
      
    • 关键词意义如下:
      • load average 平均负载 1, 5, 15分钟
      • total 物理内存总量
      • used 使用中的内存总量
      • free 空闲内存总量
      • buffer/cache 缓存的内存量
    • 具体进程字段意义:
      • PID 进程id
      • USER 进程所有者
      • PR 进程优先级
      • NI nice值,负值表示高优先级,正值表示低优先级
      • VIRT 进程使用的虚拟内存总量,单位kb VIRT = SWAP + RES
      • RES 进程使用的、未被换出的物理内存大小,单位kb, RES = CODE + DATA
      • SHR 共享内存大小,单位kb
      • S 进程状态: D(不可中断的睡眠状态)、R(运行)、S(睡眠)、T(跟踪/停止)、Z(僵尸进程)
      • %CPU 上次更新到现在的CPU时间占用比
      • %MEM 进程使用的物理内存百分比
      • TIME+ 进程使用的CPU时间总计, 单位1/100秒
      • COMMAND 进程名称(命令名/命令行)
    • 通过敲打命令进行查看:
      • M 内存排序
      • P CPU排序
      • 1 显示每个逻辑CPU的状况
      • q 退出
  • 结束一个进程

    • $kill 2812
    • 强制结束进程加参数 -9 $kill -9 2812
    • 其他方式:pkill 进程名 $pkill httpd 结束apache的这个进程
    • 结束前台终端进程:Ctrl(Command) + C

查看硬盘空间

  • $df
    • $df -h 更人性化输出
    • 留意输出的关键字段Use%使用比例,防止系统崩溃

查看内存占用

  • $free -m
    • 可以从输出中查看内存相关信息
发布了390 篇原创文章 · 获赞 183 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/104117495
今日推荐