说明
呃。
这里主要是说一下思路, 毕竟需求确定以后,代码都可以实现。
首先写一个 脚本,实现你想定时查看的内容或某功能 然后写入到某文件中, 脚本写好以后,加入到定时任务,多少时间运行一次该脚本(多少时间写入一次内容到指定文件)。
demo
需求
比如,我现在想知道 ceph 每分钟的 io状态。需求就是这个,要知道ceph每分钟的io状态。
思路
想知道每分钟的io状态
- 1得知道查看io的方法,ceph-s
- 2 每分钟,就得有时间和ceph –s 对应—— date和ceph –s 为一组命令(每次执行这2条命令同时执行)!
- 3 既然是每分钟的io状态,就得写入(追加形式写入)某个文件,后面可以随时查看(脚本写好得手动执行 看结果是否理想)
- 4 既然是每分钟,肯定不能人为每分钟跑一次脚本,所以加入定时任务,每分钟执行一次
思路大概就是上面5个,那么就开始写脚本吧!
代码
#时间
date >> /root/cephio/cephio
#写入数据
ceph -s >> /root/cephio/cephio
#追加一个空格 便于区分
echo -e "\n" >> /root/cephio/cephio
代码很简单,既然功能都有了,就手动执行脚本 看效果吧。
ok 效果很理想。
下一步就是 加入到定时任务
加入之前,给脚本777权限吧 :chmod 777 脚本名
打开定时任务编辑界面:crontab –e
命令(定时任务不明白的,我之前发的博客有详细介绍定时任务使用):
# 分 时 天 月 周 命令
* * * * * /root/cephio.sh
保存以后 等一分钟,cat看脚本中的写入文件路径,看是否会增加 内容
可以看到 一分钟一次,很完美! 脚本完成
扩展功能
虽然 功能实现了,但我只是要io这一行内容和当前io对应的时间这2行内容(也就是说 每分钟只需要2行内容,时间和io),和 把这里面的内容 考出到本地电脑。
我们把上面2个功能结合一起实现,不用太纠结时间和io行数,也不用纠结如何想办法把时间和io中间内容过滤掉,更不用awk慢慢测试!浪费时间! 分开弄,分别提取io和时间 这样就很简单了呀!!!
看提取时间效果
看提取io效果
很完美!
看代码:
#下面代码是筛选时间的代码(Mar是月份,不是固定的!),拷贝到指定文件即可
grep -En 'Mar' cephio > cephio/time2020.txt
# 获取所有io信息,拷贝到指定文件即可
grep -En 'client' cephio > ceph2020.txt
问题来了 ,虽然时间和io数据单独提出来了,但我不可能分开看 一个一个数着对应时间和io吧!? 当然不可能了! 这时候 我们就需要利用到 Excel表,咦 好像忘说 怎么把文件提取到 本地电脑了,那么先说 拷贝文件到本地文件把
我用的是 SecureCRT自带FTP功能,如果用其他软件拷贝的,就不用看我下面的
linux切换到该目录 和查看
cd cephio
ls
windows切换目录和查看,以E盘为例,可以不指定,默认在 此电脑-文档 里面
lcd E:\
lls
下载到本地电脑
get 文件名
#下载完以后到定义目录去查看下载的文件即可!
文件拷贝完成以后
打开excel
然后分别添加 刚才考出的io和时间
两个表同样方法添加,效果如下 这样时间和io 就对应了! 全部完成!
全部弄完以后 还有一个很严重的问题,发现拷贝出来的时间不准啊,和本地时间不对应!我丢
去linux系统上date查看 发现 时差51分钟! (如果linux时间是正确的 跳过该步骤)
那么就在excel表中修改时间呗!
新插入一个新行
修改时间格式:=A1+"00:02"
我这原时间是r列,时差51分钟,所以:=R1+"00:51"
然后一拉,全部就修改完成了
最后 隐藏 原时间(不能删),全部完成!
有没有懵逼啊?!
如果懵逼了 我这里在总结一下最后这步骤吧!
1 分别提取 io和时间 写入到某目录
2 考出提取后的io和时间 到本地
3 添加到 excel表格
4 修改时间(linux时间准的跳过该步骤)
好记性不如烂笔头 , 虽然看着很简单 但每一个看似简单背后 都有很多尝试,n次失败过程虽然很狼狈,但享受成功的那一刻 很帅! 多总结吧 也当给自己增加一个印象!