Как запустить единую команду при запуске с помощью systemd?

20

У меня возникли трудности с попыткой понять, как использовать systemd.

Я хочу запустить кластер Apache Spark после загрузки, используя следующую команду:

sudo ./path/to/spark/sbin/start-all.sh

Затем запустите эту команду, когда система готовится к перезагрузке / завершению работы:

sudo ./path/to/spark/sbin/stop-all.sh

Есть ли учебники для systemd?

Я не могу найти ничего полезного для начала работы или базового шаблона, который я могу использовать.

Я попытался использовать чрезвычайно простой файл (файл: /lib/systemd/system/spark.service):

[Unit]
Description=Spark service

[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh

Что не работает.

Любая помощь очень ценится!

    
задан macourtney7 26.05.2017 в 10:54
источник

1 ответ

26

Ваш файл .service должен выглядеть следующим образом:

[Unit]
Description=Spark service

[Service]
ExecStart=/path/to/spark/sbin/start-all.sh

[Install]
WantedBy=multi-user.target

Теперь сделайте еще несколько шагов, чтобы включить и использовать файл .service :

  1. Поместите его в папку /etc/systemd/system с именем myfirst.service

  2. Сделайте свой исполняемый файл скриптом с помощью

    chmod u+x /path/to/spark/sbin/start-all.sh
    
  3. Запустите его:

    sudo systemctl start myfirst
    
  4. Разрешить запуск при загрузке:

    sudo systemctl enable myfirst
    
  5. Остановить:

    sudo systemctl stop myfirst
    

Примечания:

  1. Вам не нужно запускать Spark с sudo в свою службу, поскольку пользователь службы по умолчанию уже root.

  2. Посмотрите на приведенные ниже ссылки для получения дополнительных опций systemd .

UPDATE

Теперь то, что мы имеем выше, просто рудиментарно, вот полная установка для искры:

[Unit]
Description=Apache Spark Master and Slave Servers
After=network.target
After=systemd-user-sessions.service
After=network-online.target

[Service]
User=spark
Type=forking
ExecStart=/opt/spark-1.6.1-bin-hadoop2.6/sbin/start-all.sh
ExecStop=/opt/spark-1.6.1-bin-hadoop2.6/sbin/stop-all.sh
TimeoutSec=30
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10

[Install]
WantedBy=multi-user.target

Чтобы настроить службу:

sudo systemctl start spark.service
sudo systemctl stop spark.service
sudo systemctl enable spark.service

Дальнейшее чтение

Прочитайте следующие ссылки. Spark - сложная настройка, поэтому вы должны понимать, как она интегрируется с сервисом init Ubuntu.

Ссылка

Ссылка

Ссылка

    
ответ дан George Udosen 26.05.2017 в 11:11
источник