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

У меня возникли трудности с попыткой понять, как использовать 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

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

Любая помощь приветствуется!

47
задан 7 September 2017 в 04:36

3 ответа

Ваш файл .service должен выглядеть так:

[Unit]
Description=Spark service

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

[Install]
WantedBy=multi-user.target

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

Поместите его в папку [ f10] с именем myfirst.service Сделайте свой скрипт исполняемым с помощью:
chmod u+x /path/to/spark/sbin/start-all.sh
Запустите его:
sudo systemctl start myfirst
Включите его для запуска при загрузке:
sudo systemctl enable myfirst
Остановите его:
sudo systemctl stop myfirst

Примечания:

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

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

UPDATE

Посмотрите на приведенные ниже ссылки для более systemd опций.

[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.

https://datasciencenovice.wordpress.com/2016/11/30/spark-stand-alone-cluster-as -a-systemd-service-ubuntu-16-04centos-7 /

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files [!d26 ]

31
ответ дан 22 May 2018 в 22:13
  • 1
    Вам не нужен bash -c – muru 26 May 2017 в 12:13
  • 2
    Отмечено и обновлено – George Udosen 26 May 2017 в 12:16
  • 3
    Спасибо за это, я создал файл на основе того, что вы предложили. При запуске sudo systemctl start spark появляется следующая ошибка: Failed to start spark.service: Unit spark.service is not loaded properly: Invalid argument. See system logs and 'systemctl status spark.service' for details. – macourtney7 26 May 2017 в 13:24
  • 4
    Основная часть systemctl status spark.service выглядит следующим образом: Executable path is not absolute и spark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing. – macourtney7 26 May 2017 в 13:27
  • 5
    Проблема заключается в том, что 1) необходим двоичный путь Spark (должен заменить то, что у нас есть в файле службы), 2) у Spark есть команда закрытия, что это такое. 3) Прошли ли вы по ссылкам, которые я вам дал. Я не использую искру, поэтому поставлю их – George Udosen 26 May 2017 в 14:05

Ваш файл .service должен выглядеть так:

[Unit] Description=Spark service [Service] ExecStart=/path/to/spark/sbin/start-all.sh [Install] WantedBy=multi-user.target

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

Поместите его в папку /etc/systemd/system с именем myfirst.service Сделайте свой скрипт исполняемым с помощью: chmod u+x /path/to/spark/sbin/start-all.sh Запустите его: sudo systemctl start myfirst Включите его для запуска при загрузке: sudo systemctl enable myfirst Остановите его: sudo systemctl stop myfirst

Примечания:

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

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

UPDATE

Посмотрите на приведенные ниже ссылки для более systemd опций.

[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.

https://datasciencenovice.wordpress.com/2016/11/30/spark-stand-alone-cluster-as -a-systemd-service-ubuntu-16-04centos-7 /

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

42
ответ дан 18 July 2018 в 12:42

Ваш файл .service должен выглядеть так:

[Unit] Description=Spark service [Service] ExecStart=/path/to/spark/sbin/start-all.sh [Install] WantedBy=multi-user.target

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

Поместите его в папку /etc/systemd/system с именем myfirst.service Сделайте свой скрипт исполняемым с помощью: chmod u+x /path/to/spark/sbin/start-all.sh Запустите его: sudo systemctl start myfirst Включите его для запуска при загрузке: sudo systemctl enable myfirst Остановите его: sudo systemctl stop myfirst

Примечания:

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

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

UPDATE

Посмотрите на приведенные ниже ссылки для более systemd опций.

[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.

https://datasciencenovice.wordpress.com/2016/11/30/spark-stand-alone-cluster-as -a-systemd-service-ubuntu-16-04centos-7 /

https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

42
ответ дан 24 July 2018 в 20:01

Другие вопросы по тегам:

Похожие вопросы: