一不小心写成上下两篇了.真是有些过意不去.毕竟,写的太多就少了一部分读者(少了一部分赞额).
之所以拆成上下两篇,主要是因为在研究的过程中越发感到在一篇中强行植入那么多的东西,自己的文章结构组织起来有些困难,对读者来说,也是不容易理解.那倒不如拆分成两部分.
我的需求如此简单,统计Mac上面一天的运行情况,然后在每天的下午六点把统计的情况汇总通过Email发送给我.
用更加具体来说,就是,
隔一段时间使用Python脚本,统计当前电脑的运行情况,CPU,内存,硬盘,网络使用状况,然后在每天的下午六点通过Email把统计情况汇总,并且必须要有监控图,并通过Email发送给我的邮箱.
初看这玩意是挺简单的,但是自己动手写了以后就知道,其实还是稍微有些费时间的.
比如:
既然那么多,那就分成两篇,一篇用来介绍Mac上面的定时任务(简单,短文),另一篇用Python来监控Mac电脑,并持久化监控数据,绘图,汇总,发送email.(稍微复杂一点,带图长文)
所谓的定时任务,分为两种:
执行的内容,通常情况下和要做什么事情有关,但是从内容上,分为两种:
好,简单的写一个任务get_time.sh.
#!/bin/bash
date >> /Users/twocucao/Downloads/dates.txt
接着加上可执行.
chmod a+x get_time.sh
那么,怎么让Mac通过launchd隔一段时间就执行脚本呢?
创建一个特殊的xml文件叫做com.twocucao.apple.getdates.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>
<key>Label</key>
<string>com.twocucao.apple.getdates</string>
<key>ProgramArguments</key>
<array>
<string>/Users/twocucao/OhMyCode/Bash/get_time.sh</string>
</array>
<key>StartInterval</key>
<integer>10</integer>
</dict>
</plist>
对于这个com.twocucao.apple.getdates随你命名的,保证唯一就好.通常情况下选择反转域名(和Java编程类似),其他的,依照你的脚本位置和间隔时间修改.
拷贝到LaunchDaemons,加载定时工作,然后检查是否加载成功
cp com.twocucao.apple.getdates.plist /Library/LaunchDaemons
launchctl load -w /Library/LaunchDaemons/com.twocucao.apple.getdates.plist
#列出定时任务,并且筛选一下.确认是否加载成功.
launchctl list | grep twocucao
由于这个脚本实在是太弱智了仅仅是为了演示,所以,记得把他给卸载,删除
launchctl unload -w /Library/LaunchDaemons/com.twocucao.apple.getdates.plist
rm /Library/LaunchDaemons/com.twocucao.apple.getdates.plist
user-agents是级别最低,其他所需权限依次递增.
答:tail -f /Users/twocucao/Downloads/dates.txt
问:如何确定launchd存在这个任务
答: launchctl list
问:既然是隔一段时间就能执行脚本,那么,我可以先用简单的shell脚本,配置好相关执行信息,让他定时执行,接着修改shell脚本执行新的逻辑么?
答:可以.
问:bash命令监控多么方便,为何下一篇要使用Python作为监控工具.
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123