zoukankan      html  css  js  c++  java
  • linux系统下实时监控进程以及定位杀死挂起的进程

    一、实时监测进程

    [root@instance-3lm099to ~]# top
    top - 16:39:52 up 4 days, 47 min,  3 users,  load average: 0.01, 0.05, 0.05
    Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
    KiB Mem :   997608 total,    81396 free,   559020 used,   357192 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   229256 avail Mem
    
       PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     47706 root      20   0 2757980  67764   3432 S  0.3  6.8   2:45.12 java
     50860 mongod    20   0  974392  34288   3700 S  0.3  3.4   2:06.16 mongod
    108658 root      20   0 2794276  96332   3644 S  0.3  9.7   2:24.02 java
    110060 root      20   0 2789936  53864   3964 S  0.3  5.4   1:29.78 java
         1 root      20   0  125456   3424   2076 S  0.0  0.3   1:04.40 systemd
         2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
         3 root      20   0       0      0      0 S  0.0  0.0   0:08.48 ksoftirqd/0
         5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:+
         6 root      20   0       0      0      0 S  0.0  0.0   0:04.04 kworker/u2+
         7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
         8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
         9 root      20   0       0      0      0 S  0.0  0.0   0:27.72 rcu_sched
        10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-dr+
        11 root      rt   0       0      0      0 S  0.0  0.0   0:01.90 watchdog/0
        13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
        14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
        15 root      20   0       0      0      0 S  0.0  0.0   0:00.14 khungtaskd

    输出的第一部分显示的是系统的概况:

    第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。
    平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。

    由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。

    第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。

    第三行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。

    第四第五两行说明了系统内存的状态。第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。

    最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似。

    • PID:进程的ID。
    • USER:进程属主的名字。
    • PR:进程的优先级。
    • NI:进程的谦让度值。
    • VIRT:进程占用的虚拟内存总量。
    • RES:进程占用的物理内存总量。
    • SHR:进程和其他进程共享的内存总量。
    • S:进程的状态(D代表可中断的休眠状态,R代表在运行状态,S代表休眠状态,T代表
    • 跟踪状态或停止状态,Z代表僵化状态)。
    • %CPU:进程使用的CPU时间比例。
    • %MEM:进程使用的内存占可用内存的比例。
    • TIME+:自进程启动到目前为止的CPU时间总量。
    • COMMAND:进程所对应的命令行名称,也就是启动的程序名。

    默认情况下,top命令在启动时会按照%CPU值对进程排序。可以在top运行时使用多种交互命令重新排序。每个交互式命令都是单字符,在top命令运行时键入可改变top的行为。键入f允许你选择对输出进行排序的字段,键入d允许你修改轮询间隔。键入q可以退出top。用户在top命令的输出上有很大的控制权。用这个工具就能经常找出占用系统大部分资源的罪魁祸首。当然了,一旦找到,下一步就是结束这些进程。这也正是接下来的话题。

    二、结束进程

    Linux进程信号

    如何干掉一个进程

    kill ID(PID)

    $ kill 3940
    -bash: kill: (3940) - Operation not permitted

    上面的命令可能不能适应所有的进程。

    强制干掉一个进程

    # kill -s HUP 3940
    #

    -s参数支持指定其他信号(用信号名或信号值),kill命令不会有任何输出,要检查kill命令是否有效,可再运行ps或top命令,看看问题进程是否已停止。

    killall命令

    killall命令非常强大,它支持通过进程名而不是PID来结束进程。killall命令也支持通配符,这在系统因负载过大而变得很慢时很有用。

    # killall http*
    #

    上例中的命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。

    注意:以root用户身份登录系统时,使用killall命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程。这可能会破坏文件系统。

  • 相关阅读:
    C#实现将字符串转换成代码并执行
    Net实现钩子函数(Hook)以及通过SendMessage实现自动点击按钮和给文本框赋值
    异步与多线程的区别
    使用NODEJS实现JSONP的实例
    JS闭包作用域解析
    InterLocked学习笔记
    C#方法中的各类参数
    C# 数据类型详解以及变量、对象与内存
    通过Performance Monitor观察程序内存使用情况
    Git学习笔记(windows git之初体验)
  • 原文地址:https://www.cnblogs.com/shamo89/p/9280569.html
Copyright © 2011-2022 走看看