前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux中Top命令写入计划性任务之后失效了?

Linux中Top命令写入计划性任务之后失效了?

作者头像
互联网-小阿宇
发布2022-11-21 10:50:46
4320
发布2022-11-21 10:50:46
举报
文章被收录于专栏:互联网-小阿宇

问题场景:

写了一个检测服务器cpu的脚本,每三分钟检测一次,当cpu总使用率达到30%时候将进行触发后续功能;


问题描述

脚本写完之后,手动执行没问题,但是将脚本写入crontab之后查看日志并未起到作用;

原脚本如下:

代码语言:javascript
复制
#!/bin/bash
source /etc/profile
now_cpu=`/usr/bin/top  -n 1 | grep Cpu | awk '{print $2}' | awk -F '.' '{print $1}'`
fazhi=30
now=`date`
echo "现在的cpu值为:$now_cpu"
echo $now_cpu >> /root/cpu.log
if [ $now_cpu -ge $fazhi ];
then
   echo "现在的cpu大于$fazhi%,触发清理慢sql脚本"
   /bin/sh /root/test.sh
   echo "清理成功记录$now" >> /root/cpu.log
else
   echo "现在的cpu小于$fazhi%"
   echo "不需要清理记录$now" >> /root/cpu.log
fi

通过cpu.log发现当计划性任务执行脚本的时候$now_cpu参数获取为空我就知道是这里的问题,网上一开始查看了一些资料,有的说添加环境变量,但是也没效果;


原因分析解决:

专门针对Top命令写入计划性任务之后失效我展开了搜索查询;

发现缺少参数-b、添加后问题解决

修改后脚本如下:

代码语言:javascript
复制
#!/bin/bash
source /etc/profile
now_cpu=`/usr/bin/top -b -n 1 | grep Cpu | awk '{print $2}' | awk -F '.' '{print $1}'`
#temp=`w`
fazhi=30
now=`date`
echo "现在的cpu值为:$now_cpu"
echo $now_cpu >> /root/cpu.log
if [ $now_cpu -ge $fazhi ];
then
   echo "现在的cpu大于$fazhi%,触发清理慢sql脚本"
   /bin/sh /root/test.sh
   echo "清理成功记录$now" >> /root/cpu.log
else
   echo "现在的cpu小于$fazhi%"
   echo "不需要清理记录$now" >> /root/cpu.log
fi
参数详解:

top -b: ‘批量模式’,用来将输出重定向到指定文件,一般配合-n 指定输出几次统计信息

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题场景:
  • 问题描述
  • 原因分析解决:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档