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

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

2- استارت، استاپ و ریستارت سرویس لینوکس از طریق Systemctl
استارت، استاپ و ریستارت سرویس لینوکس پرکاربردترین دستورات برای هر مدیر سایت هستند:
🔶دستور شروع به کار سرویس (start) در لینوکس :
systemctl start nginx 🔶دستور متوقف کردن یا استاپ سرویس در لینوکس :
systemctl stop nginx 🔶دستور اعمال تغییرات با ریستارت کامل سرویس در لینوکس :
systemctl restart nginx 🔶دستور بارگذاری مجدد تنظیمات بدون قطعی (Reload) سرویس در لینوکس :
systemctl reload nginx restart از reload استفاده کنید تا اگر خطایی در فایل تنظیمات وجود دارد، سرویس فعلی از کار نیفتد.3- نحوه فعالسازی خودکار (Enable/Disable) سرویس لینوکس
آیا میخواهید سرویس شما بعد از بوت شدن سرور به صورت خودکار اجرا شود؟
برای فعال سازی اجرای خودکار در بوت دستور زیر را اجرا کنید.
systemctl enable nginx برای غیرفعال کردن اجرای خودکار سرویس لینوکس می توانید از دستور زیر استفاده کنید.
systemctl disable nginx ساخت سرویس سفارشی (Unit Files) از طریق Systemd
گاهی اوقات شما یک برنامه پایتون یا یک اسکریپت خاص دارید که میخواهید مثل یک سرویس لینوکس استاندارد با آن برخورد شود. برای این کار باید یک فایل با پسوند .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 را بزنید تا سیستم متوجه تغییرات شود.
عیبیابی با journalctl
یکی از قدرتمندترین بخشهای آموزش 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 استفاده میکرد که مبتنی بر اجرای ترتیبی و کند اسکریپتهای سنگین بود. شناخت این تفاوتها به شما کمک میکند تا متوجه شوید چرا مدیریت سرویسها بسیار سریعتر و هوشمندتر از گذشته انجام میشود:
| ویژگی | Systemd (جدید) | SysVinit (قدیمی) |
|---|---|---|
| سرعت بوت | بسیار بالا (موازی) | کند (ترتیبی) |
| مدیریت لاگ | متمرکز (Binary) | پراکنده (Plain Text) |
| سادگی کانفیگ | بالا (Unit Files) | پایین (Bash Scripts) |
| پشتیبانی 2024 | استاندارد اصلی | منسوخ شده |
مزایا و محدودیتهای Systemd
✅ مزایای Systemd :
- پایداری فوقالعاده در بارهای کاری سنگین.
- مدیریت هوشمند وابستگیها.
- جامعه کاربری بزرگ و رفرنسهای بیپایان.
❌ معایب و چالشهای Systemd:
- پیچیدگی لاگهای باینری (نیاز به دستور خاص برای خواندن).
- متمرکز بودن بیش از حد که برخی از طرفداران یونیکس قدیمی آن را نمیپسندند.
نتیجهگیری؛ مدیریت سرویس لینوکس
یادگیری و آموزش Systemd دیگر یک انتخاب نیست، بلکه یک ضرورت برای هر کسی است که با سرور لینوکس سر و کار دارد. از اجرای ساده یک وبسرور گرفته تا مدیریت میکروسرویسهای پیچیده، همه و همه به درک درست شما از systemctl و ساختار Unit Fileها بستگی دارد. ما در این مقاله سعی کردیم با نگاهی به استانداردهای 2025، ابزارهای کاربردی را در اختیار شما قرار دهیم.
فراموش نکنید که تجربه، بهترین معلم است؛ پس همین حالا وارد ترمینال شوید و دستوراتی که یاد گرفتید را تمرین کنید. اگر در هر مرحله از مدیریت سرویسهای خود روی سرورهای وبداده دچار چالش شدید، تیم پشتیبانی ما در کنار شماست.
امیدوارم این مقاله از بلاگ وبداده برای شما مفید بوده باشد. در صورتی که سوالی داشتید یا تجربهای در مدیریت سرویسها دارید، حتماً در بخش نظرات با ما در میان بگذارید.
سوالات متداول درباره آموزش Systemd
چطور بفهمم سیستم من از Systemd استفاده میکند؟
کافیست دستور ps -p 1 -o comm= را بزنید. اگر خروجی systemd بود، یعنی سیستم شما مدرن است.
تفاوت Restart و Reload چیست؟
در ریستارت سرویس کاملاً بسته و دوباره باز میشود (قطعی کوتاه)، اما در ریلود فقط فایل تنظیمات دوباره خوانده میشود بدون اینکه سرویس متوقف شود.
چرا سرویس من بعد از ریبوت اجرا نمیشود؟
احتمالاً فراموش کردهاید دستور systemctl enable [service] را بزنید.
فایلهای سرویس پیشفرض لینوکس کجا هستند؟
سرویسهای سیستمی در /lib/systemd/system/ و سرویسهای کاربر در /etc/systemd/system/ قرار دارند.
چطور یک سرویس را که قفل شده است اجباری ببندم؟
معمولاً systemctl stop کار میکند، اما در موارد حاد میتوانید از systemctl kill استفاده کنید.
آیا Systemd مصرف منابع بالایی دارد؟
خیر، برخلاف تصور عمومی، به دلیل مدیریت هوشمند و جایگزینی چندین ابزار قدیمی، در مجموع بهینهتر عمل میکند.




