在本文中,您将会了解到关于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并报警)
- Java获取Linux系统cpu使用率
- linux shell 脚本监控磁盘
- Linux shell脚本监控tomcat,宕机自动重启
- linux shell脚本监控进程是否存在
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使用率
下面是小编 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 脚本监控磁盘
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,宕机自动重启
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脚本监控进程是否存在
用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脚本监控进程是否存在等相关内容,可以在本站寻找。
本文标签: