web-dev-qa-db-fra.com

Ecriture de script systemd

J'ai un processus que j'ai besoin d'exécuter au démarrage. C'est quelque chose qui doit continuer à fonctionner pendant tout le temps que la machine est allumée. A partir de maintenant, je suis juste en train de taper ce qui suit dans tout ce que je lance bash sur mon serveur.

command -f argument & disown

Je sais que je dois créer un script d'initialisation, mais je ne savais pas comment. Après quelques recherches, il semble qu'Ubuntu utilise systemd (son nom commence par Upstart, ils ne sont pas le même droit?) Que son système init. Mais tous les guides que j'ai trouvés en ligne me disent de placer mon exécutable dans /etc/init ou /etc/init.d. Init est censé être un système init complètement différent.

Est-ce que quelqu'un peut me diriger dans la bonne direction? Un exemple de script systemd ou même un guide en ligne serait d'une grande aide.

3
vikarjramun

Vous avez besoin de deux fichiers:

  1. Votre fichier de script:

    command.sh
    
  2. Le fichier .service doit être placé dans /etc/systemd/system et recevoir l'autorisation de 644 avec chmod 664 command.service:

    command.service
    
  3. Le contenu le plus simple de command.service serait:

    [Unit]
    Description=Some service description
    
    [Service]
    ExecStart=/bin/bash -c "/path/to/command.sh -f argument & disown"
    
    [Install]
    WantedBy=multi-user.target
    
  4. Maintenant, pour le lancer au démarrage, nous utilisons le contrôleur systemdsystemctl:

    Sudo systemctl enable command
    
    # or 
    
    Sudo systemctl enable command.service
    

Notez que de nombreuses autres options sont disponibles pour les différentes sections, voir ici , et assurez-vous que votre command.sh est exécutable avec chmod +x command.sh

5
George Udosen