Искал аналог 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 – вот он.
Готово.