مقدمه
امروزه مدیریت زمان و خودکارسازی وظایف روزمره در سرور و سیستمهای لینوکسی اهمیت بسیاری دارد. یکی از بهترین ابزارهایی که به شما کمک میکند تا کارهای خود را به صورت زمانبندی شده و خودکار انجام دهید، 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
سرور ابری هتزنر؛ بهترین کیفیت، مناسبترین قیمت
به دنبال یک سرور ابری قدرتمند با سرعت و کیفیت بینظیر هستید؟ سرورهای ابری هتزنر با جدیدترین پردازندههای Intel و AMD، دیسکهای SSD NVMe، پورت 10Gbps و ترافیک ماهیانه ۲۰ ترابایت، تجربهای روان و سریع برای شما فراهم میکنند. تنوع رنج آیپیها و کنترل پنل حرفهای، به شما این امکان را میدهند که سرور خود را در کمتر از ۱۰ ثانیه بسازید!
مثالهای کاربردی 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 را آموزش داد. امیدواریم که بتوانید با استفاده از این ابزار قدرتمند، کارهای خود را به بهترین شکل ممکن خودکار کنید.