Linux-进程管理

本小节介绍

 1、进程的描述

 2、用户怎么样管理进程

 3、进程管理的命令

进程的概念

       内核的功能:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。
       Process:运行中的程序的一个副本,是被载入内存的一个指令集合;
                     进程ID(ProcessID ,PID)号码被用来标记各个进程;
                     UID,GID,和SELINUX语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承;
                     存在生命周期。
      进程创建: init:第一个进程 父子关系

      进程ID(PID):进程开始后指派给此进程的唯一标识符。

      父进程ID(PPID):创建了当前进程的父进程的PID  

      进程状态:

                Linux内核:抢占式多任务 
      进程类型: 
              守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程 
              前台进程:跟终端相关,通过终端启动的进程 
              注意:两者可相互转化  
       进程状态: 
               运行态:running 
               就绪态:ready 
               睡眠态: 
                        可中断:interruptable 
                        不可中断:uninterruptable 
               停止态:stopped,暂停于内存,但不会被调度,除非手动启动 
               僵死态:zombie,结束进程,父进程结束前,子进程不关闭 

系统管理工具
               进程的分类: 
              CPU-Bound:CPU密集型,非交互
              IO-Bound:IO密集型,交互

        Linux系统状态的查看及管理工具:pstree,ps,pidof,pgrep,top, htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
       为了管理这些进程,用户应该能够:

                     查看所有运行中的进程

                     查看进程消耗资源

                     定位个别进程并且对其执行制定操作

                     改变进程的优先级

                     杀死指定进程

                     限制进程可用的系统资源等
   

下面来详细说明执行上述进程管理的命令:


          pstree命令:显示进程树的结构(pstree – display a tree of processes)。

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

        如果指定了pid了,那么  树 的根是该pid,不然将会是init(pid: 1)如下图:

           Linux-进程管理                       

   

查看进程ps

            ps:process stat 进程状态,
                ps – report a snapshot of the current processes
                Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中。

           ps [OPTION]
                   支持三种选项:
                         UNIX选项 如: -A   -e
                         BSD选项  如: a 
                        GNU选项  如–help
                 选项:默认显示当前终端中的进程
                  a 选项包括所有终端中的进程
                  x 选项包括不链接终端的进程
                  u 选项显示进程所有者的信息
                  f 选项显示进程的父进程
                  k | –sort 对属性排序
                  o 属性…选项显示定制的信息
                         pid ;cmd; %cpu ;%mem ;state ;tty ;euser; ruser(进程真正的发起者)

                  -e: 显示所有进程

                  -f:  显示完整格式程序信息

                  -E:显示更完整格式的进程信息

                  -H:以进程层级格式显示进程相关信息

        常用选项组合:

             #ps -a  列出所有运行中的进程

             #ps -ef | grep  可以配合grep正则表达式列出需要的进程

             #ps -C f1.sh  单独显示进程

             #ps  -aux  显示进程信息,包括无终端的(x) 和针对用户(u)的进程:如USER, PID, %CPU, %MEM等,如下图;

                   Linux-进程管理         

              上图中: VSZ: Virtual memory SiZe,虚拟内存集,线性内存 
                           RSS: ReSident Size, 常驻内存集 
                           STAT:进程状态 
                                  R:running                           S: interruptable sleeping 
                                  D: uninterruptable sleeping          T: stopped 
                                  Z: zombie                            +: 前台进程 
                                  l: 多线程进程                         L:内存分页并带锁 
                                  N:低优先级进程                       <: 高优先级进程 
                                  s: session leader,会话(子进程)发起者

              #ps axo pid ,cmd,%cpu  显示进程定制的信息;如下图;

           Linux-进程管理

                     

     进程优先级

                 进程优先级调整: 
                                 静态优先级:100-139 
                                进程默认启动时的nice值为0,优先级为120;
                                 只有根用户才能降低nice值(提高优先性) 
                nice命令: nice [OPTION] [COMMAND [ARG]…]

                    #nice -n 3 top 指定进程的优先级,如下图:

                   Linux-进程管理

 

                

                  renice命令类似nice命令。

                                  使用这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先 值。

  1.                          #renice 改变指定进程的优先值
  2.                             Linux-进程管理

                                  上图中初始优先值为0的2121号进程优先值变成了4

          搜索进程
                  最灵活:ps 选项 | grep
                 按预定义的模式:pgrep 
                  pgrep [options] pattern 
                             -u uid: effective user,生效者 
                             -U uid: real user,真正发起运行命令者 
                             -t terminal: 与指定终端相关的进程 
                             -l: 显示进程名 
                             -a: 显示完整格式的进程名 
                             -P pid: 显示指定进程的子进程 
                示例:

                        #pgrep -aU wang 查看真正发起运行命令者的进程
                        #pgrep -at tty2 查看终端上运行的进程 
                         按确切的程序名称:/sbin/pidof 
                                #pidof bash  显示运行进程的进程编号
                   

      系统工具

                uptime 
                       显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)
               系统平均负载: 指在特定时间间隔内运行队列中的平均进程数 ;
               通常每个CPU内核的当前活动进程数不大于3,那么系统 的性能良好。
               如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。  
               如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用。

            top工具: 
                   top:有许多内置命令: 
                          排序: P:以占据的CPU百分比,%CPU 
                                    M:占据内存百分比,%MEM 
                                    T:累积占据CPU时长,TIME+ 
   
               首部信息显示: 
                            uptime信息:l命令 
                            tasks及cpu信息:t命令 
                            cpu分别显示:1 (数字) 
                            memory信息:m命令 
              
                          退出命令:q 
                          修改刷新时间间隔:s 
                           终止指定进程:k 
                          存文件:W
  
                 栏位信息简介 
                          us:用户空间    sy:内核空间    ni:调整nice时间    id:空闲 
                          wa:等待IO时间  hi:硬中断      si:软中断(模式切换) 
                           st:虚拟机偷走的时间

                  选项: -d #: 指定刷新时间间隔,默认为3秒 
                           -b: 全部显示所有进程 
                           -n #: 刷新多少次后退出 
                            #top -b -d 10 指定10秒刷新一次 
                            #top -n 3指定刷新3次
   
                   htop命令:需从Fedora-EPEL源安装 http://172.16.0.1/fedora-epel/7/x86_64 
      
                          选项: -d #: 指定延迟时间;     -u UserName: 仅显示指定用户的进程 
                                    -s COLUME: 以指定字段进行排序 
                         子命令: 
                           s: 跟踪选定进程的系统调用 
                           l: 显示选定进程打开的文件列表 
                           a:将选定的进程绑定至某指定CPU核心 
                           t: 显示进程树
             

         杀进程:

                   kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,
                          信号名称以SIG开头,不区分大小写
                          显示当前系统可用信号:kill -l ,trap -l
                   常用信号:man 7 signal
                          1) SIGHUP: 无须关闭进程而让其重读配置文件 
                           2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 
                           3) SIGQUIT:相当于ctrl+\ 
                           9) SIGKILL: 强制杀死正在运行的进程 
                          15) SIGTERM:终止正在运行的进程 
                          18) SIGCONT:继续运行 
                          19) SIGSTOP:后台休眠 
   
                  指定信号的方法: 
                              (1) 信号的数字标识:1, 2, 9 
                              (2) 信号完整名称:SIGHUP 
                              (3) 信号的简写名称:HUP 
          
                   按PID:kill [-SIGNAL]  pid … 
                           kill –n SIGNAL pid;kill –s SIGNAL pid  
                   按名称:killall [-SIGNAL]  comm…  
                   按模式:pkill [options] pattern 
                          -SIGNAL 
                         -u uid: effective user,生效者 
                         -U uid: real user,真正发起运行命令者 
                         -t terminal: 与指定终端相关的进程 
                         -l: 显示进程名(pgrep可用)
                        -a: 显示完整格式的进程名(pgrep可用) 
                        -P pid: 显示指定进程的子进程
                               #pkill -t pts/3 -9 

     作业管理
                LINUX的作业控制
                   前台作业:通过终端启动,且启动后一直占据终端;
                   后台作业:可通过终端启动,但启动后即转入后台运行,释放终端让作业运行于后台
                           (1)运行中的作业:ctrl+z
                            (2) 尚未启动的作业:#COMMAND &
                   后台作业虽然被送往后台运行,但其依然与终端相关;
                   退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端关系
                           #nohup CMD &   #screen;CMD
                   查看当前终端所有作业:#jobs
    
       作业控制:
                 #fg :把指的后台作业调回前台
                 #bg :让送往后台的作业在后台继续运行
                 #kill : 终止指定的作业

        并行运行
               同时运行多个进程,体改效率
                 方法1: vi all.sh
                              f1.sh&   f2.sh&   f3.sh&
                 方法2:
                        (f1.sh&);(f2.sh&);(f3.sh&)
                  方法3;
                        { fi.sh& f2.sh& f3.sh& }
 

原创文章,作者:shenjialong,如若转载,请注明出处:http://www.178linux.com/79278

(0)
shenjialongshenjialong
上一篇 2017-07-02 21:53
下一篇 2017-07-02 23:40

相关推荐

  • N21沉舟14周作业

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响…

    Linux干货 2016-11-14
  • ELK-5.5.1部署

    ELK简介 ELK Stack是软件集合Elasticsearch、Logstash、Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统。 其中,Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。 Logstash是一个日志收集、过滤、转发…

    2017-12-04
  • 第10周作业(上)

    第10周作业 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)。CentOS系统启动详细的过程如下(以CentOS7为例): 加电自检(POST)按下电源开关,BIOS系统随即开始加电自检,检查CPU、内存、主板及各接口、硬盘、键盘、光驱等,检测它们的好坏。 读取启动顺序检查完成后,BIOS会根据预先设定好的启动顺序去挨个寻找可引导…

    Linux干货 2017-01-03
  • dd命令详解

    dd命令: convert and copy a file用法:  dd if=/PATH/FROM/SRC of=/PATH/TO/DEST   bs=#: block size, 复制单元大小   count=#:复制多少个bs   of=fil…

    Linux干货 2017-03-19
  • 第八周练习脚本部分

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;在线的主机使用绿色显示;不在线的主使用红色显示; #!/bin/bash # for((i=1;i<=254;i++));do     site="172.16.250.${i}&quot…

    Linux干货 2016-12-15
  • LVM应用概要

    LVM — 即Logical Volume  Manager(逻辑卷管理管理),是Linux的一种磁盘管理机制。 LVM可以将物理磁盘以PV(Physical Volume)为单位抽象成VG(Volume Group)。在VG中,最小存储单元是一个PE(Physical Extent)。在VG的基础上再抽象一层,划分出LV(Logical Vol…

    2017-11-28