如何在 MacOS 创建定时任务和提醒事项
目的
在 MacOS 下利用定时任务创建提醒事项,使其即时显示在 iPhone 上。(例如降价提醒)
方法一:通过 cron 服务执行 AppleScript
在 /Users/<username>/ 下创建脚本 cron_reminder.sh :
#!/bin/bashosascript << END set mydate to (current date) + (1 * minutes) tell application "Reminders"make new reminder with properties {name:"This is a cron reminder", remind me date:mydate, due date:mydate} end tell END
提醒时间设为当前时间再加一分钟,如果不加,在 MacOS 上会即时弹出提醒,但 iPhone 不会弹出(因为当前这一分钟已经过时了)。
Reminders 的参数可以参考 “脚本编辑器”,打开「脚本编辑器」 → 新建一个脚本 → 用快捷键 ⌘⇧O 打开 AppleScript 字典(Dictionary)。
给脚本赋予执行权限
chmod +x cron_reminder.sh
设置 cron job
crontab -e * * * * * /Users/<username>/cron_reminder.sh
设置权限
在 [设置] - [安全性与隐私] - [隐私] - [提醒事项] 里,把 ”cron“ 和 ”终端“ 勾上。有时系统会自动弹出提示要不要允许它们访问提醒事项,选“是”就行了。
可以在脚本的前面添加你想要创建提醒事项的触发条件,例如监控某个商品降价的时候就给你发个提醒,看你怎么发挥了。
用 AppleScript 添加日历日程的例子(可以在“脚本编辑器”里进行调试):
tell application "Calendar"tell calendar "calendar-name"set theCurrentDate to current datemake new event at end with properties {description:"Event Decription", summary:"Event Name", location:"Event Location", start date:theCurrentDate + 1 * minutes, end date:theCurrentDate + 2 * minutes, url:"https://bing.com"}end tell end tell
参考
AppleScript 入门:探索 macOS 自动化
How can I add reminders via the command line?
Applescript set string to date and add 30 minutes
Applescript or Terminal : Add a event on calendar
方法二:通过 Mac launchd 执行 automator
打开 ”自动操作“ (automator),新建一个 ”工作流程“,在左边资源库里选 [日历],把 [新建提醒事项项目] 拖到右边窗口,就可以设定标题和日期等参数。设置好并保存为 /Users/<username>/launchd_reminder.workflow
再创建一个执行上面 workflow 的脚本 /Users/<username>/launchd_reminder.sh
#!/bin/bash automator /Users/<username>/launchd_reminder.workflow
到 ~/Library/LaunchAgents 下新建文件 com.<username>.reminder.plist,注意替换里面
ProgramArguments
的脚本路径和StartInterval
间隔时间(秒)。<?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.test.reminder</string><key>ProgramArguments</key><array><string>/Users/<username>/launchd_reminder.sh</string></array><key>Nice</key><integer>1</integer><key>StartInterval</key><integer>60</integer><key>RunAtLoad</key><true/><key>StandardErrorPath</key><string>/tmp/cron.err</string><key>StandardOutPath</key><string>/tmp/cron.out</string> </dict> </plist>
加载 plist
launchctl load com.<username>.reminder.plist
可以用 list 查看刚才加载的服务(用 Label 标识)
launchctl list com.test.reminder
第一次执行会弹出安全提示,效果跟 [设置] - [安全性与隐私] - [隐私] 里设置一样,点击 “是” 就OK了。如果要取消定时任务,则用 unload 卸载。
launchctl unload com.<username>.reminder.plist
参考
Mac crontab: Creating MacOS startup jobs with crontab, er, launchd
总结
- 方法一:简单直接,可以自由发挥,但要熟悉 AppleScript ,有一定的难度;
- 方法二:可以傻瓜式选择要自动运行的服务和参数,但过程有点复杂。遗憾的是该方法不能设置当前时间为提醒时间,达不到iPhone 即时提醒的效果。
如何在 MacOS 创建定时任务和提醒事项相关推荐
- 实现 消息提醒图标_Mac 上自带的「提醒事项」千万别错过
相信大部分人的手机或电脑上都有一款具有备忘或提醒功能的应用. 不管是在工作.学习还是生活中,借助这些工具能给我们带来很多便利. 比如,本期Mac毒要给大家介绍的就是 Mac 自带的「提醒事项」应用. ...
- 如何使用 Mac 上自带的「提醒事项」!
相信大部分人的手机或电脑上都有一款具有备忘或提醒功能的应用.不管是在工作.学习还是生活中,借助这些工具能给我们带来很多便利.比如,本期小编要给大家介绍的就是 Mac 自带的「提醒事项」应用. ▍应用介 ...
- 如何使用 Mac 上自带的「提醒事项」
相信大部分人的手机或电脑上都有一款具有备忘或提醒功能的应用.不管是在工作.学习还是生活中,借助这些工具能给我们带来很多便利. macOS 上的「提醒事项」界面设计得非常简约大方,直观易懂,便于使用. ...
- 如何在MacOS上创建第一个iOS Flutter应用
文章目录 1.安装Flutter 2.设置iOS模拟器 3.在Flutter中创建一个Hello World应用 Google于2018年12月4日发布了Flutter 1.0,它是一款功能强大的工具 ...
- java 创建日程到期提醒_日程管理工具—Things 3
Mac上最好用的日程管理工具是哪个?Things 3 for Mac是首选,Things3 Mac全新的设计,外观简洁.大气,功能也是非常强大的,让你用一种优雅而直观的方式来管理个人事务,无论在生活还 ...
- 如何干净的删除vm_如何在macOS 10.15 Catalina绕过XProtect?
在macOS 10.15 Catalina中,Apple进行了许多安全性能地改进,包括通过使所有可执行文件都受XProtect扫描来加固系统,而不管文件是否带有com.apple.quarantine ...
- 如何在前端删除项目中的文件_如何在macOS上恢复已删除的文件
有时候不小心删除了我们不打算删除的MacBook上的文件.在MacBook上恢复永久删除的文件非常困难,但这并非不可能.在本文中,我们将指导您如何恢复MacBook上最近恢复的文件或永久删除的文件.从 ...
- 【已解决】iphone和mac的备忘录、提醒事项、日历等无法同步。MacBook点击“更新Apple ID 设置”无反应。
iphone和mac的备忘录.提醒事项.日历等无法同步. 1. iCloud官网可以正常登录 2.App Store也可以正常登录 3.但是系统偏好设置中的Apple ID一直提示"更新Ap ...
- 怎么才能在Mac电脑提醒事项添加提醒事项
如何在Mac电脑提醒事项应用中添加提醒事项?还有不少用户不知道Mac系统中的提醒事项到底怎样使用,今天跟随小编一起来看看Mac提醒事项的使用方法,希望Mac提醒事项的使用方法介绍可以帮助大家. 首先, ...
最新文章
- WINCE config.bib文件中的FSRAMPERCENT的意义
- hdu 4362(单调队列优化dp)
- Android的Intent Action 大全
- android listview使用自定义的adapter没有了OnItemClickListener事件解决办法
- java integer 包_java之学习基本类型包装类的概述及Integer类的概述和构造方法
- Unity3d官方测试插件学习-单元测试,集成测试
- 项目部署时,linux环境配置问题
- 收购 GitHub 滔天争议后,微软回应一切
- html如何插入动图,动态图片如何插入到PPT里?
- 圆和长方形周长相等谁的面积大_长方形,正方形和圆的面积相等时,谁的周长最大...
- 声纹识别概述(3)声纹识别系统
- npm i 安装时报错问题解决
- WMS系统关于退料的几种方式
- serializers.serialize
- 动漫培训学费一般多少钱
- 实验二 CPU 部件实现之 ALU 和寄存器堆
- linux+手机+gps,Linux环境下利用GPS+蓝牙实现移动定位
- python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt
- Python文档算法整理
- 记一次现网sentinel 造成的端口差异问题
热门文章
- html预览dwg文件,大佬救命!有关dwg文件预览的问题
- 可以让人变老的相机_变老相机软件盘点,四款可以让人变老的相机软件
- 杭电ACM:人见人爱A-B
- 心理学专业转用户体验_用户体验设计心理学
- JSON编辑器,在线与离线
- OpenCV Android以及扩展模块opencv_contrib的编译
- 拼多多开店怎么提高点击率?天创速盈提出应对措施
- File pyzed\sl.pyx, line 1, in init pyzed.sl ZED相机python API安装错误
- Ubuntu双网卡主机给其他主机共享网络
- 【重磅!】Certihash正在与IBM合作开发一款名为“哨兵节点(Sentinel Node)”的网络安全检测工具