Mac定时任务-利用launchctl定时启动任务

Catalogue
  1. 1. 介绍
  2. 2. Launchctl
    1. 2.1. Plist文件
  3. 3. 编写APP启动脚本
  4. 4. 创建launch plist启动文件
  5. 5. launchctl命令
    1. 5.1. 挂载任务
    2. 5.2. 开启任务
    3. 5.3. 停止任务
    4. 5.4. 重新挂载任务 - 修改脚本后需要重新挂载
      1. 5.4.1. 卸载任务
      2. 5.4.2. 重新挂载任务
    5. 5.5. 参考资料

介绍

Launchctl

Launchctl控制OS X系统里的启动进程(launch),在Mac里有一个命令行工具叫做:launchctl,可以用来控制服务的自动启动或者关闭。

Plist文件

Plist的全称是Property lists,是一种用来存储串行化后的对象的文件。属性列表文件的文件扩展名为.plist,因此通常被称为plist文件。Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息。

Plist组织数据到命名值和列表值,主要通过几个主要的Core Foundation类型:CFString, CFNumber, CFBoolean, CFDate, CFData, CFArray, 和 CFDictionary。

编写APP启动脚本

1.打开launchpad->脚本编辑器,写入如下代码

set appName to "XXApp(此处为app名称)"

if application appName is not running then
    tell application "Finder"
        activate
        open application file "XXApp.app" of folder "Applications" of startup disk
    end tell
    return "Running"
else
    return "Not running"
end if

保存到合适的路径

创建launch plist启动文件

进入~/Library/LaunchAgents文件夹,创建新的plist文件com.autoOpenXXApp

<?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.demo.plist</string>
  <!-- 指定要运行的脚本 -->
  <key>ProgramArguments</key>
  <array>
    <string>osascript</string>
    <string>/Users/mac/Downloads/AutoOpenXXApp.scpt</string>
  </array>
  <!-- 指定要运行的时间 -->
  <key>StartInterval</key>
    <integer>10</integer>
    <!-- 标准输入文件 -->
    <key>StandardInPath</key>
    <string>/Users/mac/Downloads/testScript.log</string>
    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/mac/Downloads/testScript.log</string>
    <!-- 标准错误输出文件 -->
    <key>StandardErrorPath</key>
    <string>/Users/mac/Downloads/testScript.log</string>
</dict>
</plist>

launchctl命令

cd ~/Library/LaunchAgents

挂载任务

launchctl load -w com.autoOpenXXApp.plist

开启任务

launchctl start com.autoOpenXXApp.plist

停止任务

launchctl stop com.autoOpenXXApp.plist

重新挂载任务 - 修改脚本后需要重新挂载

卸载任务

launchctl unload -w com.autoOpenXXApp.plist

重新挂载任务

launchctl load -w com.autoOpenXXApp.plist

参考资料