Voer elk uitvoerbaar bestand uit als een service uit in Linux
Elke uitvoerbare bestand als een Linux-service uitvoeren
Hier is een set instructies over
Hoe Configureren om een willekeurig uitvoerbaar bestand als een service uit te voeren in Linux met Systemd.
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