EQVPS

د اپلیکیشن د چلولو ساتلو لپاره د systemd خدمت څنګه جوړ کړو

هره سکریپټ یا اپلیکیشن یو اداره شوي خدمت ته واړوئ چې د بوټ پر مهال پیل کېږي، که کرش شي بیا پیل کېږي، او journalctl ته لاگ ثبتوي. یو unit فایل ولیکئ، فعال یې کړئ، او حالت یې وګورئ — په لینوکس کې د یو شي د 24/7 چلولو معیاري لار.

د اپلیکیشن چلول د & یا nohup سره سم دي — تر هغه چې سرور بیا پیل شي، پروسه کرش شي، یا تاسو یې لاگونه پیدا کول وغواړئ — بیا نو ړنګېږي. systemd معیاري ځواب دی: ستاسو اپلیکیشن د بوټ پر مهال پیلوي، که مړ شي بیا یې پیلوي، او لاگونه یې نیسي. د یوې سکریپټ یا بائنري بدلول یو اداره شوي خدمت ته یو کوچنی فایل دی.

۱. یو unit فایل ولیکئ

/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

ExecStart، WorkingDirectory او User د خپل اپلیکیشن سره سم عیار کړئ. Restart=always هغه څه دي چې ژوندی یې ساتي.

۲. یو ځانګړی کاروونکی جوړ کړئ (وړاندیز شوی)

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

د غیر-root کاروونکي په توګه چلول زیان محدودوي که اپلیکیشن کله هم جوړجاړی شي.

۳. فعال یې کړئ او پیل یې کړئ

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

enable یې د بوټ پر مهال پیلوي؛ --now یې سمدستي پیلوي.

۴. حالت او لاگونه وګورئ

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 څنګه نصب کړو.

پوښتنې

ولې systemd، نه دا چې اپلیکیشن یوازې په شاليد کې وچلوو؟

د شاليد یوه پروسه (د & یا nohup سره) د بیا پیل پر مهال مري، که کرش شي بیرته نه راځي، او لاگونه یې خپروي. د systemd خدمت د بوټ پر مهال په اتومات ډول پیل کېږي، د ناکامۍ پر مهال بیا پیل کېږي، او خپل محصول journalctl ته لېږي. په لینوکس کې د اوږد ژوند لرونکي شي د چلولو معیاري او باوري لار ده.

د unit فایلونه چېرته ایښودل کېږي؟

ستاسو خپل خدمتونه په /etc/systemd/system/ کې ایښودل کېږي، هر خدمت ته یو فایل، د something.service په څېر نوم سره. له جوړولو یا سمولو وروسته 'systemctl daemon-reload' وچلوئ ترڅو systemd بدلون ونیسي، بیا یې فعال کړئ او پیل یې کړئ.

'Restart=always' څه کوي، او ایا زیانونه لري؟

دا systemd ته وايي چې خدمت هر ځل چې د هرې لامل له مخې ووځي، بیا یې پیل کړي — د یو شي د چلولو ساتلو کلیدي ټکی. یوازینی جال د کرش لوپ دی: که اپلیکیشن د پیل پر مهال سمدستي ناکام شي، systemd یې بیا بیا پیلوي. د هڅو د واټن لپاره 'RestartSec=5' ورزیات کړئ، او د بنسټیزې تېروتنې د سمولو لپاره لاگونه وګورئ.

د خدمت لاگونه څنګه وګورم؟

د ژوندي محصول د تعقیب لپاره 'journalctl -u yourservice -f'، یا د تاریخ د لوستلو لپاره پرته له -f وکاروئ. systemd stdout او stderr په اتومات ډول نیسي، نو تاسو ته اړتیا نشته چې پخپله لاگ فایلونه وصل کړئ.

ایا خدمت باید د root په توګه وچلېږي؟

غوره ده چې نه. یو ځانګړی غیر-root کاروونکی جوړ کړئ او په unit کې 'User=' تنظیم کړئ، ترڅو د اپلیکیشن جوړجاړی ټول ماشین وا نه سپاري. یوازې هغه وخت د root په توګه وچلوئ کله چې خدمت واقعاً ورته اړتیا لري.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.