Voer elk uitvoerbaar bestand uit als een service uit in Linux

Elke uitvoerbare bestand als een Linux-service uitvoeren

Inhoud

Hier is een set instructies over
Hoe Configureren om een willekeurig uitvoerbaar bestand als een service uit te voeren in Linux met Systemd.

linux cogs Hierboven is een AI-generatie beeld (door Flux 1 dev model) van de tandwiel die het DIY-benadering van Linux voorstelt.

Systemd

Systemd is een systeem en dienstenbeheerder en initialisatiemiddel in sommige Linux-distributies.

Enkele populaire distributies met systemd:

  • Ubuntu 16.04 of nieuwer
  • Debian Jessie of nieuwer
  • Arch Linux
  • CentOS 7 / RHEL 7 of nieuwer
  • Fedora 15 of nieuwer

systemctl

systemctl is een commandoregeltool om systemd te beheren.

alle diensten opzoeken

Om een lijst van alle diensten te krijgen, voer uit:

systemctl list-units --type=service

Een dienstbestand aanmaken

Navigeer naar de systemd-dienstdirectory en maak een nieuw bestand aan met de extensie .service13:

sudo nano /etc/systemd/system/your_service_name.service

Configureer het dienstbestand:

Voeg de volgende inhoud toe aan het bestand, pas de waarden zo nodig aan135:

[Unit]
Description=Beschrijving van uw dienst
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/pad/naar/uw/uitvoerbaar/bestand/map
ExecStart=/pad/naar/uw/uitvoerbaar
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Sla het bestand op en sluit het.

Vertraging bij het starten van de dienst

Als u vermoedt dat er tijdproblemen zijn bij het starten van de dienst, overweeg dan om een vertraging toe te voegen aan uw dienstconfiguratie:

[Service]
ExecStartPre=/bin/sleep 10

Dienstafhankelijkheden

Om uw dienstafhankelijkheden te configureren: in de [Unit] sectie van het dienstbestand,

voeg de volgende instructies toe:

Gebruik After= om diensten op te noemen die voor uw dienst moeten starten:

After=network.target other_service.service

Gebruik Requires= om harde afhankelijkheden te definiëren:

Requires=required_service.service

Gebruik Wants= voor zachte afhankelijkheden:

Wants=optional_service.service

Systemd herladen om de nieuwe dienst te herkennen

sudo systemctl daemon-reload

Dienstafhankelijkheden controleren

sudo systemctl list-dependencies your_service_name.service

Dienst inschakelen om bij het opstarten te starten

sudo systemctl enable your_service_name.service

Om te controleren of uw dienst ingeschakeld is om bij het opstarten te starten:

sudo systemctl is-enabled your_service_name.service

Dienst starten

sudo systemctl start your_service_name.service
# of
sudo systemctl restart your_service_name.service

Dienststatus controleren

Als iets fout is gegaan - controleer Linux-dienstlogboeken en status:

sudo systemctl status your_service_name.service

of

sudo journalctl -u your_service_name.service

Voor Python-scripts

ExecStart=/pad/naar/conda/envs/my_env_name/bin/python /pad/naar/uitvoerbaar.py

Opmerkingen

U kunt nu uw dienst beheren met systemctl-commands, zoals start, stop, restart en status.

Voor uitvoerbare bestanden die parameters vereisen, pas dan de ExecStart regel in het dienstbestand daarop aan.

Bijvoorbeeld als u een Java-toepassing moet uitvoeren, gebruik dan de volledige Java-opdracht in de ExecStart regel.

Herinner u eraan om bestandsrechten en eigendom aan te passen als nodig, en zorg ervoor dat het uitvoerbare bestand de juiste uitvoerrechten heeft.

Systemd dienstenbeheer met chkservice

In plaats van uit te voeren

sudo systemctl start some-serviceservice
# of
sudo systemctl restart some-serviceservice

Kunt u een console UI-tool gebruiken. Eenvoudig en lichtgewicht

sudo apt-get install chkservice

sudo chkservice