V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yuyuyu
V2EX  ›  Linux

Linux 有啥工具可以监控程序的 cpu 使用率太高的时候自动 restart?

  •  
  •   yuyuyu · 2019-01-04 17:40:53 +08:00 · 3572 次点击
    这是一个创建于 2149 天前的主题,其中的信息可能已经有所发展或是发生改变。

    监控某个程序 cpu 占用很高并且持续一段时间后自动傻吊重启?

    15 条回复    2019-01-05 11:35:03 +08:00
    zou2699
        1
    zou2699  
       2019-01-04 17:51:57 +08:00
    ps aux 获取 cpu 占用率和 pid,一个小脚本就行了
    owenliang
        2
    owenliang  
       2019-01-04 18:01:53 +08:00
    本质是 cpu 太高还是 cpu 温度太高?
    sunnyadamm
        3
    sunnyadamm  
       2019-01-04 18:37:18 +08:00 via Android
    写个脚本挂后台跑就行了
    Lax
        4
    Lax  
       2019-01-04 21:36:15 +08:00
    monit supervisor,入门级高可用部署标配
    deweixu
        5
    deweixu  
       2019-01-04 21:42:53 +08:00
    crontab
    top
    reboot
    loading
        6
    loading  
       2019-01-04 21:45:34 +08:00 via Android   ❤️ 3
    本来 99%,结果一个判断的 crontab 来了,100%,条件满足,重启。
    congeec
        7
    congeec  
       2019-01-04 21:54:59 +08:00 via iPhone
    @loading 每次启动 htop 某个 cpu 核心都会飙到 100%
    metrxqin
        8
    metrxqin  
       2019-01-04 22:05:40 +08:00   ❤️ 2
    不去探究 CPU 太高的原因,反倒想到这个怪招,真的相当佩服。
    workwonder
        9
    workwonder  
       2019-01-04 22:20:06 +08:00 via Android
    @metrxqin 从运维角度很合理啊,总不能保证程序不出意外,但又不得不用。
    cuixiao603
        10
    cuixiao603  
       2019-01-04 22:20:48 +08:00
    @metrxqin 感觉楼主操作很奇怪,看你说的明白奇怪在哪里了
    so1n
        11
    so1n  
       2019-01-04 22:48:21 +08:00 via Android
    写个脚本判断就可以啦,最好重启时记录下进城情况已经其他内存等,以后容易分析问题
    est
        12
    est  
       2019-01-04 22:50:03 +08:00
    没人说 cgroup ? 2333
    openbsd
        13
    openbsd  
       2019-01-05 00:46:14 +08:00
    LS 各位大神怕是错误理解了 restart...... LZ 你需要 Docker
    Flasky
        14
    Flasky  
       2019-01-05 01:00:00 +08:00 via Android
    楼主应该说的是程序 restart 吧?哪有系统频繁 restart 的
    kernel
        15
    kernel  
       2019-01-05 11:35:03 +08:00
    我的桌面 load 太高提示的小程序:

    #!/usr/bin/env python
    import subprocess
    import re
    import os
    import sys
    import datetime

    uptime_output = subprocess.check_output(['uptime']).decode()
    loads = tuple(map(float, re.search(r'load average: ([.\d]+), ([.\d]+), ([.\d]+)', uptime_output).groups()))
    print('system load:', loads)
    throttle = float(sys.argv[1])
    if all(load > throttle for load in loads):
    os.system('notify-send -i emblem-system "Load Alert" "[{}] {}"'.format(
    datetime.datetime.now().strftime('%H:%M:%S'), loads))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:38 · PVG 08:38 · LAX 16:38 · JFK 19:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.