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

相关推荐

  • 马哥教育网络班第21期+第五周课程作业

    1、 显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@redhat6 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf   2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的…

    Linux干货 2016-08-08
  • shell脚本小练习..

    刚刚接触vim和shell脚本,用几个小脚本练练手。 1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中。 3、编写脚本…

    2017-04-13
  • M20 – 1- 第三周博客(3):Linux上文本处理三剑客grep

    Grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 1、作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用 权限是…

    Linux干货 2016-08-08
  • 2016-10-18作业

    2016-10-17 课后作业  1. 生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。     1)首先,查看本地硬件时间是否正确,命令如下:       hwclock       如果该时间是正确的,使用该时间来更新系统时间。命令如下: &nbs…

    Linux干货 2016-10-20
  • Linux syslog 系统日志管理

    Linux系统上面,系统可以记录从开机到当前系统上面何时发生了哪些事情,在centos 上表现为rsylog,由三部分组成 1)syslogd:主要记录系统和网络等服务的日志信息 2)klogd:主要记录内核产生的各项信息 3)logretate:主要用来对日志文件进行切割循环记录等 特点: 1)多线程工作 2)支持以TCP,UDP,SSL,TSL,RELP…

    Linux干货 2016-10-24
  • N–25期 第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i sumlogin=0 declare -i sumnologin=0 for i …

    Linux干货 2017-03-07