EQVPS

መተግበሪያን ሥራ ላይ ለማቆየት የ systemd አገልግሎት እንዴት እንደሚፈጠር

ማንኛውንም ስክሪፕት ወይም መተግበሪያ ወደሚተዳደር አገልግሎት ይለውጡ፣ ይህም በማስነሻ ጊዜ ይጀምራል፣ ቢበላሽ እንደገና ይነሳል፣ እና ወደ journalctl ይመዘግባል። የዩኒት ፋይል ይጻፉ፣ ያንቁት፣ ሁኔታውንም ይመልከቱ — በ Linux ላይ አንድ ነገር 24/7 ለማስኬድ መደበኛው መንገድ።

መተግበሪያን በ & ወይም nohup ማስኬድ ጥሩ ነው — አገልጋዩ ዳግም እስኪነሳ፣ ሂደቱ እስኪበላሽ፣ ወይም መዝገቦቹን ማግኘት እስክትፈልጉ ድረስ — ከዚያ ይፈርሳል። systemd መደበኛው መልስ ነው: መተግበሪያዎን በማስነሻ ጊዜ ይጀምራል፣ ቢሞት እንደገና ያስነሳዋል፣ እና መዝገቦቹንም ይይዛል። ስክሪፕት ወይም ባይነሪ ወደሚተዳደር አገልግሎት መለወጥ አንድ ትንሽ ፋይል ነው።

1. የዩኒት ፋይል ይጻፉ

/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

ExecStartWorkingDirectory እና User ን ለመተግበሪያዎ ያስተካክሉ። Restart=always ሕያው የሚያደርገው ነው።

2. ልዩ ተጠቃሚ ይፍጠሩ (ይመከራል)

sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp
sudo chown -R myapp:myapp /opt/myapp

እንደ ኢ-root ተጠቃሚ ማስኬድ መተግበሪያው ወደፊት ቢጣስ ጉዳቱን ይገድባል።

3. ያንቁትና ይጀምሩት

sudo systemctl daemon-reload
sudo systemctl enable --now myapp

enable በማስነሻ ጊዜ እንዲጀምር ያደርገዋል፤ --now ወዲያውኑ ይጀምረዋል።

4. ሁኔታንና መዝገቦችን ይመልከቱ

sudo systemctl status myapp
journalctl -u myapp -f       # ቀጥታ መዝገቦችን ይከታተሉ

የዕለት ተዕለት ትዕዛዞች

sudo systemctl restart myapp   # ከለውጥ በኋላ እንደገና ማስነሳት
sudo systemctl stop myapp      # ያቁሙት
sudo systemctl disable myapp   # በማስነሻ ጊዜ መጀመሩን ያቁሙ

ታማኝ ማስጠንቀቂያዎች

ቀጣይ ደረጃዎች

የ systemd አገልግሎት ማንኛውንም ነገር 24/7 ሥራ ላይ የምታቆይበት መንገድ ነው — ለምሳሌ ሰዓቱን ሙሉ የሚሰራ የ AI ወኪል ወይም በራስ የተስተናገደ የ RustDesk አገልጋይ ኋላ ያለው ማስተላለፊያ። መተግበሪያዎ በምትኩ በኮንቴይነር ከሆነ፣ የ Docker --restart unless-stopped ተመሳሳይ ሚና ይጫወታል — ይመልከቱ Docker እንዴት እንደሚጫን

FAQ

መተግበሪያውን በጀርባ ከማስኬድ ይልቅ ለምን systemd?

በጀርባ ያለ ሂደት (በ & ወይም nohup) በዳግም ማስነሳት ይሞታል፣ ቢበላሽ አይመለስም፣ እና መዝገቦቹንም ይበትናል። የ systemd አገልግሎት በማስነሻ ጊዜ ራስ-ሰር ይጀምራል፣ በውድቀት ጊዜ እንደገና ይነሳል፣ እና ውጤቱን ወደ journalctl ይልካል። በ Linux ላይ ረጅም ዕድሜ ያለው ነገር ለማስኬድ መደበኛውና አስተማማኝ መንገድ ነው።

የዩኒት ፋይሎች የት ይቀመጣሉ?

የራስዎ አገልግሎቶች በ /etc/systemd/system/ ውስጥ ይቀመጣሉ፣ ለእያንዳንዱ አገልግሎት አንድ ፋይል፣ something.service በሚል ስም። ከፈጠሩ ወይም ካረሙ በኋላ systemd ለውጡን እንዲይዘው 'systemctl daemon-reload' ያሂዱ፣ ከዚያም ያንቁትና ይጀምሩት።

'Restart=always' ምን ያደርጋል፣ ጉዳቶችስ አሉት?

systemd አገልግሎቱ በማንኛውም ምክንያት በወጣ ቁጥር እንደገና እንዲያስነሳው ይነግረዋል — አንድ ነገር ሥራ ላይ ለማቆየት ቁልፍ ነው። ብቸኛው ወጥመድ የመበላሸት ዑደት ነው: መተግበሪያው ሲጀምር ወዲያውኑ ከከሸፈ፣ systemd ደጋግሞ እንደገና ያስነሳዋል። ሙከራዎቹን ለማራራቅ 'RestartSec=5' ይጨምሩ፣ እና መሠረታዊ ስህተቱን ለማስተካከል መዝገቦቹን ይመልከቱ።

የአገልግሎቱን መዝገቦች እንዴት አያለሁ?

ቀጥታ ውጤትን ለመከታተል 'journalctl -u yourservice -f'፣ ወይም ታሪክ ለማንበብ ያለ -f ይጠቀሙ። systemd stdout እና stderr ራስ-ሰር ይይዛል፣ ስለዚህ የመዝገብ ፋይሎችን እራስዎ ማገናኘት አያስፈልግዎትም።

አገልግሎቱ እንደ root መስራት አለበት?

ቢሆን አይሻልም። ልዩ ኢ-root ተጠቃሚ ይፍጠሩ እና በዩኒቱ ውስጥ 'User=' ያዘጋጁ፣ የመተግበሪያው መጣስ ሙሉ ማሽኑን እንዳያስረክብ። አገልግሎቱ በእውነት ሲፈልገው ብቻ እንደ root ያስኪዱ።

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።