رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
زمان‌بندی وظایف در لینوکس: مقایسه Cron Jobs و Systemd Timers

زمان‌بندی وظایف در لینوکس: مقایسه Cron Jobs و Systemd Timers

مبانی لینوکس
2 دقیقه مطالعه

آموزش زمان‌بندی اجرای خودکار وظایف در لینوکس با Cron Jobs و Systemd Timers، مقایسه مزایای هر روش و کاربردهای عملی مانند اجرای خودکار اسکریپت بکاپ.

زمان‌بندی وظایف در لینوکس: مقایسه Cron Jobs و Systemd Timers

بسیاری از وظایف مدیریتی سرور مانند بکاپ‌گیری، پاک‌سازی فایل‌های موقت یا اجرای اسکریپت‌های نگهداری، باید به‌صورت خودکار و در زمان‌های مشخص اجرا شوند. لینوکس دو روش اصلی برای این کار ارائه می‌دهد: Cron Jobs سنتی و Systemd Timers مدرن‌تر.

Cron Job چیست؟

Cron یک سرویس زمان‌بند قدیمی و پرکاربرد در لینوکس است که وظایف را بر اساس یک فایل پیکربندی به نام Crontab اجرا می‌کند. برای ویرایش Crontab کاربر جاری:

crontab -e
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساختار هر خط Crontab شامل پنج فیلد زمانی و دستور اجرایی است:

2 خط
# دقیقه ساعت روز‌ماه ماه روز‌هفته دستور
0 3 * * * /home/user/scripts/backup.sh
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این مثال، اسکریپت بکاپ را هر شب ساعت ۳ بامداد اجرا می‌کند.

Systemd Timer چیست؟

Systemd Timer جایگزین مدرن‌تری برای Cron است که با سیستم مدیریت سرویس Systemd یکپارچه شده و امکانات بیشتری مانند لاگ‌گیری دقیق، مدیریت وابستگی بین سرویس‌ها و اجرای مجدد در صورت خطا را فراهم می‌کند. برای تعریف یک Timer، دو فایل نیاز است:

6 خط
# /etc/systemd/system/backup.service
[Unit]
Description=Run Backup Script

[Service]
ExecStart=/home/user/scripts/backup.sh
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
10 خط
# /etc/systemd/system/backup.timer
[Unit]
Description=Run Backup Daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
3 خط
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مقایسه Cron و Systemd Timer

ویژگیCronSystemd Timer
سادگی راه‌اندازیبسیار سادهنیاز به دو فایل پیکربندی
لاگ‌گیریمحدودیکپارچه با journalctl
اجرای معوق (Persistent)پشتیبانی نمی‌کنددر صورت خاموش بودن سیستم، بعداً اجرا می‌شود

کاربرد عملی: خودکارسازی بکاپ‌گیری

یکی از رایج‌ترین کاربردهای زمان‌بندی خودکار، اجرای منظم اسکریپت‌های بکاپ است تا نیازی به دخالت دستی نباشد؛ استراتژی کامل بکاپ‌گیری و بازیابی در مقاله بکاپ‌گیری و Disaster Recovery در سرورهای لینوکسی شرح داده شده است. همچنین برای پیکربندی صحیح این ابزارها روی یک سرور تازه راه‌اندازی‌شده، می‌توانید به مقاله راه‌اندازی اولیه سرور اوبونتو مراجعه کنید.

جمع‌بندی

انتخاب بین Cron و Systemd Timer به نیاز پروژه بستگی دارد؛ برای وظایف ساده، Cron همچنان کافی و سریع است، اما برای پروژه‌هایی که به لاگ‌گیری دقیق و مدیریت وابستگی نیاز دارند، Systemd Timer گزینه بهتری محسوب می‌شود.

خودکارسازی گرفتن Snapshot دیسک

یکی از کاربردهای عملی Cron یا Systemd Timer، اجرای خودکار و دوره‌ای دستورات گرفتن Snapshot از Logical Volume ها با استفاده از LVM است تا نیازی به دخالت دستی برای بکاپ لحظه‌ای نباشد. آموزش کامل کار با LVM و گرفتن Snapshot در مقاله مدیریت پیشرفته دیسک با LVM آمده است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS