利用 macOS 自动化脚本和cron定时任务提升生产力
date
Jan 4, 2024
slug
automation in macos
status
Published
tags
个人开发
macOS
小工具
summary
本文介绍了如何在 macOS 上利用自动化脚本和 cron 定时任务来自动执行日常任务,如打开应用和网站。通过 AppleScript 编写脚本,结合 Launched 进程管理器,可以实现在特定时间自动执行脚本,从而提高工作效率。文章提供了详细的配置文件示例,并解释了如何通过
launchctl
命令加载和调试这些定时任务。此外,还强调了在系统更新后,这些自动化工具对于解决系统卡顿问题的重要性。type
Post
macOS 提供了强大的自动化脚本环境,允许用户通过 AppleScript 编写脚本来控制应用和系统行为。例如,通过 PopClip 的Bob 翻译插件,可以轻松地唤起翻译框。如果您希望创建自己的自动化脚本,如每天自动打开特定网站或应用,可以使用 ChatGPT 等 AI 工具来辅助编写代码。
脚本示例代码
以下是一个简单的 AppleScript 示例,用于打开默认浏览器并导航到指定 URL,同时打开提醒事项应用并发送通知:
tell application "System Events"
set defaultBrowser to name of first application process whose frontmost is true
end tell
tell application defaultBrowser
open location "<https://play.google.com/console>"
activate
end tell
-- 打开提醒事项应用
tell application "Reminders"
activate
end tell
-- 发送通知
display notification "请检查任务 Inbox 并确定下一步做什么" with title "GTD 提醒"
自动化脚本的执行
要运行这些脚本,您需要将它们导出为 .app 文件,然后双击即可执行。为了实现自动化,可以使用cron 定时任务来触发这些脚本。如果您不熟悉如何设置 cron 任务,可以考虑使用 Launched,这是一个macOS 进程管理器,可以帮助您配置和调度任务。
cron 定时任务配置
以下是一个配置文件示例,用于在特定时间点执行上述脚本:
<?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.jiangjiwei.cron.gtd</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<!-- 全局唯一的脚本路径 -->
<string>/Users/jiangjiwei/Code/applescript/open_reminder.app</string>
</array>
<!-- 定时任务的运行时间 -->
<key>StartCalendarInterval</key>
<array>
<!-- 9:00 AM -->
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<!-- 12:00 PM -->
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<!-- 3:00 PM -->
<dict>
<key>Hour</key>
<integer>15</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<!-- 5:40 PM -->
<dict>
<key>Hour</key>
<integer>17</integer>
<key>Minute</key>
<integer>40</integer>
</dict>
</array>
<!-- 日志文件路径 -->
<key>StandardInPath</key>
<string>/Users/jiangjiwei/Code/applescript/log/run-in-meican.log</string>
<key>StandardOutPath</key>
<string>/Users/jiangjiwei/Code/applescript/log/run-out-meican.log</string>
<key>StandardErrorPath</key>
<string>/Users/jiangjiwei/Code/applescript/log/run-err-meican.log</string>
</dict>
</plist>
将此配置文件命名为
com.cherry.cron.open.gtd.plist
,并放置在适当的目录下,可以实现不同的自动化效果:~/Library/LaunchAgents
:脚本仅在当前用户登录时执行。
/Library/LaunchAgents
:脚本在系统启动时和每次用户登录时执行。
/Library/LaunchDaemons
:脚本在系统启动时执行,无论用户是否登录。
调试与加载
为了调试和加载配置文件,可以使用以下命令:
# 加载配置文件
launchctl load /path/to/com.jiangjiwei.cron.gtd.plist
# 取消/卸载配置文件
launchctl unload /path/to/com.jiangjiwei.cron.gtd.plist
请注意,不能多次加载同一个配置文件,否则会报错。如果需要取消加载,使用
unload
命令。注意事项:
加载配置文件后,通常需要重启电脑以确保系统加载了新的配置。如果遇到问题,可以使用
launchctl list | grep $plist_filename
命令来检查配置文件是否正确加载。通过结合macOS的自动化脚本和cron定时任务,您可以创建强大的自动化工具,以提高工作效率。随着macOS的不断更新,这些工具可以帮助您更好地管理日常任务,尤其是在系统更新后可能出现的卡顿问题。