چگونه کارها را با cron jobs در لینوکس خودکار کنیم؟

مقدمه

امروزه مدیریت زمان و خودکارسازی وظایف روزمره در سرور و سیستم‌های لینوکسی اهمیت بسیاری دارد. یکی از بهترین ابزارهایی که به شما کمک می‌کند تا کارهای خود را به صورت زمان‌بندی شده و خودکار انجام دهید، cron jobs است. با استفاده از cron، می‌توانید کارهایی مانند پشتیبان‌گیری از اطلاعات، ارسال ایمیل‌ها، اجرای اسکریپت‌ها، به‌روزرسانی سیستم و بسیاری از کارهای دیگر را به صورت خودکار انجام دهید و نیازی به مداخله‌ی دستی نداشته باشید. در این مقاله قصد داریم نحوه‌ی استفاده از cron jobs را به شما آموزش دهیم.

cron چیست؟

cron یکی از سرویس‌های اصلی در لینوکس است که به شما اجازه می‌دهد تا کارها را بر اساس زمان‌بندی‌های مشخص به صورت خودکار اجرا کنید. این ابزار با استفاده از فایل crontab کار می‌کند که شامل لیستی از کارهای زمان‌بندی شده است. با استفاده از این فایل می‌توان مشخص کرد که چه کاری در چه زمانی و چند بار باید اجرا شود.

نصب و پیکربندی cron

بسیاری از توزیع‌های لینوکس به صورت پیش‌فرض cron را نصب کرده‌اند. برای اطمینان از نصب بودن cron، می‌توانید از دستورات زیر استفاده کنید:

sudo systemctl status cron

اگر cron نصب نبود، می‌توانید آن را به راحتی نصب کنید. برای نصب cron در توزیع‌های مبتنی بر دبیان مانند اوبونتو از دستور زیر استفاده کنید:

sudo apt install cron

برای فعال کردن و اطمینان از اجرای cron نیز می‌توانید از دستور زیر استفاده کنید:

sudo systemctl enable --now cron

ساختار فایل crontab

فایل crontab شامل لیستی از وظایف زمان‌بندی شده است که در هر خط یک وظیفه تعریف می‌شود. هر خط شامل شش بخش است:

* * * * * command_to_execute

این پنج علامت ستاره به ترتیب نشان‌دهنده‌ی دقیقه، ساعت، روز ماه، ماه و روز هفته هستند. در زیر توضیحات هر کدام را مشاهده می‌کنید:

  • دقیقه: مقداری بین ۰ تا ۵۹.
  • ساعت: مقداری بین ۰ تا ۲۳.
  • روز ماه: مقداری بین ۱ تا ۳۱.
  • ماه: مقداری بین ۱ تا ۱۲.
  • روز هفته: مقداری بین ۰ تا ۶ (۰ به معنای یکشنبه).
  • برای مثال، برای اجرای یک دستور در ساعت ۳:۳۰ بامداد هر روز، از عبارت زیر استفاده می‌کنیم:
30 3 * * * command_to_execute

نحوه ایجاد یک cron job

برای ایجاد یک cron job جدید، ابتدا باید فایل crontab مربوط به کاربر خود را ویرایش کنید. برای این کار از دستور زیر استفاده کنید:

crontab -e

پس از اجرای این دستور، ویرایشگر متنی باز می‌شود و می‌توانید وظایف خود را به فرمت ذکر شده اضافه کنید. برای مثال، فرض کنید می‌خواهید یک اسکریپت به نام backup.sh را هر روز در ساعت ۲ بامداد اجرا کنید:

0 2 * * * /home/user/backup.sh

پس از ذخیره‌ی تغییرات، cron job شما ثبت می‌شود و در زمان مشخص شده اجرا خواهد شد.

انواع زمان‌بندی cron jobs

با استفاده از crontab، می‌توانید وظایف را به روش‌های مختلف زمان‌بندی کنید. در اینجا چند مثال از زمان‌بندی‌های متداول را مشاهده می‌کنید:

  • اجرای یک کار هر دقیقه:
* * * * * /path/to/command
  • اجرای یک کار هر روز در ساعت مشخص:
0 6 * * * /path/to/command
  • اجرای یک کار در روز اول هر ماه:
0 0 1 * * /path/to/command
  • اجرای یک کار هر یکشنبه:
0 0 * * 0 /path/to/command

مانیتورینگ و دیباگ کردن cron jobs

برای اطمینان از اجرای صحیح cron jobs، می‌توانید لاگ‌های سیستم را بررسی کنید. معمولاً لاگ‌های cron در فایل /var/log/syslog (در توزیع‌های مبتنی بر دبیان) ذخیره می‌شوند. برای مشاهده لاگ‌های مرتبط با cron از دستور زیر استفاده کنید:

grep cron /var/log/syslog

همچنین می‌توانید در دستور cron job خود از ریدایرکت خروجی برای ذخیره لاگ‌ها استفاده کنید. برای مثال:

0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1

مثال‌های کاربردی cron jobs

پشتیبان‌گیری روزانه از دیتابیس

برای پشتیبان‌گیری روزانه از یک دیتابیس MySQL در ساعت ۱ بامداد، می‌توانید از دستور زیر استفاده کنید:

0 1 * * * mysqldump -u username -p password database_name > /backup/db_backup.sql

به‌روزرسانی خودکار سیستم

برای به‌روزرسانی خودکار سیستم لینوکس هر روز در ساعت ۴ بامداد، می‌توانید از این cron job استفاده کنید:

0 4 * * * sudo apt update && sudo apt upgrade -y

ارسال ایمیل‌های خودکار

برای ارسال ایمیل‌های خودکار در زمان‌های مشخص، می‌توانید از اسکریپت‌های bash به همراه cron jobs استفاده کنید. فرض کنید یک اسکریپت به نام send_email.sh دارید که ایمیل‌ها را ارسال می‌کند. برای اجرای آن هر روز در ساعت ۹ صبح، می‌توانید از دستور زیر استفاده کنید:

0 9 * * * /path/to/send_email.sh

جمع‌بندی

cron jobs یکی از بهترین ابزارها برای خودکارسازی وظایف در لینوکس است. با استفاده از cron می‌توانید کارهای روزمره خود را بدون نیاز به مداخله‌ی دستی به صورت زمان‌بندی شده انجام دهید. این مقاله به شما نحوه ایجاد، پیکربندی و مدیریت cron jobs را آموزش داد. امیدواریم که بتوانید با استفاده از این ابزار قدرتمند، کارهای خود را به بهترین شکل ممکن خودکار کنید.