zoukankan      html  css  js  c++  java
  • linux中的进程管理

    linux进程概述

          进程是操作系统结构的基础;是一个正在执行的程序;是计算机中正在运行的程序实例;可以分配给处理器

    并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

        换个角度说,进程是抽象概念,就像程序是实体概念一样。程序是储存在磁盘上包含可执行机器指令和数据的

    静态实体,我们可以看到的是一个一个.exe文件(windows下)或者可执行的任何名称的文件(unix等操作系统下)

    而进程是在操作系统中执行的特定任务的动态实体。Linux系统中每个运行中的程序至少由一个进程组成,每个进程

    与其他进程都是彼此独立的,都有自己独立的权限与职责。一个用户的应用程序不会干扰到其他用户的程序或者操作

    系统本身。

    Linux操作系统包含如下3种不同类型的进程,每种进程都有其自己的特点和属性。

    1.交互进程:有一个Shell启动的进程。交互进程既可以在前台运行,也可以再后台运行。

    2.批处理进程:这种进程和终端没有联系,是一个进程序列。

    3.守护进程:Linux系统启动时启动的进程,并在后台运行。

     linux进程状态

          通常在操作系统中,进程至少要有3种基本状态,分别为运行态,就绪态和封锁态(阻塞态)。

         运行状态是指当前进程已分配到cpu,它的程序正在处理器上执行时的状态。处于这种状态的进

    程个数不能大于CPU的数目。在一般单CPU机制中,任何时刻处于运动状态的进程至多有一个。

         就绪状态是指进程已具备运行条件,但因为其他进程正占用CUP,所以暂时不能运行而等待分配

    CPU的状态。一旦把CPU分给它,立即就可运行,在操作系统中,处于就绪状态的进程数目可以是多个。

         封锁状态是指进程因等待某种事件发生(如等待某一输入/输出操作完成,等待其他进程发来的信号

    等)而暂时不能运行的状态。也就是说,处于封锁状态的进程尚不具备运行条件,即使CUP空闲,它也

    无法使用。这种状态有时也称为不可运动状态或挂起状态,系统中处于这种状态的进程也可以是多个。

    手工启动

          由用户输入命令,直接启动一个进程便是手工启动进程,但手工启动进程又可以分为很多种,根据

    启动的进程类型不同、性质不同,实际结果也不同。

    台前启动

          用户输入一个命令“ls -l,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经

    处于一个多进程状态。通常情况下,用户在启动进程时,系统中已经存在了许多运行在后台的、系统启动

    时就已经自动启动的进程。

    后台启动

          直接从后台手工启动一个进程用的比较少,除非该进程甚为耗时,且用户也不急于看到处理结果。假设

    用户要启动一个要长时间运行的格式化文本文件的进程,为了不使整个Shell在格式化过程中都处于”瘫痪“状

    态(长时间看不到任何运行结果),选择从后台启动进程是明智的选择。

          上述两种启动方式有个共同的特点,就是新进程都是由当前Shell这个进程产生的。也就是说,是Shell创

    建了新进程,于是就称这种关系为进程间的父子关系。这里Shell是父进程,而新进程是子进程。一个父进程可

    以有多个子线程,一般地,子进程结束后才能继续父进程:如果从后台启动,那就不用等待子进程结束了

          一种比较特殊的情况是在使用管道符的时候:

    这个时候同时启动了2个进程,它们都是Shell的子线程,互为兄弟进程。

    进程中的系列命令

          ps命令是Linux中查看进程状态的最常用命令,能显示系统中运行的进程,进程号,命令,cpu使用量、内

    存使用量等。

    ps [选项]

    -a  显示系统中与tty相关的(除会话组长之外)所有的进程的信息。

    -e  显示所有进程的信息。

    -f   显示进程的所有信息

    -l   以长格式显示进程信息

    r   只显示正在运行的进程

    u   显示面向用户的格式(包括用户名、cpu及内存使用情况等信息)

    x   显示所有非控制终端上的进程信息

    --pid   显示由进程 ID指定的进程信息

    --tty  显示指定终端上的进程信息。

    pstree命令

          linux中每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示

    进程间关系。还可指定树的根线程

    top命令

          top命令和ps命令的基本作用是相同的,即显示系统当前的进程及其状态,但top是一个动态显示过程,可

    以通过用户按键来不断刷新当前状态。如果在前台执行代码,该命令将独占前台,直到用户终止该程序为止。top

    命令的一般格式 top [bciqsS][d<间隔秒数>][n<执行次数>]

    b   使用批处理模式

    c   列出程序时,显示每个程序的完整指令,包含指令名称、路径和参数等相关信息

    i    执行top指令时,忽然闲置或已成为Zombie的程序

    q   持续监控程序执行的状况

    s   使用保密模式,消除互动模式下的潜在危机

    S   使用累计模式

    d<间隔秒数>:设置top监控程序执行状况的间隔时间,以秒为单位。

    n<执行次数>:设置监控信息的更新次数。

    使用top命令,每30秒实时更新一次系统中运行进程的状态

    nice命令

          在linux中通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更

    多cpu时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)

    列查看

          进程优先级值的范围从-20到19.值越低,优先级越高。若调整后的程序运行优先级高于-20,则就以优先级-20来运

    行命令行;若调整后的程序运行优先级低于19,则就以优先级19来运行命令行。若 nice命令未指定优先级的调整值,则

    以缺省值10来调整程序运行优先级,既在当前程序运行优先级基础之上增加10。

    语法:

    nice [-n <优先级>] [--help] [--version] [执行指令]

    选项介绍:
        -n <优先级>    指定优先级;
        --help         帮助信息;
        --version      版本信息;

     

          sudo是linux系统管理指令,是允许系统管理让普通用户执行一些或者全部的root命令的一个工具,如halt
    reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个
    代替,它是面向每个命令的。

    rennice命令

          renice命令类似nice命令,使用该命令可以改变正在运行的进程优先值。但请注意,该用户只能改变属于他

    自己的进程优先值。

         

    语法

    renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

    参数说明

    • -p pid 重新指定行程的 id 为 pid 的行程的优先序

    • -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序

    • -u user 重新指定行程拥有者为 user 的行程的优先序

     
    初始值为19的1092号进程优先值已经变成了4

     用户为root的所有进程优先值变为-3

    kill命令

          通常终止一个前台进程可以使用Ctrl+C组合键,但是对于一个后台进程就需要用kill命令来终止。kill命令

    通过向进程发送指定的信号来结束相应的进程。在默认的情况下,采用编程号为15的TERM信号将终止所有不能

    捕获该信号的进程。对于那些可以捕获该信号的进程,就要用编号为9的kILL信号强行杀掉该进程。

    kill 命令的一般格式如下:

    kill [-s 信号 |-p ] 进程号

    kill  -l  [信号]

    -s  指定要发送的信号,既可以是信号名(如 kill),也可以是对应信号的号码(如9)

    -p  指定kill命令只是显示进程的PID(进程标识号),并不真正发出结束信号

    -l   显示信号名列表

    ulimit命令

           ulimit用于启动进程所占用的资源.对于系统管理员是最有用的,可以管理重度使用和存在性能问题

    的系统。限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。
    语法格式:
           ulimit [-acdfHlmnpsStvw] [size]
    参数介绍:
       -H    设置硬件资源限制.
       -S    设置软件资源限制.
        -a     显示当前所有的资源限制.
        -c     size:设置core文件的最大值.单位:blocks
        -d     size:设置数据段的最大值.单位:kbytes
        -f     size:设置创建文件的最大值.单位:blocks
        -l      size:设置在内存中锁定进程的最大值.单位:kbytes
        -m    size:设置可以使用的常驻内存的最大值.单位:kbytes
        -n     size:设置内核可以同时打开的文件描述符的最大值.单位:n
        -p    size:设置管道缓冲区的最大值.单位:kbytes
        -s     size:设置堆栈的最大值.单位:kbytes
        -t     size:设置CPU使用时间的最大上限.单位:seconds
        -v     size:设置虚拟内存的最大值.单位:kbytes

     

     w 命令

          w命令提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时间、系统运行时长

    登录用户总数、过去的1,5,15分钟内的负载均衡数。

    语法格式如下:

      w -[husfV]  [user]

       下面对参数进行说明:

       -h 不显示标题。

       -u  当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。

       -s 使用短模式。不显示登录时间、JCPU和PCPU时间。 

       -f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,当然系统管理员可以对源文件 作一些修改使得显示该项成为默认值。 

       -V 显示版本信息。

     who是与w类似的命令,提供当前登录用户列表、系统启动时间、运行级别等。

    whoami 命令输出当前用户ID

     pgrep命令

          pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

    语法格式

    pgrep(选项)(参数)

    参数

    -o:仅显示找到的最小(起始)进程号;

    -n:仅显示找到的最大(结束)进程号;

    -l:显示进程名称

    -P:指定父进程号

    -g:指定进程组

    -t:指定开启进程的终端

    -u:指定进程的有效用户ID。

    ipcs命令

           ipcs命令报告进程间通信设施状态。(共享内存,消息量和消息队列)用-p参数联合-m、-s、-q使用

    可以获得相关的进程间通信的进程ID。

             

  • 相关阅读:
    systemd 启动 logstash 报错 找不到 JAVA_HOME
    Spring boot内置Tomcat的临时目录被删除导致文件上传不了-问题解析
    git error: Your local changes to the following files would be overwritten by merge:xxxxxx ,Please commit your changes or stash them before you merge.的phpstorm解决办法
    thinkcmf 忘记后台登陆密码的解决办法
    thinkcmf 5关闭后台验证码
    centos 7 IP不能访问nginx Failed connect to 185.239.226.111:80; No route to host解决办法
    thinphp5框架遇到 mkdir() Permission denied 解决办法
    mysql 命令行 备份 恢复数据
    centos 7 查询mysql 安装 运行位置
    pycharm 2018.1 激活
  • 原文地址:https://www.cnblogs.com/zqjt2/p/5377556.html
Copyright © 2011-2022 走看看