GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ubuntu - Créer des fichiers d'unité dans Ubuntu 16.04 ?

J'ai créé ce fichier Unit dans /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

Depuis la ligne de commande, je peux exécuter :

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

et le programme démarre correctement. Mais si je lance le démon :

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

J'obtiens cette erreur :

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

Les autorisations :

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

Réponse acceptée :

Problème 1

J'ai trouvé ce fil intitulé :[Résolu] Ajouter un script personnalisé à systemd qui a la même erreur que votre sortie ci-dessus, principalement ce bit :

Échec à l'étape EXEC engendrant /usr/local/bin/start-menu-core-prices-update.sh :erreur de format Exec

Cette erreur signifie généralement que votre script présente un ou plusieurs des problèmes suivants :

  • N'est pas exécutable
  • Il manque le shebang (#!/bin/bash )

Pour résoudre ces problèmes, assurez-vous que votre script est exécutable :

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

Et assurez-vous d'ajouter un shebang, #!/bin/bash vers le haut.

Problème 2

Il semble que vous ayez une faute de frappe sur cette ligne :

After network.target = auditd.service

Cela devrait probablement être ceci :

After=network.target auditd.service

Problème 3

Je ne comprends pas pourquoi vous utilisez le Type = forking . Lorsque vous utilisez ce type, vous êtes ExecStart= est nécessaire pour utiliser une méthode qui appelle fork() . Vous êtes également supposé utiliser le PIDFile= option.

Je m'attendrais à ce que votre application Java fonctionne correctement avec soit simple ou oneshot . Voir ce Q&A U&L intitulé :Forking dans un script systemd pour en savoir plus.


Ubuntu
  1. Comment trouver des fichiers sur Ubuntu ?

  2. Comment sauvegarder le téléphone Ubuntu ?

  3. Comment connecter un Nexus 7 pour transférer des fichiers ? ?

  4. Comment exécuter des fichiers .exe dans Ubuntu ??

  5. Trouver quels fichiers se trouvent dans un paquet dans Ubuntu

Comment lire des MP3 dans Ubuntu

Copier des données avec rsync sur Ubuntu

Comment renommer des fichiers dans Ubuntu 20.04

4 lecteurs ePub pour afficher les fichiers ePub sur Ubuntu

Convertir des fichiers audio mp3 en ogg sur ubuntu

Recherche de fichiers dans Ubuntu 22.04