GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Ubuntu – ¿Crear archivos de unidad en Ubuntu 16.04?

Creé este archivo de unidad en /lib/systemd/system/menu-core-prices-update.service :

[Unit]
Description = core-price-update daemon
After network.target = auditd.service

[Service]
Type = forking
ExecStart = /usr/local/bin/start-menu-core-prices-update.sh
ExecStop =  /usr/local/bin/stop-menu-core-prices-update.sh
ExecReload = /usr/local/bin/reload-stop-menu-core-prices-update.sh

[Install]
WantedBy = multi-user.target

Desde la línea de comando puedo ejecutar:

$ /usr/local/bin/start-menu-core-prices-update.sh

y el programa se inicia correctamente. Pero si inicio el daemon:

$ sudo systemctl start menu-core-prices-update.service

Me sale este error:

Jul 24 21:10:20 localhost systemd[13655]: menu-core-prices-update.service: Failed at step EXEC spawning /usr/local/bin/start-menu-core-prices-update.sh: Exec format error
-- Subject: Process /usr/local/bin/start-menu-core-prices-update.sh could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /usr/local/bin/start-menu-core-prices-update.sh could not be executed and failed.
-- 
-- The error number returned by this process is 8.
Jul 24 21:10:20 localhost systemd[1]: menu-core-prices-update.service: Control process exited, code=exited status=203
Jul 24 21:10:20 localhost systemd[1]: Failed to start core-price-update daemon.
-- Subject: Unit menu-core-prices-update.service has failed

Los permisos:

-rwxr-xr-x 1 root root 87 Jul 24 20:27 /usr/local/bin/start-menu-core-prices-update.sh

Respuesta aceptada:

Problema #1

Encontré este hilo titulado:[Resuelto] Agregar script personalizado a systemd que tiene el mismo error que el resultado que se muestra arriba, principalmente este bit:

Error en el paso EXEC spawning /usr/local/bin/start-menu-core-prices-update.sh:Error de formato Exec

Este error generalmente significa que su secuencia de comandos tiene uno o más de estos problemas:

  • No es ejecutable
  • Falta el shebang (#!/bin/bash )

Para abordar estos, asegúrese de que su secuencia de comandos sea ejecutable:

$ chmod a+x /usr/local/bin/start-menu-core-prices-update.sh

Y asegúrese de agregar un shebang, #!/bin/bash hacia arriba.

Problema #2

Parece que tienes un error tipográfico en esta línea:

After network.target = auditd.service

Esto probablemente debería ser esto:

After=network.target auditd.service

Problema #3

No me queda claro por qué estás usando Type = forking . Cuando usa este tipo, es ExecStart= se requiere usar un método que llame a fork() . También se supone que debes usar el PIDFile= opción.

Espero que su aplicación Java funcione bien con simple o oneshot . Consulte estas preguntas y respuestas de U&L tituladas:Bifurcación en un script de systemd para obtener más información sobre esto.


Ubuntu
  1. ¿Cómo encontrar archivos en Ubuntu?

  2. ¿Cómo hacer una copia de seguridad del teléfono Ubuntu?

  3. ¿Cómo conectar un Nexus 7 para transferir archivos?

  4. ¿Cómo ejecutar archivos .exe en Ubuntu?

  5. ¿Cómo acceder a los archivos de Ubuntu 11.04 en Windows 7?

Cómo reproducir MP3 en Ubuntu

Copiar datos con rsync en Ubuntu

Cómo cambiar el nombre de los archivos en Ubuntu 20.04

4 lectores ePub para ver archivos ePub en Ubuntu

Convierta archivos de audio mp3 a ogg en ubuntu

Encontrar archivos en Ubuntu 22.04