• Linux - 进程


    一、什么是进程

    首先,Linux是一个多用户多进程的操作系统,系统上可以同时运行多个进程。

    进程的产生:①是在执行程序或者命令时产生的;②定时任务进程

    进程的类型:前台进程/后台进程

    前台进程:一个终端界面,一次只能执行一个程序或者命令;

    后台进程:可以同时执行多个程序或者命令;

    不论前台进程还是后台进程都受限于终端,如果终端被kill,前后台的进程也会被kill


    二、进程的状态(STAT)

    R        正在运行

    S        休眠/静默        ==> 等待运行

    Z        僵尸                ==> 父进程无法正常终止子进程/系统资源到达临界值        

    T        已经停止         

            Ss        // 父进程

            S<        // 优先级较高的进程

            SN        // 优先级较低的进程

            R+        // 前台的进程组

            SI          // 以线程的方式运行


    三、进程查看

    常用查询终端命令及进程排序

    tty        // 查看当前终端

    who     // 查看机器上所有的终端

    w         // 查看机器上所有的终端详情,也能看到系统负载,1分钟,5分钟,15分钟

    --sort        // 从低到高排序

    --sort -      // 从高到低排序

    1.查看瞬时的进程状况        ps

    ①ps -ef

    首行,从左往右依次为:

    拥有者  进程号  父进程号  cpu占用率  开始时间  终端名  运行时间  命令

    ②ps aux

    首行,从左往右依次为:

    拥有者  pid  cpu占用率  内存占用率  占用的虚拟内存大小  驻留内存大小  终端  进程状态

    开始时间  运行时间 命令

    ③ps axo       
    // 自定义查看进程的内容,一般携带命令作为查看的内容

    ④pgrep         // 查询指定的服务或者命令的pid,一般用来查持续运行状态下的服务的pid
    ⑤pstree        // 查看进程与进程之间的关系

    2.查看即使的进程状况        top/htop

    top        //top查看进程状况时,默认以cpu占用从高到底进行排序

    top        前五行 

    第一行:top - 06:18:40 up 3:15, 1 user, load average: 0.06, 0.02, 0.00

    含义分别是:系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5 分钟、15 分钟内的平均值,数值越小意味着负载越低)

    第二行:Tasks: 365 total, 1 running, 364 sleeping, 0 stopped, 0 zombie

    含义分别是:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵尸的进程数。

    第三行:%Cpu(s): 0.4 us, 0.5 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st

    含义分别是:用户占用资源百分比系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比、等待输入输出的cpu时间百分比、硬中断占用的cpu百分比、软中断占用的cpu百分比和用于虚拟cpu的情况。

    第四行:MiB Mem:7790.6 total, 4309.7 free,2571.4 used, 909.5buff/cache

    含义分别是:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。

    第五行:MiB Swap: 2095.0 total, 2095.0 free, 0.0 used. 4882.7 avail Mem

    含义分别是:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。

    htop       
    ==> top的基础上,点击进程信息就能从高到低排序,有高亮效果和搜索功能,支持调整显示信息

    四、进程控制

    kill 控制进程的方式?

    kill 命令通过传递信号来给进程执行相应的操做

     kill -l        //信号列表

    常用的信号

    1        对于服务而言,可以在不重启或者停止服务的情况下,重新进行配置;

    2        中断进程,相当于ctrl+C

    9        强制结束进程

    15      正常结束进程,先结束子进程,再结束父进程

    18      继续进程

    20      暂停进程

    控制进程的方式

    kill        // 结束某个具体进程

    pkill      // 

            -u       // 踢出某个终端用户

            -t        // 踢掉某个终端

    kiall      // 结束相关的所有进程

    xkill      // 图形化/手动点击结束进程


    五、进程调度

    为什么要进行进程调度?

    首先,前台任务和后台任务都会收到终端的影响,结束终端时,也会相应结束终端中的任务。其次,前台进程一个终端只能执行一次,然后当某个进程要求不能受终端影响时,需要将任务不挂起且放到后台运行。

    nohup        //不挂起

    jobs           //查后台任务

    fg  %任务编号                //将后台任务放到前台就行运行

    bg  %任务编号               //指定任务在后台继续运行

    kill %任务编号               //结束后台进程

    &              //将任务放到后台运行

    ctrl+c        //结束前台进程

    ctrl+z        //把前台任务的进程放到后台停止

  • 相关阅读:
    筑牢数据隐私安全底线,ADSCOPE通过ISO隐私信息管理体系认证!
    [XCUITest] 处理iOS权限点击授权 有哪些权限?
    XDOJ-360 结点在二叉排序树的位置
    pandas 识别并取出重复项
    疑似大厂泄露!阿里内部Redis教程笔记,细节点满/效率翻倍
    Spring(bean的生命周期)
    LeetCode - 解题笔记 - 214 - Shortest Palindrome
    mysqldump数据备份
    【Python零基础入门篇 · 33】:进程的基础操作、进程间的通信-Queue、进程池的构建
    Jmeter如何进行接口测试-实操
  • 原文地址:https://blog.csdn.net/weixin_45735487/article/details/139804564