m1 ssd监控 mac定时任务

最近购买了m1 pro的中配版mac 前期听说ssd读取有问题 于是在知乎逛一圈 发现有大佬写好的pyplot 于是借用写了一个mac定时任务 来监控自己电脑的ssd情况 大佬🔗点击

1. 准备安装

brew install smartctl

注意:homebrew是需要提前安装的不知道如何安装的可以看我的另一文章 也是看了无数大佬总结的 🔗点击

2. 创建目录编写XXX.sh

#! /bin/zsh
/opt/homebrew/bin/smartctl -a /dev/disk0 >> ~/data/m1ssd/disk.txt
/opt/homebrew/bin/python3  ~/data/m1ssd/ssd.py

注意⚠️:路径大家改自己的 自己的在哪里就改那

创建完成后进行下面的操作

Chomd +x xxx.sh or chomd 777 xxx.sh

3. 编写需要编写的py

from matplotlib import pyplot as plt
import matplotlib.ticker as mticker
from dateutil import parser
import re
import datetime

with open("/Users/coolcorgy/data/m1ssd/disk.txt", "r") as f:
    data = f.read() 

units = {"B": 1, "KB": 10**3, "MB": 10**6, "GB": 10**9, "TB": 10**12}

def parse_size(size):
    number, unit = [string.strip() for string in size.split()]
    return int(float(number)*units[unit])

time_str = re.findall("Local Time.*", data)
tb_str = re.findall("Data Units Written.*",data)
time = []
tb = []
for i in time_str:
    time.append(parser.parse(i[36:]))

tb = [re.search("\[.*\]",i).group()[1:-1] for i in tb_str]
tb = [parse_size(i)/1e12 for i in tb]
plt.plot(time,tb)
plt.gcf().autofmt_xdate()
plt.xlabel("date")
plt.ylabel("wirtten")
plt.gca().yaxis.set_major_formatter(mticker.FormatStrFormatter('%.2f TB'))
plt.savefig(f'/Users/coolcorgy/data/m1ssd/{datetime.datetime.now().strftime("%Y-%m-%d %H:%M")}.jpg')

注意⚠️:

  1. 目录写你的 上面的代码需要更改你的路经
  2. 上面的包需要你提前pip install 具体百度

4. 编写plist

用访达或者命令找到 如下图片的两个文件夹 LaunchAgemts or LaunchDaemons

两个文件的区别是前者需要登陆才能启动定时命令 后者只要开机不登陆也会执行 我用后面的那个报错 于是我就用了前面的

image-20211123162358820

image-20211123162231953

编写cn.corgy.ssd.plist (这是我的大家也可以写自己的名字.plist)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <!-- Label唯一的标识 -->
  <key>Label</key>
  <string>com.corgy.ssd.plist</string>
  <!-- 指定要运行的脚本 -->
  <key>ProgramArguments</key>
  <array>
    <string>/Users/coolcorgy/data/m1ssd/ssd.sh</string>
  </array>
  <!-- 指定要运行的时间 -->
  <!-- <key>StartCalendarInterval</key>
  <dict>
        <key>Minute</key>
        <integer>50</integer>
        <key>Hour</key>
        <integer>14</integer>
  </dict> -->
  <!-- 制定多久时间执行一次 时间是秒-->
<key>StartInterval</key>
<integer>43200</integer>

<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/coolcorgy/data/m1ssd/log/run.log</string>
<!-- 标准错误输出文件,错误日志 -->
<key>StandardErrorPath</key>
<string>/Users/coolcorgy/data/m1ssd/log/run.err</string>
</dict>
</plist>

具体文件的含义大家可以自己去学一下

注意⚠️:

  1. 目录需要大家改自己的
  2. 大家也可以通过定义每天固定的时间来执行

5. 执行命令

# 加载任务, -w选项会将plist文件中无效的key覆盖掉,建议加上
$ launchctl load -w cn.corgy.ssd.plist
 
# 删除任务
$ launchctl unload -w cn.corgy.ssd.plist
 
# 查看任务列表, 使用 grep '任务部分名字' 过滤
$ launchctl list | grep 'cn.corgy'
 
# 开始任务
$ launchctl start  cn.corgy.ssd.plist
 
# 结束任务
$ launchctl stop   cn.corgy.ssd.plist

6. 结果

2021-11-23 15:54

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值