可能会遇到想要执行定时任务或者监测任务,使用 launchd
,可以很方便地执行。
对文件夹进行监测,如果更新了文件夹,执行对应的脚本任务,简单步骤:
plist
服务配置文件,例如名称为 com.example.watchfolder.plist
,内容可以根据下面的示例更改;/Library/LaunchAgents
下,该目录为用户级别的服务配置文件夹;launchctl load /Library/LaunchAgents/com.example.watchfolder.plist
# sudo launchctl bootstrap system /Library/LaunchAgents/com.example.watchfolder.plist
如果想要卸载该服务,执行:
# launchctl list | grep watchfolder # 查询服务
launchctl stop com.example.watchfolder
launchctl unload /Library/LaunchAgents/com.example.watchfolder.plist
注意,如果不能停止对应的异常的服务,使用 sudo 执行一次。
一个简单的监测示例:
<?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.example.watchfolder</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/slt</string>
<string>deploy</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/xiao/.gridea/output/</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>KeepAlive</key>
<false/>
<key>StandardOutPath</key>
<string>/dev/null</string>
<key>StandardErrorPath</key>
<string>/tmp/watchfolder.log</string>
<key>StartInterval</key>
<integer>-1</integer>
<key>ThrottleInterval</key>
<integer>10</integer>
<key>WorkingDirectory</key>
<string>/Users/xiao/.gridea/</string>
</dict>
</plist>
说明:
Label
值自定义该服务的名称ProgramArguments
用来指定执行的脚本和参数,名称和参数单独使用一个字符串表示,可以添加多个需要的参数WatchPaths
如果列出的路径中的任何一条被修改,将导致作业启动RunAtLoad
指定加载时是否执行;KeepAlive
指定任务是否保持活动状态,即完成后自动重启任务,通常情况下设置falseStartInterval
指定重启任务的间隔时间,每隔 N 秒重启执行一次,-1表示不执行;ThrottleInterval
指定节流间隔,N秒内不会重新启动执行,保证了两次任务的最小间隔时间;WorkingDirectory
指定任务的工作目录;PATH
指定环境变量;注意事项:
本文链接: Mac 定时任务和脚本
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
发布日期: 2023-06-03
最新构建: 2024-12-26
欢迎任何与文章内容相关并保持尊重的评论😊 !