¿Cómo ejecuto un solo comando al inicio usando systemd?

44

He estado teniendo dificultades para entender cómo usar systemd.

Me gustaría iniciar un clúster Apache Spark después del arranque con el siguiente comando:

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

Luego ejecute este comando cuando el sistema se prepara para reiniciar / apagar:

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

¿Hay algún tutorial para systemd?

Parece que no puedo encontrar nada útil para comenzar o una plantilla básica en la que puedo basarme.

Intenté utilizar un archivo extremadamente simple (archivo: /lib/systemd/system/spark.service):

[Unit]
Description=Spark service

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

Lo cual no funciona.

¡Cualquier ayuda es muy apreciada!

    
pregunta macourtney7 26.05.2017 - 08:54

1 respuesta

58

Su archivo .service debería verse así:

[Unit]
Description=Spark service

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

[Install]
WantedBy=multi-user.target

Ahora haga algunos pasos más para habilitar y usar el archivo .service :

  1. Colóquelo en la carpeta /etc/systemd/system con decir un nombre de myfirst.service

  2. Haga que su script sea ejecutable con:

    chmod u+x /path/to/spark/sbin/start-all.sh
    
  3. Iniciarlo:

    sudo systemctl start myfirst
    
  4. Habilítelo para que se ejecute al inicio:

    sudo systemctl enable myfirst
    
  5. Detenerlo:

    sudo systemctl stop myfirst
    

Notas:

  1. No necesita iniciar Spark con sudo en su servicio, ya que el usuario del servicio predeterminado ya es root.

  2. Consulte los enlaces a continuación para obtener más opciones de systemd .

ACTUALIZAR

Ahora lo que tenemos arriba es simplemente rudimentario, aquí hay una configuración completa para la chispa:

[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

Para configurar el servicio:

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

Lectura adicional

Lea los siguientes enlaces. Spark es una configuración compleja, por lo que debe comprender cómo se integra con el servicio de inicio de Ubuntu.

enlace

enlace

enlace

    
respondido por el George Udosen 26.05.2017 - 09:11

Lea otras preguntas en las etiquetas