收藏macOS/iOS自动化指南十万个冷知识

使用Python监控Mac一天的运行(上)

2016-02-28  本文已影响3739人  无与童比

前言

一不小心写成上下两篇了.真是有些过意不去.毕竟,写的太多就少了一部分读者(少了一部分赞额).

之所以拆成上下两篇,主要是因为在研究的过程中越发感到在一篇中强行植入那么多的东西,自己的文章结构组织起来有些困难,对读者来说,也是不容易理解.那倒不如拆分成两部分.

任务分解

我的需求如此简单,统计Mac上面一天的运行情况,然后在每天的下午六点把统计的情况汇总通过Email发送给我.

用更加具体来说,就是,

隔一段时间使用Python脚本,统计当前电脑的运行情况,CPU,内存,硬盘,网络使用状况,然后在每天的下午六点通过Email把统计情况汇总,并且必须要有监控图,并通过Email发送给我的邮箱.

初看这玩意是挺简单的,但是自己动手写了以后就知道,其实还是稍微有些费时间的.

比如:

既然那么多,那就分成两篇,一篇用来介绍Mac上面的定时任务(简单,短文),另一篇用Python来监控Mac电脑,并持久化监控数据,绘图,汇总,发送email.(�稍微复杂一点,带图长文)

本文结构

为什么需要定时任务?

所谓的定时任务,分为两种:

  1. 指定时间执行的程序
  2. 每隔一段时间执行的程序

执行的内容,通常情况下和要做什么事情有关,但是从内容上,分为两种:

  1. 任务之间的数据没有什么关联的
  1. 任务之间的数据有关联的,甚至某种程度上可以绘制图像.

Mac上面如何进行定时任务.

好,简单的写一个任务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是级别最低,其他所需权限依次递增.

扩展阅读(精选优质资料)

  1. 一个关于Linux命令的各种奇技的网站 http://www.commandlinefu.com/commands/browse
  2. Linux工具快速教程 http://linuxtools-rst.readthedocs.org/zh_CN/latest/index.html
  3. 关于launchd的参考链接,
  1. 命令行的艺术 https://github.com/jlevy/the-art-of-command-line
上一篇下一篇

猜你喜欢

热点阅读