At køre en app med & eller nohup går fint, indtil serveren genstarter, processen crasher, eller du vil finde dens logger — så falder det fra hinanden. systemd er standardsvaret: den starter din app ved opstart, genstarter den hvis den dør, og opfanger dens logger. At gøre et script eller en binær til en styret tjeneste er én lille fil.
1. Skriv en unit-fil
Opret /etc/systemd/system/myapp.service:
[Unit]
Description=My application
After=network.target
[Service]
User=myapp
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/run.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Tilpas ExecStart, WorkingDirectory og User til din app. Restart=always er det, der holder den i live.
2. Opret en dedikeret bruger (anbefalet)
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
sudo chown -R myapp:myapp /opt/myapp
At køre som ikke-root-bruger begrænser skaden, hvis appen nogensinde bliver kompromitteret.
3. Aktivér den og start den
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
enable får den til at starte ved opstart; --now starter den øjeblikkeligt.
4. Tjek status og logger
sudo systemctl status myapp
journalctl -u myapp -f # følg live-logger
Dagligdags kommandoer
sudo systemctl restart myapp # genstart efter en ændring
sudo systemctl stop myapp # stop den
sudo systemctl disable myapp # stop med at starte ved opstart
Ærlige advarsler
- Kør
daemon-reloadefter redigering af en unit-fil, ellers bruger systemd den gamle version. - Pas på crash-løkker. Hvis appen fejler øjeblikkeligt, prøver
Restart=alwaysfor evigt —RestartSec=5spreder forsøgene; ret grundfejlen via loggerne. - Foretræk en ikke-root
User=så en kompromitteret app ikke ejer hele serveren.
Næste skridt
En systemd-tjeneste er, hvordan du holder hvad som helst kørende 24/7 — for eksempel en AI-agent, der kører døgnet rundt eller relæet bag en selvhostet RustDesk-server. Hvis din app i stedet er containeriseret, spiller Dockers --restart unless-stopped den samme rolle — se sådan installerer du Docker.
Kommentarer
Ingen kommentarer endnu. Vær den første.