systemd چیست؟
سیستم مدیریت سرویس و فرایند راهاندازی (Init System) اکثر توزیعهای مدرن لینوکس؛ سرویسها را استارت، متوقف، Restart خودکار و Log میکند.
چرا مهم است؟
هر برنامه Backend که روی یک سرور لینوکس (نه Container) اجرا میشود، معمولاً باید بهعنوان یک سرویس systemd تعریف شود تا بعد از کرش یا ریاستارت سرور، خودکار دوباره بالا بیاید.
تعریف
systemd فرایند شماره ۱ در اکثر توزیعهای مدرن لینوکس (Ubuntu، CentOS/RHEL جدید) است که مسئول راهاندازی سیستم، مدیریت سرویسها (.service Unit) و لاگ مرکزی (journald) است.
مثال: تعریف سرویس یک برنامه داتنت
# /etc/systemd/system/myapi.service
[Unit]
Description=My ASP.NET Core API
After=network.target
[Service]
WorkingDirectory=/var/www/myapi
ExecStart=/usr/bin/dotnet /var/www/myapi/MyApi.dll
Restart=always
RestartSec=5
User=www-data
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapi
sudo journalctl -u myapi -f
دستورات پرکاربرد
systemctl status myapiوضعیت فعلی سرویسsystemctl restart myapiریاستارت دستیjournalctl -u myapi -fمشاهده زنده لاگ سرویس
اشتباه رایج
❌ فراموشکردن Restart=always — بدون آن، اگر برنامه بههر دلیلی کرش کند، سرویس متوقف میماند و دوباره بالا نمیآید تا کسی دستی آن را استارت کند.
منبع و مطالعه بیشتر
خلاصه
systemd سرویسهای لینوکس را استارت، مانیتور و در صورت کرش دوباره اجرا میکند. همیشه Restart=always را برای سرویسهای Production ست کنید. مرجع کامل: مستندات systemd و راهنمای دیپلوی ASP.NET Core با systemd در Microsoft Learn.
