CodeShot

Service Unit در مقابل Timer Unit

Service Unit (فایل .service) نحوه اجرای یک پروسه یا سرویس را تعریف می‌کند، مثل این‌که چه دستوری اجرا شود و چگونه Restart شود، در حالی که Timer Unit (فایل .timer) یک زمان‌بند است که مشخص می‌کند یک Service Unit در چه زمانی فعال شود، مشابه جایگزین مدرن‌تر برای cron.

ویژگیService UnitTimer Unit
پسوند فایل.service.timer
نقشتعریف نحوه اجراتعریف زمان اجرا
مشابه در دنیای قدیمinit.d scriptcrontab

کِی از Service Unit استفاده کنیم؟

وقتی می‌خواهید یک برنامه یا سرویس دائمی (مثل یک وب‌سرور یا API) را تعریف کنید که باید همیشه در حال اجرا باشد یا با خرابی سیستم دوباره راه‌اندازی شود.

کِی از Timer Unit استفاده کنیم؟

وقتی می‌خواهید یک وظیفه را طبق زمان‌بندی مشخص (مثلاً هر شب ساعت ۳) اجرا کنید و از قابلیت‌های systemd مثل لاگ یکپارچه با journalctl بهره ببرید.

مثال Service Unit

# /etc/systemd/system/backup.service
[Unit]
Description=Backup Service
[Service]
ExecStart=/usr/local/bin/backup.sh

مثال Timer Unit

# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=*-*-* 03:00:00
[Install]
WantedBy=timers.target

اشتباه رایج

اشتباه رایج تعریف یک Timer Unit بدون فعال‌سازی و اجرای systemctl enable --now روی خود فایل .timer است؛ فعال کردن فقط فایل .service باعث اجرای فوری آن می‌شود، نه اجرای زمان‌بندی‌شده.

جمع‌بندی

برای تعریف یک سرویس در حال اجرا از Service Unit و برای زمان‌بندی اجرای دوره‌ای آن Service Unit از Timer Unit به‌عنوان جایگزین مدرن cron استفاده کنید.