آموزش جامع دستور at در لینوکس

مقدمه

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

دستور at چیست؟

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

نصب دستور at

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

sudo apt install at

برای اطمینان از فعال بودن سرویس at، دستور زیر را اجرا کنید:

sudo systemctl enable --now atd

استفاده از دستور at

ساختار کلی دستور at به این صورت است:

at [زمان]

زمان موردنظر می‌تواند به فرمت‌های مختلف وارد شود، مانند “now + 1 hour” (الان + ۱ ساعت) یا “tomorrow” (فردا). پس از وارد کردن دستور at، می‌توانید دستوراتی که قصد اجرای آن‌ها را دارید تایپ کنید. با زدن کلیدهای ترکیبی Ctrl + D، دستورات شما ذخیره می‌شوند و در زمان مشخص شده اجرا خواهند شد.

مثال: اجرای یک دستور ساده در آینده

فرض کنید می‌خواهید دستوری را در ۵ دقیقه آینده اجرا کنید. برای این کار می‌توانید از دستور زیر استفاده کنید:

echo "Hello, world!" | at now + 5 minutes

این دستور پیغام “Hello, world!” را در ۵ دقیقه آینده به ترمینال چاپ خواهد کرد.

مشاهده و مدیریت وظایف زمان‌بندی شده

برای مشاهده‌ی لیست وظایف زمان‌بندی شده، می‌توانید از دستور atq استفاده کنید. این دستور لیستی از تمامی وظایف در انتظار اجرا را نمایش می‌دهد.

atq

اگر نیاز به حذف یک وظیفه داشته باشید، می‌توانید از دستور atrm به همراه شماره وظیفه استفاده کنید:

atrm [job number]

مثال: حذف یک وظیفه

برای مثال، اگر وظیفه‌ای با شماره ۲ دارید و می‌خواهید آن را حذف کنید، دستور زیر را اجرا کنید:

atrm 2

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

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

at now + 2 hours

پس از زدن کلید Enter، دستور اجرای اسکریپت را وارد کنید:

/home/user/backup.sh

سپس با فشردن Ctrl + D، وظیفه زمان‌بندی خواهد شد و اسکریپت شما در زمان مشخص شده اجرا می‌شود.

فرمت‌های مختلف برای تعیین زمان

یکی از ویژگی‌های انعطاف‌پذیر دستور at، قابلیت وارد کردن زمان به فرمت‌های مختلف است. برخی از این فرمت‌ها عبارتند از:

  • now + [مدت زمان]: اجرای دستور پس از مدت زمان مشخص.
  • [ساعت]:[دقیقه] [AM/PM]: اجرای دستور در ساعت و دقیقه‌ی مشخص در همان روز.
  • noon/midnight: اجرای دستور در نیمه‌شب یا ظهر.
  • [تاریخ]: اجرای دستور در تاریخ مشخص (برای مثال July 20).
  • مثال: اجرای دستور در ساعت ۳ بعد از ظهر فردا
at 3pm tomorrow

این دستور، وظیفه را برای اجرا در ساعت ۳ بعد از ظهر فردا زمان‌بندی خواهد کرد.

کاربردهای عملی دستور at

ارسال ایمیل در آینده

فرض کنید می‌خواهید یک ایمیل را در یک زمان خاص ارسال کنید. می‌توانید از دستور at به همراه یک برنامه ایمیل مانند mail استفاده کنید:

echo "This is the body of the email" | mail -s "Subject" user@example.com | at 9am tomorrow

این دستور، ایمیل را در ساعت ۹ صبح فردا ارسال خواهد کرد.

پشتیبان‌گیری خودکار

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

at 2am <<EOF
/home/user/backup.sh
EOF

این دستور اسکریپت شما را به صورت خودکار در زمان مشخص شده اجرا می‌کند.

تفاوت بین دستور at و cron

هر دو ابزار at و cron برای زمان‌بندی وظایف به کار می‌روند، اما تفاوت‌های مهمی بین آن‌ها وجود دارد:

  • at: برای زمان‌بندی وظایف یک‌بار مصرف استفاده می‌شود. به عبارت دیگر، وظیفه تنها یک بار اجرا می‌شود و سپس حذف می‌شود.
  • cron: برای زمان‌بندی وظایف تکراری استفاده می‌شود. شما می‌توانید وظایف خود را برای اجرا در بازه‌های زمانی منظم تنظیم کنید (مثل هر روز، هر هفته و غیره).

اگر نیاز دارید یک وظیفه را به صورت مکرر اجرا کنید، cron گزینه بهتری است. اما برای وظایف تک‌بار مصرف، at کارآمدتر است.

جمع‌بندی

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