
به اشتراک بگذارید

به اشتراک بگذارید
systemd قلب تپنده لینوکس مدرن؛ در دنیای مدیریت سرور، پایداری حرف اول را میزند؛ اگر سرویسهای شما به درستی مدیریت نشوند، عملاً سرور کارایی خود را از دست میدهد. در گذشته، سیستمهای قدیمی مثل SysVinit وظیفه اجرای فرآیندها را داشتند، اما با پیچیدهتر شدن زیرساختها، لینوکس به چیزی سریعتر و هوشمندتر نیاز داشت. اینجاست که Systemd وارد میدان شد تا به عنوان سیستم آغازگر (Init System) و مدیر سرویس، کنترل همه چیز را به دست بگیرد.
تفاوتهای اصلی توزیعهای لینوکسهای جدید با نسخههای قدیمی در مدیریت منابع به شرح زیر است:
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهی هستید تا کنترل کامل سرویسهای سرور خود را به دست بگیرید و از شر ریستارتهای دستی خلاص شوید. ما در این مقاله از وبداده، به شما قول میدهیم که پس از مطالعه این راهنمای عملی، بتوانید هر سرویسی را از صفر بسازید و مانند یک حرفهای آن را عیبیابی کنید.
آنچه در این مقاله میخوانید:

اگر بخواهیم به زبان ساده توضیح دهیم، Systemd مثل مدیر یک آپارتمان بزرگ است که وظیفه دارد مطمئن شود تمام واحدها (سرویسها) به درستی کار میکنند، برق و آب (منابع) دارند و در صورت بروز مشکل، سریعاً وارد عمل شود. این سیستم در واقع اولین فرآیندی است که وقتی دکمه روشن شدن سرور را میزنید، اجرا میشود و سایر بخشهای سیستمعامل را بیدار میکند.
ساختار لایهای این سیستم به صورت زیر است:
Kernel (هسته لینوکس)
⬇️
Systemd (PID 1)
/ | \
[Service] [Socket] [Target]
| | |
Nginx SSH Multi-user
چرا یک مدیر سرور یا برنامه نویس باید وقت خود را صرف یادگیری این ابزار کند؟ پاسخ در “خودکارسازی” نهفته است. تصور کنید سرور شما به دلیل قطعی برق ریستارت شده است؛ اگر مدیریت سرویس لینوکس به درستی تنظیم نشده باشد، سایت شما بالا نمیآید تا زمانی که خودتان دستی وارد شوید و سرویسها را استارت کنید.
مزایای استفاده از این سیستم مدرن (Systemd)عبارتند از:
برای شروع آموزش Systemd، شما تنها به یک سرور لینوکسی با دسترسی Root یا کاربر دارای امتیازات Sudo نیاز دارید. اکثر توزیعهای ارائه شده در وبداده (مانند Ubuntu 22.04/24.04 و AlmaLinux) به صورت پیشفرض از این سیستم استفاده میکنند.
در این بخش همراه تیم وبداده باشید تا به صورت عملی و تصویری، کار با دستور systemctl را یاد بگیریم. این دستور ابزار اصلی شما برای تعامل با سیستم است.
اولین قدم این است که بدانیم یک سرویس در چه وضعیتی قرار دارد. برای مثال سرویس Nginx را در نظر بگیرید برای مشاهده وضعیت سرویس از دستور زیر استفاده کنید:
systemctl status nginx ◀️ توضیح خروجی: اگر عبارت active (running) را دیدید، یعنی همه چیز مرتب است. اگر inactive یا failed بود، باید به فکر چاره باشید.

استارت، استاپ و ریستارت سرویس لینوکس پرکاربردترین دستورات برای هر مدیر سایت هستند:
🔶دستور شروع به کار سرویس (start) در لینوکس :
systemctl start nginx 🔶دستور متوقف کردن یا استاپ سرویس در لینوکس :
systemctl stop nginx 🔶دستور اعمال تغییرات با ریستارت کامل سرویس در لینوکس :
systemctl restart nginx 🔶دستور بارگذاری مجدد تنظیمات بدون قطعی (Reload) سرویس در لینوکس :
systemctl reload nginx restart از reload استفاده کنید تا اگر خطایی در فایل تنظیمات وجود دارد، سرویس فعلی از کار نیفتد.آیا میخواهید سرویس شما بعد از بوت شدن سرور به صورت خودکار اجرا شود؟
برای فعال سازی اجرای خودکار در بوت دستور زیر را اجرا کنید.
systemctl enable nginx برای غیرفعال کردن اجرای خودکار سرویس لینوکس می توانید از دستور زیر استفاده کنید.
systemctl disable nginx گاهی اوقات شما یک برنامه پایتون یا یک اسکریپت خاص دارید که میخواهید مثل یک سرویس لینوکس استاندارد با آن برخورد شود. برای این کار باید یک فایل با پسوند .service در مسیر /etc/systemd/system/ بسازید.
مثال واقعی: سرویس بات تلگرام یا اپلیکیشن Node.js
[Unit]
Description=My Web App Service
After=network.target
[Service]
Type=simple
User=webdade_user
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=always
[Install]
WantedBy=multi-user.target
ساختار فایل سرویس:
| بخش (Section) | پارامتر | توضیحات |
|---|---|---|
| Unit | Description | نام و توضیح مختصر سرویس |
| Service | ExecStart | مسیر دقیق اجرای فایل برنامه |
| Install | WantedBy | مشخص میکند سرویس در کدام لایه اجرا شود |
پس از ساخت فایل، حتماً دستور systemctl daemon-reload را بزنید تا سیستم متوجه تغییرات شود.
یکی از قدرتمندترین بخشهای آموزش Systemd، یادگیری کار با سیستم لاگ متمرکز است. اگر سرویسی اجرا نمیشود، journalctl به شما میگوید دقیقاً چه اتفاقی افتاده است. در ادامه سه دستور برای مشاهده لاگ های سرویس در سرورهای لینوکسی را معرفی کرده ایم.
# مشاهده لاگهای یک سرویس خاص
journalctl -u nginx
# مشاهده لاگها به صورت زنده (Real-time)
journalctl -f
# مشاهده لاگهای مربوط به امروز
journalctl --since today 🔸 Case Study: ، یکی از کاربران با مشکل توقف ناگهانی دیتابیس مواجه بود. با استفاده از دستور journalctl -xe متوجه شدیم که به دلیل کمبود RAM (OOM Killer)، سیستم به طور خودکار سرویس را متوقف کرده است. با بهینهسازی فایل سرویس و اضافه کردن Restart=on-failure مشکل حل شد.
برای درک بهتر جایگاه Systemd، باید بدانیم که پیش از آن، لینوکس از سیستم قدیمی SysVinit استفاده میکرد که مبتنی بر اجرای ترتیبی و کند اسکریپتهای سنگین بود. شناخت این تفاوتها به شما کمک میکند تا متوجه شوید چرا مدیریت سرویسها بسیار سریعتر و هوشمندتر از گذشته انجام میشود:
| ویژگی | Systemd (جدید) | SysVinit (قدیمی) |
|---|---|---|
| سرعت بوت | بسیار بالا (موازی) | کند (ترتیبی) |
| مدیریت لاگ | متمرکز (Binary) | پراکنده (Plain Text) |
| سادگی کانفیگ | بالا (Unit Files) | پایین (Bash Scripts) |
| پشتیبانی 2024 | استاندارد اصلی | منسوخ شده |
✅ مزایای Systemd :
❌ معایب و چالشهای Systemd:
یادگیری و آموزش Systemd دیگر یک انتخاب نیست، بلکه یک ضرورت برای هر کسی است که با سرور لینوکس سر و کار دارد. از اجرای ساده یک وبسرور گرفته تا مدیریت میکروسرویسهای پیچیده، همه و همه به درک درست شما از systemctl و ساختار Unit Fileها بستگی دارد. ما در این مقاله سعی کردیم با نگاهی به استانداردهای 2025، ابزارهای کاربردی را در اختیار شما قرار دهیم.
فراموش نکنید که تجربه، بهترین معلم است؛ پس همین حالا وارد ترمینال شوید و دستوراتی که یاد گرفتید را تمرین کنید. اگر در هر مرحله از مدیریت سرویسهای خود روی سرورهای وبداده دچار چالش شدید، تیم پشتیبانی ما در کنار شماست.
امیدوارم این مقاله از بلاگ وبداده برای شما مفید بوده باشد. در صورتی که سوالی داشتید یا تجربهای در مدیریت سرویسها دارید، حتماً در بخش نظرات با ما در میان بگذارید.
کافیست دستور ps -p 1 -o comm= را بزنید. اگر خروجی systemd بود، یعنی سیستم شما مدرن است.