Искал аналог systemctl для systemd или service для Upstart, но под macOS, что бы можно было запускать сервис из консоли, нагуглился такой сервис как launchctl, который является частью launchd.
Для примера возьмём plist-файл из комментария к посту Jenkins: macOS slave агент через Java Web Start.
Другие примеры plist-файлов есть тут>>>., описание ключей — на странице Configuration домашней страницы проекта launchd.
Создаём файл сервиса — /Library/LaunchDaemons/com.jenkins.slave.plist:
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jenkins.slave</string>
<key>UserName</key>
<string>jenkins</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/Users/jenkins/agent.jar</string>
<string>-jnlpUrl</string>
<string>https://jenkins.domain.pro/computer/macmini_s/slave-agent.jnlp</string>
<string>-secret</string>
<string>137***867</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/jenkins/jenkins-slave-stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/jenkins/jenkins-slave-error.log</string>
</dict>
</plist>
Проверяем синтаксис:
[simterm]
bash-3.2# plutil /Library/LaunchDaemons/com.jenkins.slave.plist /Library/LaunchDaemons/com.jenkins.slave.plist: OK
[/simterm]
Запускаем:
[simterm]
bash-3.2# launchctl load /Library/LaunchDaemons/com.jenkins.slave.plist
[/simterm]
Если запустился успешно — в консоль ничего не выводится.
Проверяем:
[simterm]
bash-3.2# ps aux | grep java jenkins 23468 37.0 1.1 6039356 90872 ?? Rs 5:12PM 0:01.87 /usr/bin/java -jar /Users/jenkins/agent.jar -jnlpUrl https://jenkins.domain.pro/computer/macmini_s/slave-agent.jnlp -secret 137***867
[/simterm]
Или через сам launchctl:
[simterm]
bash-3.2# launchctl list | grep jenkins 23468 0 com.jenkins.slave
[/simterm]
И в самом Jenkins:
macmini_s — вот он.
Готово.





