یکی از نسخه های فدورا که برای اجرای کانتینرها (Container) از آن استفاده می شود Fedora CoreOS نام دارد. در این نسخه بر خلاف سیستم های سنتی که از cron job برای زمانبندی اجرای برخی از برنامه ها استفاده می شود، دیگر قابل استفاده نیست و بجای آن باید از systemd timer استفاده کرد.
در این مطلب قصد داریم تا با استفاده از systemd timer در Fedora CoreOS یک job را به صورت متناوب برنامه ریزی کنیم.
در این مثال قصد داریم نمونه cron job پایین را که قبلا از آن استفاده می کردیم را تبدیل به یک systemd timer در Fedora CoreOS کنیم:
*/10 * * * * /usr/bin/date >> /tmp/date
1- Timer ها به صورت مستقیم با system unit ها کار می کنند. به همین خاطر ابتدا فایل زیر را ایجاد کنید:
/etc/systemd/system/date.service
سپس خطوط زیر را درون آن بنویسید:
[Unit]
Description=Prints date into /tmp/date file[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c ‘/usr/bin/date >> /tmp/date’
2- اکنون باید یک timer unit با همان نام بسازید اما با پسوند timer. که برای اینکار کافیست تا فایل زیر را ایجاد کنید:
/etc/systemd/system/date.timer
اکنون خطوط زیر را درون فایل بنویسید:
[Unit]
Description=Run date.service every 10 minutes[Timer]
OnCalendar=*:0/10
3- برای فعال کردن timer کافیست تا دستورهای زیر را اجرا کنید:
systemctl start date.timer
systemctl enable date.timer
4- این تنظیمات باعث می شود تا timer.service هر 10 دقیقه اجرا شود. برای لیست کردن همه ی timer های فعال بر روی سیستم می توانید از دستور زیر استفاده کنید:
systemctl list-timers
همچنین برای لیست کردن همه timer ها می توانید از دستور زیر استفاده کنید:
systemctl list-timers --all