Service Unit در مقابل Timer Unit
Service Unit (فایل .service) نحوه اجرای یک پروسه یا سرویس را تعریف میکند، مثل اینکه چه دستوری اجرا شود و چگونه Restart شود، در حالی که Timer Unit (فایل .timer) یک زمانبند است که مشخص میکند یک Service Unit در چه زمانی فعال شود، مشابه جایگزین مدرنتر برای cron.
| ویژگی | Service Unit | Timer Unit |
|---|---|---|
| پسوند فایل | .service | .timer |
| نقش | تعریف نحوه اجرا | تعریف زمان اجرا |
| مشابه در دنیای قدیم | init.d script | crontab |
کِی از 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 استفاده کنید.
