• linux进程管理(二)


    接上【linux进程管理(一)】

    终止进程的工具 kill killallpkill

      终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。

      另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。

      kill

    kill的应用是和ps 或pgrep 命令结合在一起使用的;

    kill 的用法:

    kill [信号代码]   进程ID

    注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;

      举例:

    [root@localhost ~]# ps  auxf  |grep   httpd
    root      4939  0.0  0.0   5160   708 pts/3    S+   13:10   0:00              \_ grep httpd
    root      4830  0.1  1.3  24232 10272 ?        Ss   13:02   0:00 /usr/sbin/httpd
    apache    4833  0.0  0.6  24364  4932 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4834  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4835  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4836  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4837  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4838  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4839  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd
    apache    4840  0.0  0.6  24364  4928 ?        S    13:02   0:00  \_ /usr/sbin/httpd

    我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;

    我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;

    [root@localhost ~]# kill 4840  注:杀掉4840这个进程;
    
    [root@localhost ~]# ps -auxf  |grep  httpd  注:查看一下会有什么结果?是不是httpd服务器仍在运行?
    [root@localhost ~]# kill 4830   注:杀掉httpd的父进程;
    [root@localhost ~]# ps -aux |grep httpd  注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?

    对于僵尸进程,可以用kill -9 来强制终止退出

    比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

    [root@localhost ~]# ps aux |grep gaim
    beinan    5031  9.0  2.3 104996 17484 ?        S    13:23   0:01 gaim
    root      5036  0.0  0.0   5160   724 pts/3    S+   13:24   0:00 grep gaim
    
    或
    
    [root@localhost ~]# pgrep -l gaim
    5031 gaim
    [root@localhost ~]# kill -9 5031

      killall

    用法:killall 正在运行的程序名

    killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;

    举例:

    [root@localhost beinan]# pgrep -l gaim
    2979 gaim
    
    [root@localhost beinan]# killall gaim

    pkill

    pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

    应用方法:

    #pkill  正在运行的程序名

    举例:

    [root@localhost beinan]# pgrep -l gaim
    2979 gaim
    
    [root@localhost beinan]# pkill gaim

    top 监视系统任务的工具:

    和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;

    top 调用方法:

    top 选择参数

    参数:

    -b  以批量模式运行,但不能接受命令行输入;
    -c 显示命令行,而不仅仅是命令名;
    -d N  显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;
    -i 禁止显示空闲进程或僵尸进程;
    -n NUM  显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;
    -p PID 仅监视指定进程的ID;PID是一个数值;
    -q  不经任何延时就刷新;
    -s  安全模式运行,禁用一些效互指令;
    -S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;

    交互式命令键位:

    space  立即更新;
    c 切换到命令名显示,或显示整个命令(包括参数);
    f,F 增加显示字段,或删除显示字段;
    h,? 显示有关安全模式及累积模式的帮助信息;
    k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)
    i 禁止空闲进程和僵尸进程;
    l 切换到显法负载平均值和正常运行的时间等信息;
    m 切换到内存信息,并以内存占用大小排序;
    n  提示显示的进程数,比如输入3,就在整屏上显示3个进程;
    o,O 改变显示字段的顺序;
    r 把renice 应用到一个进程,提示输入PID和renice的值;
    s 改变两次刷新时间间隔,以秒为单位;
    t 切换到显示进程和CPU状态的信息;
    A 按进程生命大小进行排序,最新进程显示在最前;
    M 按内存占用大小排序,由大到小;
    N 以进程ID大小排序,由大到小;
    P 按CPU占用情况排序,由大到小
    S 切换到累积时间模式;
    T  按时间/累积时间对任务排序;
    W 把当前的配置写到~/.toprc中;

    top 应用举例:

    [root@localhost ~]# top

    然后根据前面所说交互命令按个尝试一下就明白了,比如按M,就按内存占用大小排序

    当然您可以把top的输出传到一个文件中;

    [root@localhost ~]# top > mytop.txt

    然后我们就可以查看mytop文件,以慢慢的分析系统进程状态;

  • 相关阅读:
    跨DLL边界传递CRT对象的隐患(或诸如:HEAP[]: Invalid Address specified to RtlValidateHeap(#,#)问题出现的原因)
    【策略模式】不同的时间用不同的规则优先考虑策略模式
    【装饰模式】遵循开闭原则,使用一个类装饰另一个类
    【简单的工厂模式】一个简单的计算器
    【原】使用Golang语言编写echo程序
    WebBrowser或CHtmlView中轻松屏蔽脚本错误(JavaScript)
    春运买票难,是谁造成的?
    搜狗输入法使用感受
    [原]在 go/golang语言中使用 google Protocol Buffer
    防护针对SQL Server数据库的SQL注入攻击
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/4939854.html
Copyright © 2020-2023  润新知