Kuendesha programu kwa & au nohup ni sawa hadi seva iwashwe upya, mchakato uanguke, au utake kupata kumbukumbu zake — ndipo kila kitu kinapoporomoka. systemd ndiyo jibu la kawaida: huanzisha programu yako wakati wa kuwasha, huianzisha upya ikifa, na hunasa kumbukumbu zake. Kugeuza skripti au binari kuwa huduma inayosimamiwa ni faili moja ndogo.
1. Andika faili ya unit
Unda /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
Rekebisha ExecStart, WorkingDirectory na User kulingana na programu yako. Restart=always ndicho kinachoiweka hai.
2. Unda mtumiaji maalum (inapendekezwa)
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
sudo chown -R myapp:myapp /opt/myapp
Kuendesha kama mtumiaji asiye root hupunguza uharibifu ikiwa programu itavunjwa siku moja.
3. Iwezeshe na uianzishe
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
enable huifanya ianze wakati wa kuwasha; --now huianzisha mara moja.
4. Kagua hali na kumbukumbu
sudo systemctl status myapp
journalctl -u myapp -f # fuatilia kumbukumbu za moja kwa moja
Amri za kila siku
sudo systemctl restart myapp # anzisha upya baada ya mabadiliko
sudo systemctl stop myapp # isimamishe
sudo systemctl disable myapp # acha kuanza wakati wa kuwasha
Maonyo ya kweli
- Endesha
daemon-reloadbaada ya kuhariri faili ya unit, la sivyo systemd hutumia toleo la zamani. - Jihadhari na vitanzi vya kuanguka. Ikiwa programu inashindwa mara moja,
Restart=alwayshujaribu tena milele —RestartSec=5hupanua nafasi kati ya majaribio; rekebisha kosa la msingi kupitia kumbukumbu. - Pendelea
User=asiye root ili programu iliyovunjwa isimiliki seva nzima.
Hatua zinazofuata
Huduma ya systemd ndiyo jinsi unavyoweka chochote kikiendelea kufanya kazi 24/7 — kwa mfano wakala wa AI unaofanya kazi mchana na usiku au relei nyuma ya seva ya RustDesk inayojiendesha. Ikiwa programu yako imewekwa katika kontena badala yake, --restart unless-stopped ya Docker hucheza nafasi ileile — ona jinsi ya kusakinisha Docker.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.