Parfois, vous créez un script et vous souhaitez ensuite que les scripts soient contrôlés par systemd ou, dans certains cas, vous souhaitez que les scripts soient redémarrés par eux-mêmes lorsqu'ils sont tués pour une raison quelconque.
Systemd sous Linux aide à configurer les services qui peuvent être gérés.
Dans cet article, Nous allons vous montrer comment créer un service systemd.
Créer un service systemd
En général
Suivez simplement les étapes ci-dessous :
- Vous pouvez trouver le service Linux en cours d'exécution sous le chemin /etc/systemd/system
cd /etc/systemd/system
- Créez un fichier nommé [servicename.service] et ajoutez ce qui suit
[Unit]
Description=<description_about_your_service>
[Service]
User=<user_such_as_root>
WorkingDirectory=<directory_of__your_script such as /home/unixcop>
ExecStart=<script_which_needs_to_be_executed>
Restart=always
[Install]
WantedBy=multi-user.target
REMARQUE :Remplacez le gras valeurs ci-dessus avec vos valeurs de votre nouveau service que vous souhaitez créer.
Une unité de service est un fichier avec le .service suffixe contient des informations sur un processus géré par systemd . Il est composé de trois sections principales :
- [Unité] :cette section contient des informations qui ne sont pas spécifiquement liées au type d'unité, telles que la description du service
- [Service] :contient des informations sur le type spécifique de l'unité, un service dans ce cas
- [Installer] :Cette section contient des informations sur l'installation de l'unité
Pour les projets spécifiques à Python qui incluent un environnement virtuel
- Suivez les mêmes étapes ci-dessus, mais ajoutez ce qui suit
[Unit]
Description=<description_about_your_project>
[Service]
User=<user_such_as_root>
WorkingDirectory=<path/to/your/project/directory/containing/the/python/script>
ExecStart=Path of virtualenv and your script file name
#Example for ExecStart=/home/user/.virtualenv/bin/python main.py
#replace /home/user/.virtualenv/bin/python with your virtualenv and main.py with your script name
Restart=always
[Install]
WantedBy=multi-user.target
OU
[Unit]
Description=<description_about_your_project>
[Service]
User=<user_such_as_root>
WorkingDirectory=<path to your project directory>
ExecStart=/bin/bash -c 'cd /home/unixcop/project/ && source venv/bin/activate && python test.py'
#replace /home/unixcop/project/ with your Path, venv/bin/activate with your source and test.py with your script name
[Install]
WantedBy=multi-user.target
- Une fois que vous avez terminé, rechargez les fichiers de service pour inclure le nouveau service.
sudo systemctl daemon-reload
- Démarrez votre nouveau service
sudo systemctl start [your_new_service].service
- Vérifiez l'état de votre nouveau service, par exemple (mon nouveau service appelé unixcop.service)
sudo systemctl status unixcop.service
- Activer votre service à chaque redémarrage
sudo systemctl enable unixcop.service
- Pour désactiver votre service à chaque redémarrage
sudo systemctl disable unixcop.service
Conclusion
C'est tout
Nous avons illustré comment créer un nouveau service systemd sous Linux
Merci !!