زمانبندی وظایف در لینوکس: مقایسه Cron Jobs و Systemd Timers
بسیاری از وظایف مدیریتی سرور مانند بکاپگیری، پاکسازی فایلهای موقت یا اجرای اسکریپتهای نگهداری، باید بهصورت خودکار و در زمانهای مشخص اجرا شوند. لینوکس دو روش اصلی برای این کار ارائه میدهد: Cron Jobs سنتی و Systemd Timers مدرنتر.
Cron Job چیست؟
Cron یک سرویس زمانبند قدیمی و پرکاربرد در لینوکس است که وظایف را بر اساس یک فایل پیکربندی به نام Crontab اجرا میکند. برای ویرایش Crontab کاربر جاری:
crontab -eساختار هر خط Crontab شامل پنج فیلد زمانی و دستور اجرایی است:
# دقیقه ساعت روزماه ماه روزهفته دستور
0 3 * * * /home/user/scripts/backup.shاین مثال، اسکریپت بکاپ را هر شب ساعت ۳ بامداد اجرا میکند.
Systemd Timer چیست؟
Systemd Timer جایگزین مدرنتری برای Cron است که با سیستم مدیریت سرویس Systemd یکپارچه شده و امکانات بیشتری مانند لاگگیری دقیق، مدیریت وابستگی بین سرویسها و اجرای مجدد در صورت خطا را فراهم میکند. برای تعریف یک Timer، دو فایل نیاز است:
# /etc/systemd/system/backup.service
[Unit]
Description=Run Backup Script
[Service]
ExecStart=/home/user/scripts/backup.sh# /etc/systemd/system/backup.timer
[Unit]
Description=Run Backup Daily
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.targetsudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timersمقایسه Cron و Systemd Timer
| ویژگی | Cron | Systemd Timer |
|---|---|---|
| سادگی راهاندازی | بسیار ساده | نیاز به دو فایل پیکربندی |
| لاگگیری | محدود | یکپارچه با journalctl |
| اجرای معوق (Persistent) | پشتیبانی نمیکند | در صورت خاموش بودن سیستم، بعداً اجرا میشود |
کاربرد عملی: خودکارسازی بکاپگیری
یکی از رایجترین کاربردهای زمانبندی خودکار، اجرای منظم اسکریپتهای بکاپ است تا نیازی به دخالت دستی نباشد؛ استراتژی کامل بکاپگیری و بازیابی در مقاله بکاپگیری و Disaster Recovery در سرورهای لینوکسی شرح داده شده است. همچنین برای پیکربندی صحیح این ابزارها روی یک سرور تازه راهاندازیشده، میتوانید به مقاله راهاندازی اولیه سرور اوبونتو مراجعه کنید.
جمعبندی
انتخاب بین Cron و Systemd Timer به نیاز پروژه بستگی دارد؛ برای وظایف ساده، Cron همچنان کافی و سریع است، اما برای پروژههایی که به لاگگیری دقیق و مدیریت وابستگی نیاز دارند، Systemd Timer گزینه بهتری محسوب میشود.
خودکارسازی گرفتن Snapshot دیسک
یکی از کاربردهای عملی Cron یا Systemd Timer، اجرای خودکار و دورهای دستورات گرفتن Snapshot از Logical Volume ها با استفاده از LVM است تا نیازی به دخالت دستی برای بکاپ لحظهای نباشد. آموزش کامل کار با LVM و گرفتن Snapshot در مقاله مدیریت پیشرفته دیسک با LVM آمده است.