答案1
launchd
还应该监视目录下文件(直接)的更改WatchPaths
。
尝试将此 plist 另存为~/Library/LaunchAgents/test.plist
:
<?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>test</string>
<key>ProgramArguments</key>
<array>
<string>say</string>
<string>a</string>
</array>
<key>WatchPaths</key>
<array>
<string>~/Documents/</string>
</array>
</dict>
</plist>
然后运行launchctl load ~/Library/LaunchAgents/test.plist
并修改 下的某个文件。即使您在未执行原子保存的情况下修改文件,或者即使 的修改时间未发生改变,~/Documents/
程序也应该运行。~/Documents/
请注意,launchd
不会监视所监视目录的子目录中的更改。波浪号扩展在默认情况下在的参数中起作用WatchPaths
,但无法启用文件名扩展。(EnableGlobbing
仅适用于ProgramArguments
。)