GVKun编程网logo

Shell脚本监控Linux系统CPU使用率(shell脚本监控cpu并报警)

17

在本文中,您将会了解到关于Shell脚本监控Linux系统CPU使用率的新资讯,同时我们还将为您解释shell脚本监控cpu并报警的相关在本文中,我们将带你探索Shell脚本监控Linux系统CPU使

在本文中,您将会了解到关于Shell脚本监控Linux系统CPU使用率的新资讯,同时我们还将为您解释shell脚本监控cpu并报警的相关在本文中,我们将带你探索Shell脚本监控Linux系统CPU使用率的奥秘,分析shell脚本监控cpu并报警的特点,并给出一些关于Java获取Linux系统cpu使用率、linux shell 脚本监控磁盘、Linux shell脚本监控tomcat,宕机自动重启、linux shell脚本监控进程是否存在的实用技巧。

本文目录一览:

Shell脚本监控Linux系统CPU使用率(shell脚本监控cpu并报警)

Shell脚本监控Linux系统CPU使用率(shell脚本监控cpu并报警)

Shell脚本如下:

#/bin/bash
#environment variable
source /etc/profile
#cpu
cpu_us=`vmstat | awk '{print $13}' | sed -n '$p'`
cpu_sy=`vmstat | awk '{print $14}' | sed -n '$p'`
cpu_id=`vmstat | awk '{print $15}' | sed -n '$p'`
cpu_sum=$(($cpu_us+$cpu_sy))
if(($cpu_sum >= 90))
        then
        msg="TIME:$(date +%F_%T)
                 HOSTNAME:$(hostname)
                 IPADDR:$(ifconfig |awk 'NR==2{print $2}')
                 MSG:cpu使用率过高!已经用了${cpu_sum}%"
            echo $msg
        vmstat | awk '{print $1,$13,$14,$15}' | sed -n '2,$p' > /test/tt.txt
        /test/sendmail.py $msg
fi

Java获取Linux系统cpu使用率

Java获取Linux系统cpu使用率

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import org.apache.commons.io.FileSystemUtils;

public class OSUtils {

    /**
     * 功能:可用磁盘
     * */
    public static int disk() {
        try {
            long total = FileSystemUtils.freeSpaceKb("/home");
            double disk = (double) total / 1024 / 1024;
            return (int) disk;
        } catch (IOException e) {
            e.printstacktrace();
        }
        return 0;
    }

    /**
     * 功能:获取Linux系统cpu使用率
     * */
    public static int cpuUsage() {
        try {
            Map<?,?> map1 = OSUtils.cpuinfo();
            Thread.sleep(5 * 1000);
            Map<?,?> map2 = OSUtils.cpuinfo();

            long user1 = Long.parseLong(map1.get("user").toString());
            long nice1 = Long.parseLong(map1.get("nice").toString());
            long system1 = Long.parseLong(map1.get("system").toString());
            long idle1 = Long.parseLong(map1.get("idle").toString());

            long user2 = Long.parseLong(map2.get("user").toString());
            long nice2 = Long.parseLong(map2.get("nice").toString());
            long system2 = Long.parseLong(map2.get("system").toString());
            long idle2 = Long.parseLong(map2.get("idle").toString());

            long total1 = user1 + system1 + nice1;
            long total2 = user2 + system2 + nice2;
            float total = total2 - total1;

            long totalIdle1 = user1 + nice1 + system1 + idle1;
            long totalIdle2 = user2 + nice2 + system2 + idle2;
            float totalidle = totalIdle2 - totalIdle1;

            float cpusage = (total / totalidle) * 100;
            return (int) cpusage;
        } catch (InterruptedException e) {
            e.printstacktrace();
        }
        return 0;
    }

    /**
     * 功能:cpu使用信息
     * */
    public static Map<?,?> cpuinfo() {
        InputStreamReader inputs = null;
        BufferedReader buffer = null;
        Map<String,Object> map = new HashMap<String,Object>();
        try {
            inputs = new InputStreamReader(new FileInputStream("/proc/stat"));
            buffer = new BufferedReader(inputs);
            String line = "";
            while (true) {
                line = buffer.readLine();
                if (line == null) {
                    break;
                }
                if (line.startsWith("cpu")) {
                    StringTokenizer tokenizer = new StringTokenizer(line);
                    List<String> temp = new ArrayList<String>();
                    while (tokenizer.hasMoreElements()) {
                        String value = tokenizer.nextToken();
                        temp.add(value);
                    }
                    map.put("user",temp.get(1));
                    map.put("nice",temp.get(2));
                    map.put("system",temp.get(3));
                    map.put("idle",temp.get(4));
                    map.put("iowait",temp.get(5));
                    map.put("irq",temp.get(6));
                    map.put("softirq",temp.get(7));
                    map.put("stealstolen",temp.get(8));
                    break;
                }
            }
        } catch (Exception e) {
            e.printstacktrace();
        } finally {
            try {
                buffer.close();
                inputs.close();
            } catch (Exception e2) {
                e2.printstacktrace();
            }
        }
        return map;
    }

    /**
     * 功能:内存使用率
     * */
    public static int memoryUsage() {
        Map<String,Object>();
        InputStreamReader inputs = null;
        BufferedReader buffer = null;
        try {
            inputs = new InputStreamReader(new FileInputStream("/proc/meminfo"));
            buffer = new BufferedReader(inputs);
            String line = "";
            while (true) {
                line = buffer.readLine();
                if (line == null)
                    break;
                int beginIndex = 0;
                int endindex = line.indexOf(":");
                if (endindex != -1) {
                    String key = line.substring(beginIndex,endindex);
                    beginIndex = endindex + 1;
                    endindex = line.length();
                    String memory = line.substring(beginIndex,endindex);
                    String value = memory.replace("kB","").trim();
                    map.put(key,value);
                }
            }

            long memTotal = Long.parseLong(map.get("MemTotal").toString());
            long memFree = Long.parseLong(map.get("MemFree").toString());
            long memused = memTotal - memFree;
            long buffers = Long.parseLong(map.get("Buffers").toString());
            long cached = Long.parseLong(map.get("Cached").toString());

            double usage = (double) (memused - buffers - cached) / memTotal * 100;
            return (int) usage;
        } catch (Exception e) {
            e.printstacktrace();
        } finally {
            try {
                buffer.close();
                inputs.close();
            } catch (Exception e2) {
                e2.printstacktrace();
            }
        }
        return 0;
    }
}

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

linux shell 脚本监控磁盘

linux shell 脚本监控磁盘

df -h | grep -E "/data|/factory" | tr "%" " " | awk ''$5>70{print $1,$2,$4,$5"%",$6}''

输出例子:
/dev/mmc1 11G 1.4G 86% /data

程序端可通过调用该脚本判断,当百分比大于某个阈值或可使用空间小于某个阈值时,可发送通知消息。

Linux shell脚本监控tomcat,宕机自动重启

Linux shell脚本监控tomcat,宕机自动重启

1.shell脚本编写

#!/bin/sh  
  
TomcatID=$(ps -ef|grep tomcat|grep java|grep -v "grep"|awk ''{print $2}'')  
  
StartTomcat=/usr/local/apache-tomcat-7.0.78/bin/startup.sh  
TomcatCache=/usr/local/apache-tomcat-7.0.78/work  
  
WebUrl=http://123.18.25.111:8080/ 
  
GetPageInfo=/dev/null  
TomcatMonitorLog=/usr/local/shell/TomcatMonitor.log  
  
Monitor()  
{  
  echo "[info]start monitor tomcat...[$(date +''%F %H:%M:%S'')]"  
  if [[ $TomcatID ]];then   
    echo "[info]current tomcat pid ID is:$TomcatID,go on check page..."  
    TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})  
    if [ $TomcatServiceCode -eq 200 ];then  
        echo "[info]tomcat run successful,and test page is normal......"  
    else  
        echo "[error]tomcat get error"  
        echo "[error]restart tomcat"  
        kill -9 $TomcatID    
        sleep 3  
        rm -rf $TomcatCache 
        $StartTomcat  
    fi  
  else  
    echo "[error]tomcat process in not exist! tomcat auto restart..."  
    echo "[info]$StartTomcat,please in wait......"  
    rm -rf $TomcatCache  
    $StartTomcat  
  fi  
  echo "------------------------------"  
}  
Monitor>>$TomcatMonitorLog 

脚本中StartTomcat,TomcatID,根据自己tomcat位置及tomcat名自定义 ,WebUrl可以是一个比较小的页面,也可以是服务器的资源图片

2.window上编辑后的sh脚本在linux执行报错 原因:window上保存文件,换行是\r\n ,Linux上\n 解决方案 : 在linux 上用vim编辑器 打开sh脚本, 输入:set ff = unix 在输入 :wq 保存并退出

3.Linux 定时器使用
crontab -e 编辑定时器 详细定时器格式 可自行百度查看 crontab -l 可查看当前执行的定时任务 */1 * * * * /usr/local/shell/monitor.sh

linux shell脚本监控进程是否存在

linux shell脚本监控进程是否存在

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:
    
#!/bin/sh
ps -fe|grep processString |grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
else
echo "runing....."
fi

#####
processString 表示进程特征字符串,能够查询到唯一进程的特征字符串
0表示存在的
$? -ne 0 不存在,$? -eq 0 存在

定时执行:

命令行输入:crontab -e
0 04,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh
每天晚上4点,中午12点,晚上21点检测

* 04,12 * * * 这个是指4点和12点中每分钟执行一次
0 4,12 * * * 4点12点 第0分钟执行一次

m:分钟,0-59
h:小时,0-23
dom:日期,1-31
mon:月份,1-12
dow:星期,0-6,0为星期天
command:命令

第一个表示分钟,所以第一个你就随便写个,表示第几分钟执行的意思

你要做的就是限制第二个参数,小时
1 */3 * * * php /path/to/your/cron.php       
每隔3小时的第一分钟执行一次任务

这里的每怎么理解?*/1和*无区别,所以可以省略。这里可以想想,*/3表示能被3整除的时间就好理解了。

每五分钟执行  */5 * * * *

每小时执行     0 * * * *

每天执行        0 0 * * *

每周执行        0 0 * * 0

每月执行        0 0 1 * *

每年执行        0 0 1 1 *

 

扩展相关知识:

shell的if else 语法以及大于,小于等逻辑表达式:

if ....; then

  ....

elif ....; then

  ....

else

  ....

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等          -r file     用户可读为真
  -w file     用户可写为真
  -x file     用户可执行为真
  -f file     文件为正规文件为真
  -d file     文件为目录为真
  -c file     文件为字符特殊文件为真
  -b file     文件为块特殊文件为真
  -s file     文件大小非0时为真
  -t file     当文件描述符(默认为1)指定的设备为终端时为真
######################################################### 含条件选择的shell脚本
    对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

 

判断文件是否存在
    
#!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" chenshuo@soufun.com <error.log
fi

shell基本命令
(1)ps aux    显示系统全部进程,一行一个
(2)grep “abc” 从标准输入读取字符流,输出包含字符串“abc”的行
(3)grep -v "acb"   从标准输入读取字符流,输出不包含字符串“abc”的行
(4)wc -l        从标准输入读取字符流,输出行数

例如需要检测进程httpd是否存在,操作流程如下:
(1)读取系统所有进程
(2)判断包含指定进程名字的信息是否存在
通过管道连接,命令如下:

ps axu      |    grep "httpd"           |      grep -v "grep"    |      wc -l
所有进程-->获取包含“httpd”的行-->删除grep进程信息-->输出最后的行数

通过判断命令的执行结果是否为 0 ,可以知道进程是否存在。

脚本如下:
    
#!/bin/sh
while true;do
    count=`ps -ef|grep http|grep -v grep`
    if [ "$?" != "0" ];then
echo  ">>>>no httpd,run it"
service httpd start
else
echo ">>>>httpd is runing..."
fi
sleep 5
done
分类: linux

 

https://www.cnblogs.com/anitinaj/p/7457000.html

关于Shell脚本监控Linux系统CPU使用率shell脚本监控cpu并报警的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Java获取Linux系统cpu使用率、linux shell 脚本监控磁盘、Linux shell脚本监控tomcat,宕机自动重启、linux shell脚本监控进程是否存在等相关内容,可以在本站寻找。

本文标签: