У меня есть агент запуска, который запускает скрипт bash всякий раз, когда подключается USB-устройство. Я хочу, чтобы он запускался только один раз, но когда я подключаю устройство, скрипт продолжает работать каждые 10 секунд.
Вот плист:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//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.program</string>
<key>Program</key>
<string>/Users/Peter/Desktop/test1.sh</string>
<key>LaunchEvents</key>
<dict>
<key>com.apple.iokit.matching</key>
<dict>
<key>com.apple.device-attach</key>
<dict>
<key>idProduct</key>
<integer>1476</integer>
<key>idVendor</key>
<integer>1356</integer>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>IOMatchLaunchStream</key>
<true/>
</dict>
</dict>
</dict>
</dict>
</plist>
Вот сценарий:
#!/bin/bash
open -a "Spotify";
sleep 11;
Я добавил сон 11, так как я прочитал, что скрипт должен работать не менее 10 секунд, чтобы позволить launchd считать, что он выполнил свою задачу. Однако это никому не помогает.
В запущенном терминале launchctl list com.example.program
дает:
"LimitLoadToSessionType" = "Aqua";
"Label" = "com.example.program";
"TimeOut" = 30;
"OnDemand" = true;
"LastExitStatus" = 0;
"Program" = "/Users/Peter/Desktop/test1.sh";