linux进程管理

      Linux是一个多任务的操作系统,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业。使用作业控制,用户可以同时运行多个作业,并在需要时在作业之间进行切换。

     1.进程及作业

       程序是完成么重任务的软件,而进程是运行中的程序。一个运行中的程序可能有多个进程,比如瑞星杀毒软件在运行的时候就有多个进程,分别提供不同的服务。

       作业是一个正在执行的进程,可以包含多个进程。比如“cat/etc/passwd|grep user|more”这个作业就包含了3个进程

     2.进程控制

       linux提供了进程管理工具,如ps、kill、pgrep、top等。可以用来查看和控制进程的运行。

      01.进程监视——ps

       ps用来显示当前系统进程列表。其语法格式如下。

       [root@localhost~]# ps [-lujfaxr]                    

        参数说明如下:

        -l:长格式输出。

        -u:按用户名和启动时间的顺序显示进程。

        -j:显示进程,使用任务格式。

        -f:显示进程,使用树形格式。

        -a:显示所有用户(包括其他用户)的全部进程。

        -x:显示无控制终端的进程。

        -r:显示运行中的进程。

        ww:避免中断详细参数。

        注:因为ps的输出列表可能很长,所以为了查看方便,应当添加相关参数执行。

        实例1:查看当前系统进程,列表显示结果,

        [root@localhost~]# ps aux | more                   

        可按q 退出。

       

 

                        使用ps查看当前运行的所有进程

        实例2:查看httpd进程是否运行(Apache服务是被启动了)。

        [root@localhost~]# ps aux | grep httpd                      

     02.终止进程——kill、killall、pkill、xkill

        在linux下可通过kill、killall、pkill、xkill终止进程

        使用kill指令来终止一个进程,其命令行语法如下。

        [root@localhost~]# kill [-s singnal\-p][-a][--] PID..       

        [root@localhost~]# kill -l [signal]                         

        参数说明如下。

        -s:    指定发送信号。

        -p:    模拟发送信号。

        -l:    指定信号的名称列表。

        PID:   要终止进程的ID号。

        signal:信号。  

        实例:用kill来终止vsftpd进程。

              用kill终止进程需要用到进程ID,二进程ID的获取需要结合ps指令,所以终止vsftpd进程,必须分步完成。

        第一步:执行以下指令查询vsftpd进程的PID。

              [root@localhost~]# ps aux |grep vsftpd              

        第二步:vsftpd的ID进程为29835,然后执行以下指令。

              [root@localhost~]# kill 29835                       

           注:可以用“kill -9”来强制终止一些顽固的进程,比如“kill -9 29835”。

    03.killall/pkill。

        更直观的终止进程的方法是使用killall或pkill指令,但需要知道进程的名字。其语法格式如下。

              [root@localhost~]# killall  进程名                 

              [root@localhost~]# pkill    正在运行的程序名        

         实例:终止运行中的vsftpd集成。直接使用以下指令即可。

              [root@localhost~]# killall vsftpd                  

              [root@localhost~]# pkill   vsftpd                  

    04.xkill。

       在图形界面下,最好用的进程终止工具是xkill。执行xkill,然后单击需要关闭的窗口图形即可。

    05.进程控制——top。

        top是一个动态的进程监视工具,提供交互式操作,可以直接终止进程。其命令格式如下。

         -b:使用批处理模式。

         -c:显示程序并显示程序的完整相关信息,如名称、路径等。

        -i:忽略闲置或已经冻结的程序。

       -d:以秒为单位,设定监控程序执行状况的时间间隔。

       -n:设定监控信息的更新次数。

        -p<进程号>:指定进程。

       -s:安全模式。

        -u:指定用户名。

       -v:显示版本信息。

        -h:显示帮助信息。       

       -P:根据CPU使用大小进行排序。

         -T:根据时间、累计时间排序。

         -q:退出top命令。

       -m:切换显示内存信息。

       -t:切换显示进程和CPU状态信息。

       -c:切换显示命令名称和完整命令行。

       -M:根据使用内存大小进行排序。

       -W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。          

    06.进程优先级控制——nice、renice

        在linux操作系统中,进程之间是竞争资源(比如cpu和内存)的关系。优先级别是通过谦让度来体现的。谦让度的值越大,表示进程优先级别越低。谦让度的值为负值或0,表示高优先级,对其他进程不谦让,即拥有优先占用系统资源的权利。谦让度的默认值为10,范围为-20~19,用来调整程序谦让度的指令时nice,语法格式如下:

        [root@localhost~]# nice [-n adjustment][-adjustment][--adjustment=adjustment][--help][--version]

        参数说明如下:

         -n adjustment:将原有谦让度增加adjustment。

               --help :显示帮助信息。

            --version :显示版本信息。

  实例一:以谦让度+5的方式运行gaim程序。

         [root@localhost~]# nice -n 5 gaim                                   

         用来修改正在运行中的程序(进程)的优先级的指令是renice,语法格式如下:

         [root@localhost~]# renice priority [[-p]pid..][[-g]pgrp..][[-u]user..]

         参数说明如下:

         -p  pid:重新指定进程优先级。

         -g pgrp:重新制定进程群组的优先级。

         -u user:重新制定特定用户进程的优先级别

  实例二:设置进程ID为2853的程序的谦让度为15

         [root@localhost~]# renice 15 2853                                       

        

     3.作业控制

        在单一终端界面下,同时管理对个作业的操作叫作作业控制(job control)。若要同时进行多个不同的工作,就需要打开多个终端窗口。利用作业控制,只要打开一个终端窗口,就就可以进行不同的工作了。

    01.将命令放到后台执行—&

       在正真将程序放到后台执行之前,哟必要先了解直接控制的作业,即前台作业(比如用vi编辑文本),以及在内存中自动运行的作业,即后台作业(用户无法直接控制)

       有一些作业是可以自动运行的。要同时进行多个作业,就必须要将这一部分作业放到后台,以便继续有需要控制和接受输入的前台作业。如何将作业放到后台运行呢?最简单的办法就是使用&指令。如果正在进行编译Linux核心的操作,则可执行以下命令。

        [root@localhost~]# make menuconfig                                          

        [root@localhost~]# make clean                                              

       执行完这两步,就会开始编译核心,而整个过程是自动进行的,所以可以将它放在后台。

        [root@localhost~]# make bzp_w_picpath &                                         

        [1] 29853  ;  工作编号、PID

        [root@localhost~]#   ;在这里继续输入指令,进行其他的操作。

    02.将当前作业“暂停”到后台—ctrl+z

       如果正在用vi编辑文档,当发现有不认识的单词时,则需查询其他的词典软件。其实不需要关闭vi,查完单词后再打开vi,可暂时把vi存放到后台。可使用ctrl+z指令把正在进行的作业暂停放到后台。

       [root@localhost~]# vi.bash_profile                                          

       ;按下ctrl+z将他放到后台

       [1]+stopped vi.bash_profile   ;[1]表示第1个作业,+表示是后台默认的作业

                                     ;stopped表示该作业处于停止状态,用ctrl+z放入后台太的程序都处于停滞状态

       [root@localhost~]#            ;在这里就可以打开词典程序查询单词了。

   03.观察当前后台作业状态—jobs

      可以使用jobs程序查询放入后台的作业,格式如下。

      [root@localhost~]#  jobs [-lnprs]                                              

      参数说明如下。

                -l:列出作业号和PID。

                -p:显示选定作业的进程组引导符的进程标识。

                -n:显示在最后一次通知后停止或退出的作业。

                -r:只显示在后台运行的进程。

                -s:只列出在后台暂停的进程。

  实例:查看当前后台作业及其PID信息,可使用以下指令。

      [root@localhost~]# jobs -l                                                     

   04.从后台恢复作业—fg

      若将作业放到了后台,则在合适的时候要将它们恢复,可使用fg指令实现,语法格式如下:

      [root@localhost~]#  fg [job number]                                              

  实例: 恢复刚才放入后台的vi.bash_profile进程。

      第一步:先使用jobs指令查看后台作业。

      [root@localhost~]#  jobs                                                        

      [2]-   stopped           top

      [3]+   stopped           vi.bash_profile

      注:可以看出vi指令的作业号是3。

      第二步:执行fg指令将vi.bash_profile进程放回前台。

      [root@localhost~]#  fg 3                                                      

   05.让进程在后台运行—bg

      使用ctrl+z可以将当前作业“暂停”到后台,使用&让进程在后台运行,但是如何让在后台暂停的进程在后台情启动运行呢?可以使用bg指令,语法格式如下。

     [root@localhost~]#  bg [job number]                                                 

  实例:让top指令在后台运行。

     [root@localhost~]#  make bZp_w_picpath                                               

     [1]+stopped   bZp_w_picpath      ;按下ctrl+z将它暂停到后台

     [root@localhost~]#  jobs                                                                  

     [1]+stopped   make bZp_w_picpath ;在后台处于暂停状态

     [root@localhost~]#  bg 1                                                     

     [1]+make bZp_w_picpath &         ;后台运行

 

 

 

                                         结束

                                        ......