m1 ssd监控 mac定时任务

m1 ssd监控 mac定时任务,第1张

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

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

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





  
  Label
  com.corgy.ssd.plist
  
  ProgramArguments
  
    /Users/coolcorgy/data/m1ssd/ssd.sh
  
  
  
  
StartInterval
43200


StandardOutPath
/Users/coolcorgy/data/m1ssd/log/run.log

StandardErrorPath
/Users/coolcorgy/data/m1ssd/log/run.err


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

注意⚠️:

  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. 结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5579543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存