## 🔁 پیکربندی اجرای خودکار سرویسها در لینوکس – با systemd و chkconfig
در لینوکس، برای مدیریت سرویسها و تعیین اینکه در زمان **بوت** یا **خاموشی سیستم** اجرا یا متوقف شوند، از ابزارهایی مانند `systemctl` یا `chkconfig` استفاده میشود (بسته به توزیع لینوکس).
---
## 🛠️ ابزارهای اصلی
| ابزار | مناسب برای |
| ----------- | ------------------------------------------------------------------------------------------------ |
| `systemctl` | سیستمهایی با **systemd** (اکثر توزیعهای مدرن مانند Ubuntu, Debian, CentOS 7+, RHEL 7+, Fedora) |
| `chkconfig` | سیستمهای قدیمیتر با **SysVinit** یا **CentOS 6 و پایینتر** |
---
## ✅ بررسی وضعیت یک سرویس
```bash
sudo systemctl status nginx
```
خروجی نشان میدهد سرویس فعال است یا نه و آیا در زمان بوت اجرا میشود یا نه.
---
## 🚀 فعالسازی خودکار سرویس در زمان بوت
```bash
sudo systemctl enable nginx
```
> این دستور، لینکهایی در `/etc/systemd/system/` ایجاد میکند تا سرویس در زمان بوت اجرا شود.
---
## 🛑 غیرفعالسازی اجرای خودکار در زمان بوت
```bash
sudo systemctl disable nginx
```
---
## 🔄 فعالسازی یا توقف آنی سرویس (در همین لحظه)
```bash
sudo systemctl start nginx # اجرای فوری سرویس
sudo systemctl stop nginx # توقف فوری سرویس
```
---
## 🔁 فعالسازی مجدد (restart) یا بارگذاری مجدد (reload)
```bash
sudo systemctl restart nginx # توقف و اجرای مجدد
sudo systemctl reload nginx # بارگذاری مجدد تنظیمات (بدون توقف سرویس)
```
---
## 📋 مشاهده همه سرویسهای فعال در زمان بوت
```bash
systemctl list-unit-files --type=service | grep enabled
```
---
## ⏱️ اجرای سرویسها با تأخیر در بوت (Optional)
اگر میخواهید سرویسی با تأخیر خاص اجرا شود، میتوانید یک واحد `systemd` سفارشی بسازید یا از `After=` در فایل سرویس استفاده کنید. نمونه:
```ini
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/usr/bin/myscript.sh
[Install]
WantedBy=multi-user.target
```
---
## 🔧 مدیریت سرویسها در سیستمهای قدیمی (با chkconfig)
```bash
sudo chkconfig nginx on # فعالسازی در بوت
sudo chkconfig nginx off # غیرفعالسازی
```
برای مشاهده همه سرویسها:
```bash
chkconfig --list
```
---
## 🧪 تست اجرای خودکار بعد از ریبوت
1. سیستم را ریستارت کنید:
```bash
sudo reboot
```
2. سپس با دستور زیر بررسی کنید آیا سرویس موردنظر اجرا شده:
```bash
systemctl status nginx
```
---
## ✅ نتیجهگیری
با استفاده از ابزار `systemctl` یا `chkconfig` میتوانید بهراحتی سرویسهای لینوکس را **در زمان بوت فعال یا غیرفعال** کنید و **کنترل دقیقی بر زمان اجرای آنها** داشته باشید. این کار بخشی مهم از مدیریت حرفهای سرورهای لینوکسی است.