美文网首页
Tutorial・在mac上创建定时签到任务

Tutorial・在mac上创建定时签到任务

作者: 荒剑离 | 来源:发表于2020-01-06 20:29 被阅读0次

可能有很多朋友和我一样,每天都得登录一些网站完成签到任务。但是每次都手动干太麻烦,所以不如创建一个自动的定时签到任务。

运行环境:macOS 10.14.5
主要用到的命令:launchctl

整个创建的过程如下:

  1. 编写基于python的签到程序;
    这里用得是requests的第三方库,具体代码内容视网站不同登录而定,但是都需要加入查询网络是否无连接的功能isNoConnection(),这样可以避免在后续系统唤起时因为网络问题导致的定时任务失败。
def isNoConnection():
    try:
        import requests
        html = requests.get("http://www.baidu.com",timeout=2)
    except:
        return True
    return False
  1. 编写shell脚本程序来执行python文件;
    其实直接在python程序头写入执行命令也可以,譬如#!/usr/bin/python,但此处进行这一步主要是为了后续扩展,以便一同执行其它的任务。这个shell文件比较简单,只有两点需要注意:其一是开头要指明shell的执行程序,即#! /bin/bash,其二就是任何命令与文件都要写明完整的路径,即绝对路径。打个样,如下:
#! /bin/bash
/Users/yourname/bin/python /Users/yourname/Documents/login.py
echo "work done"
  1. 编写定时任务plist文件;
    本质就是一个xml文件,只是有一些特殊的字段约定,譬如定时需要用到StartCalendarInterval,所以写起来也比较简单。此处可以参考下面几个链接:设置 Mac 启动和唤醒时执行任务的几种方法How to run script at wake?Launchd.plist with WatchPaths key: How to set a minimum interval?
  2. 加载plist文件;
    这就用到launchctl命令,用起来也非常简单,命令行界面进入到plist文件所在目录,可以使用如下命令:(建议参考 launchctl :MAC 下的定时任务
// 加载任务
$ launchctl load com.test.task.plist
// 删除任务
$ launchctl unload com.test.task.plist
// 查看任务列表, 使用 grep '任务部分名字' 过滤
$ launchctl list | grep 'com.test.task.plist'
// 开始
$ launchctl start com.test.task.plist
// 停止
$ launchctl stop com.test.task.plist

那么现在完成上面4步,就创建了你的每日定时签到任务。

值得注意的是,当mac进入休眠状态时,网络是不可用的,那么即便到了定的时间,也无法执行任务,这时第一步的网络连接检测功能就变得很重要了。不过一旦系统被唤醒,只要定的时间已过,该定时任务就会立刻执行一次。

相关文章

网友评论

      本文标题:Tutorial・在mac上创建定时签到任务

      本文链接:https://www.haomeiwen.com/subject/hdakactx.html