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
下一篇 2017-07-02

相关推荐

  • 第一周的作业

    1、描述计算机的组成及其功能。 主要分为五个部分: 控制器:计算机的中枢神经,控制总线使用权限、寻址、管理各类资源的分配。 运算器:对数据进行各种算数运算和逻辑运算。 存储器:通常指内存RAM,CPU需要运行的程序以及数据都存放在存储器中供CPU调用处理。 (以上三者为计算机核心的三大部件,依靠这三大部件即可完成核心工作。) 输入设备:比如鼠标、键盘,使用户…

    Linux干货 2016-11-02
  • 搜索引擎-倒排索引基础知识

    1.单词——文档矩阵        单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。          …

    Linux干货 2015-12-10
  • rsyslog应用举例

    rsyslog+mysql+loganalyzer 1、yum install mariadb-server php-gd rsyslog-mysql ##连接到mysql需要的驱动程序,用来保存信息 2、登录数据库并给rsyslog赋权,设置密码,重读授权表 3、以rsyslog用户身份登录数据库,此时创建Syslog库,注意此处数据库名称要与rsyslo…

    Linux干货 2016-10-23
  • 批量部署lxc虚拟机

    前言:lxc是一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程…

    Linux干货 2016-03-20
  • linux计算机基础理论

    1. 计算机的组成及其功能 从基本结构上来讲,计算机可以分为五大部分: 运算器、存储器、控制器、输入设备、输出设备。 运算器的功能:实现算术运算和逻辑运算(与控制器组成CPU) 存储器功能:将输入设备接受到的信息以二进制的数据形式存到存储器中。 控制器的功能:将指令逐条从存储中取出,经译码分析后向全机发出相应的操作控制信号作用于其他部件,使各部件有条不紊地协…

    Linux干货 2018-03-04
  • Samba详解

    samba详解 yum list all | grep samba yum info samba yum -y install samba 服务端程序包:samba nmbd smbd rpm -ql samba-common rpm -ql samba-common-tools 主配置文件:/etc/samba/smb.conf systemd unit …

    Linux干货 2017-10-21