دستور at در لینوکس

دستور at در لینوکس

سعیده مهاجری

at یک ابزار command-line است که به شما امکان می دهد دستوراتی را برای اجرا در یک زمان خاص برنامه ریزی کنید. جاب های ایجاد شده با at فقط یک بار اجرا می شوند. ما در این مقاله ، نحوه استفاده از دستور at و برنامه های همراه آن atq ، atrm ، batch برای مشاهده ، حذف و ایجاد جاب ها که بعداً باید اجرا شوند را به شما عزیزان توضیح خواهیم داد.

نصب at :

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

  • نصب at در Ubuntu و Debian :
sudo apt update 

sudo apt install at
  • نصب at در CentOS و Fedora :
sudo yum install at

پس از نصب برنامه از atd مطمئن شوید ، daemon زمان بندی در حال اجرا است و تنظیم می شود که از بوت شروع شود:

sudo systemctl enable --now atd

نحوه استفاده از دستور at :

نحو ساده شده برای دستور at به شرح زیر است:

at[OPTION...] runtime

وقتی بخواهید با استفاده از این دستور ، جاب را به عنوان یک پارامتر command-line اجرا کنید ، دستور at و تاریخ و زمان را می گیرد و از ورودی استاندارد این دستور اجرا می شود. بیایید جابی ایجاد کنیم که ساعت ۹:۰۰ صبح اجرا شود:

at 09:00

هنگامی که Enter را فشار دهید ، از شما می خواهد دستور فرمان at را بدهید که اغلب با at > شروع می شود. همچنین یک هشدار مشاهده می کنید که shell را که دستور at در آن اجرا می شود به شما می گوید:

warning: commands will be executed using /bin/sh
at>

یک یا چند دستوری را که می خواهید اجرا کنید وارد کنید:

tar -xf /home/linuxize/file.tar.gz

پس از وارد کردن دستورات ، Ctrl-D را فشار دهید تا سریعاً از آن خارج شوید و جاب را ذخیره کنید:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

این دستور شماره جاب ، زمان و تاریخ اجرا را نمایش می دهد. علاوه بر وارد کردن دستور سریع at ، روشهای دیگری نیز برای عبور از دستور موردنظر برای اجرای آن وجود دارد . یکی از روش استفاده از echo و pip است:

echo "command_to_be_run" | at 09:00

گزینه دیگر استفاده از Here document است:

at 09:00 <<ENDcommand_to_be_runEND

برای خواندن دستورات از یک فایل به جای ورودی استاندارد ، دستور زیر را که در مسیر فایل قرار دارد با گزینه -f دنبال کنید. به عنوان مثال ، برای ایجاد جاب اسکریپت /home/linuxize/script.sh را اجرا کنید:

at 09:00 -f /home/linuxize/script.sh

به طور پیش فرض اگر این دستور خروجی تولید کند ، at پس از اتمام کار یک ایمیل شامل خروجی برای کاربر ارسال می کند. برای عدم ارسال ایمیل از گزینه -M استفاده کنید:

at 09:00 -M

حتی اگر خروجی وجود نداشته باشد ازگزینه -m برای ارسال ایمیل استفاده کنید:

at 09:00 -m

دستور batch :

batch یا نام مستعار at -b ، جاب را برنامه ریزی می کند و وقتی سطح بارگذاری سیستم اجازه می دهد آنها را در یک صف batch اجرا می کند. به طور پیش فرض ، جاب ها وقتی انجام می شوند که میانگین بارگذاری سیستم زیر ۱٫۵ باشد. مقدار بار را می توان هنگام استناد به دیمون ATD مشخص کرد. اگر میانگین بارگذاری سیستم از مقدار مشخص شده بالاتر باشد ، جاب ها در صف منتظر می مانند. برای ایجاد یک جاب با batch ، دستوراتی را که می خواهید اجرا کنید وارد کنید:

echo "command_to_be_run" | batch

تعیین زمان اجرا :

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

  • زمان – برای تعیین زمان ، از فرم های HH : MM یا HHMM استفاده کنید. برای نشان دادن قالب زمان ۱۲ ساعته ، از am یا pm بعد از زمان استفاده کنید. همچنین می توانید از رشته هایی مانند now, midnight, noon, یا teatime (16:00) استفاده کنید. اگر زمان مشخص شده سپری شود ، جاب روز بعد اجرا می شود.
  • تاریخ – این دستور به شما امکان می دهد تا اجرای جاب را در یک تاریخ معین برنامه ریزی کنید. تاریخ را می توان با استفاده از نام ماه به دنبال روز و یک سال اختیاری تعیین کرد. می توانید از رشته هایی مانند tomorrow، today یا weekday استفاده کنید. همچنین میتوان تاریخ را با استفاده از فرمت های MMDD [CC] YY، MM / DD / [CC] YY، DD.MM. [CC] YY یا [CC] YY-MM-DD نیز نشان داد.
  • at – Increment همچنین Increment را در قالب count time-unit + now  می پذیرد ، جایی که count یک عدد است و time-unit می تواند یکی از رشته های days، hours، minutes یا weeks باشد:

زمان ، تاریخ و Increment را می توان ترکیب کرد ، در اینجا چند مثال آورده شده است:

  • برنامه ای برای یکشنبه آینده در یک زمان ده دقیقه دیرتر از زمان فعلی برنامه ریزی کنید:
at sunday +10 minutes
  • برنامه ای را برای اجرای یک ساعت دیگر برنامه ریزی کنید:
at now +1 hours
  • برنامه ای را برای دو روز دیگر در ساعت ۱ بدازظهر برنامه ریزی کنید:
at 1pm + 2 days
  • برنامه ای را برای اجرا در ساعت ۱۲:۳۰ اکتبر ۲۱ ۲۰۲۰ برنامه ریزی کنید:
at 12:30 102120

همچنین می توانید با استفاده از گزینه -t زمان و تاریخ را در [[CC] YY] MMDDhhmm [.ss] مشخص کنید. به عنوان مثال:

at -t 202005111321.32

تعیین Queue :

به طور پیش فرض ، جاب ایجاد شده با این دستور در Queue بنام a و جاب ایجاد شده با batch در b Queue برنامه ریزی می شوند. کوئری ها می توانند یک نام  از a تا z یا A تا Z داشته باشند. Queue های با حروف پایین تر با زیبایی کمتری اجرا می شوند ، به این معنی که اولویت آنها با حروف بالاتر است. می توانید Queue را با گزینه -q مشخص کنید. به عنوان مثال ، برای تعیین جاب  درL Queue ، دستور زیر را اجرا کنید:

at monday +2 hours -q L

لیست جاب های معلق :

برای لیست جاب های معلق کاربر ، دستور atq یا at -l را اجرا کنید:

atq

در خروجی ، همه جاب ها، در هر خط ، لیست می شود. هر خط شامل شماره جاب ، تاریخ ، زمان ، نام Queue و نام کاربری است.

۹	  Tue May  5 12:22:00 2020 a linuxize
۱۲	Wed Oct 21 12:30:00 2020 a linuxize
۱۵	Tue May  5 09:00:00 2020 a linuxize
۶	  Tue May  5 09:00:00 2020 a linuxize
۱۳	Mon May  4 23:08:00 2020 a linuxize
۱۱	Wed Jul  1 10:00:00 2020 a linuxize
۴	  Tue May  5 09:00:00 2020 a linuxize

هنگامی که atq به عنوان کاربر اداری فراخوانی می شود ، جاب های معلق همه کاربران را لیست می کند.

حذف جاب های معلق :

برای حذف یک جاب معلق ، دستور atrm یا at -r را فراخوانی کنید و به دنبال آن شماره جاب را دنبال کنید. به عنوان مثال ، برای حذف جاب با شماره ۹، دستور زیر را اجرا کنید:

atrm 9

محدود کردن کاربران :

فایل های /etc/at.deny و /etc/at.allow به شما امکان می دهد کنترل کنید که کدام یک از کاربران می توانند با دستور at یا batch جاب ایجاد کنند. این فایل ها شامل لیستی از نام های کاربری هستند که در هر خط یک نام کاربری دارند. به طور پیش فرض ، فقط فایل /etc/at.deny وجود دارد و خالی است ، به این معنی که همه کاربران می توانند از دستور at استفاده کنند. اگر می خواهید اجازه ورود به یک کاربر خاص را ندهید ، نام کاربری خود را به این فایل اضافه کنید اگر فایل /etc/at.allow وجود داشته باشد ، فقط کاربرانی که در این فایل لیست شده اند می توانند از دستور at استفاده کنند. اگر هیچ یک از فایل ها وجود نداشته باشد ، فقط کاربرانی که دارای امتیازات اداری هستند می توانند از دستور at استفاده کنند.

جمع بندی :

ابزار at دستورات را از ورودی استاندارد می خواند و آنها را در زمان دیگری اجرا می کند. بر خلاف crontab ، جاب های ایجاد شده با at فقط یک بار اجرا می شوند. برای کسب اطلاعات بیشتر در مورد همه گزینه های موجود at ، دستور type  at را در terminal خود اجرا کنید.
امیدواریم مطالب مورد پسند بوده باشد.
ما را در شتابان هاست همراهی کنید.😊