У меня есть программа Go, которая должна запускаться как демон с минимальным внешним интерфейсом для пользователя (просто значок на панели задач).
Тот факт, что он написан на Go, на самом деле не имеет большого значения, главная проблема, которую я имею, - заставить двоичный файл (который уже запущен) запускаться при запуске на Mac.
Я могу настроить запуск двоичного файла при запуске следующим образом:
cp daemon.plist ~/Library/LaunchAgents/daemon.plist
(cp
список в каталоге LaunchAgents)
launchctl load -w ~/Library/LaunchAgents/daemon.plist
(затем загрузить список с launchctl
.)
И это прекрасно работает. Единственная проблема заключается в том, что launchctl load
запускает другой экземпляр двоичного файла, который уже работает . Я хочу иметь возможность включать (и отключать) запуск двоичного файла при запуске для исполняемого двоичного файла без запуска другого его экземпляра.
А вот файл .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>daemon</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Daemon.app/Contents/MacOS/daemon</string>
</array>
<key>ProcessType</key>
<string>Interactive</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>