GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ubuntu:creazione di file unitari in Ubuntu 16.04?

Ho creato questo file Unit in /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

Dalla riga di comando posso eseguire:

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

e il programma si avvia correttamente. Ma se avvio il demone:

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

Ottengo questo errore:

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

I permessi:

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

Risposta accettata:

Numero 1

Ho trovato questo thread intitolato:[Risolto] Aggiungi uno script personalizzato a systemd che ha lo stesso errore dell'output mostrato sopra, principalmente questo bit:

Impossibile generare il passaggio EXEC /usr/local/bin/start-menu-core-prices-update.sh:errore di formato Exec

Questo errore in genere significa che il tuo script presenta uno o più di questi problemi:

  • Non è eseguibile
  • Manca lo shebang (#!/bin/bash )

Per risolverli assicurati che il tuo script sia eseguibile:

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

E assicurati di aggiungere uno shebang, #!/bin/bash verso l'alto.

Numero 2

Sembra che tu abbia un errore di battitura su questa riga:

After network.target = auditd.service

Probabilmente dovrebbe essere questo:

After=network.target auditd.service

Numero 3

Non mi è chiaro perché stai usando il Type = forking . Quando usi questo tipo sei ExecStart= è richiesto per utilizzare un metodo che chiama fork() . Dovresti anche usare PIDFile= opzione.

Mi aspetto che la tua applicazione Java funzioni bene con simple o oneshot . Vedi questo U&L Q&A intitolato:Forking in uno script di sistema per ulteriori informazioni su questo.


Ubuntu
  1. Come eseguire il backup del telefono Ubuntu?

  2. Come eseguire file .exe in Ubuntu??

  3. Come accedere ai file di Ubuntu 11.04 in Windows 7??

  4. Ubuntu sta creando un file Readme.md~ indesiderato?

  5. Trova quali file ci sono in un pacchetto in Ubuntu

Come riprodurre MP3 su Ubuntu

Copia i dati con rsync su Ubuntu

Come rinominare i file in Ubuntu 20.04

4 lettori ePub per visualizzare i file ePub su Ubuntu

Converti file audio mp3 in ogg su Ubuntu

Trovare file in Ubuntu 22.04