## ⚙️ مدیریت فرآیند Startup و سرویسها در لینوکس
هنگامی که یک سیستم لینوکس راهاندازی میشود، مجموعهای از فرآیندها و سرویسها به طور خودکار اجرا میشوند. مدیریت صحیح این فرآیندها میتواند به:
* افزایش سرعت بوت،
* کاهش مصرف منابع
* و بهبود امنیت سیستم
کمک کند.
---
### 📋 بخشهای اصلی فرآیند Startup در لینوکس
1. **BIOS/UEFI**
2. **Boot Loader** (مانند GRUB)
3. **Kernel Initialization**
4. **init/systemd یا سایر init systems**
5. **اجرای سرویسها و login**
در این مقاله تمرکز ما روی مرحلهی ۴ و ۵ یعنی **init system و مدیریت سرویسها** است.
---
## 🧩 انواع init systems در لینوکس
| init System | توضیح |
| ----------- | --------------------------------------------------------------- |
| `Systemd` | مدرنترین، در بیشتر توزیعها (مانند Ubuntu 16+، RHEL/CentOS 7+) |
| `SysVinit` | قدیمی، ساختار سادهی اسکریپتهای `/etc/init.d/` |
| `Upstart` | در Ubuntu بین نسخه 9 تا 14 استفاده شده است |
---
## 🛠 مدیریت Startup در سیستمعاملهای مبتنی بر `systemd`
### مشاهدهی سرویسهای فعال در زمان بوت:
```bash
systemctl list-unit-files --type=service | grep enabled
```
### غیرفعال کردن اجرای یک سرویس در زمان بوت:
```bash
sudo systemctl disable <service>
```
### فعالسازی مجدد اجرای خودکار:
```bash
sudo systemctl enable <service>
```
---
## 🕵️ مشاهده مدت زمان Startup
برای بررسی اینکه چه سرویسی بیشتر زمان بوت را اشغال میکند:
```bash
systemd-analyze blame
```
مثال خروجی:
```
10.002s NetworkManager.service
9.500s apache2.service
1.001s ssh.service
```
### مشاهده نمودار زمانی:
```bash
systemd-analyze plot > startup.svg
```
---
## 🔄 تغییر ترتیب و وابستگی بین سرویسها
در فایلهای یونیت systemd، میتوانید وابستگیها را تعریف کنید:
```ini
[Unit]
Description=My App
After=network.target mysql.service
Requires=mysql.service
```
* `After=` تعیین میکند سرویس شما بعد از سرویس دیگر اجرا شود.
* `Requires=` بیان میکند که سرویس دیگر باید برای اجرای این سرویس فعال باشد.
---
## 🔍 مدیریت سرویسهای سطح پایین در سیستمهایی با SysVinit
### لیست سرویسها:
```bash
chkconfig --list
```
### غیرفعال کردن یک سرویس:
```bash
chkconfig <service> off
```
### فعال کردن:
```bash
chkconfig <service> on
```
---
## ⏱ ابزارهای مکمل برای کنترل Startup
* `htop`: برای مشاهده فرآیندها به صورت تعاملی
* `rcconf` (در توزیعهای قدیمی): برای مدیریت گرافیکی startup
* `bum` (Boot Up Manager): ابزار GUI برای کنترل startup services (در Ubuntu)
---
## ✅ جمعبندی
مدیریت فرآیند بوت و سرویسها در لینوکس، بخشی مهم در مدیریت سرور است. با استفاده از ابزارهای `systemctl`, `systemd-analyze`, `chkconfig` و تعریف وابستگیها، میتوانید:
* کنترل کامل بر آنچه در زمان راهاندازی اجرا میشود داشته باشید،
* عملکرد سیستم را بهینه کنید
* و منابع را به شکل مؤثرتری مدیریت نمایید.