نماد سایت وبلاگ شتابان هاست

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

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

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

نصب at :

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

نصبat در اوبونتو و دبیان :

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

دستور at تاریخ و زمان (runtime) زمانی را که می‌خواهید جاب را به عنوان پارامتر خط فرمان اجرا کنید و فرمانی که باید از ورودی استاندارد اجرا شود را می‌گیرد. بیایید جابی ایجاد کنیم که در ساعت ۹ صبح اجرا شود:

at 09:00

هنگامی که Enter را فشار دهید، از شما می خواهد دستور فرمان at را بدهید که اغلب با at > شروع می شود. همچنین یک هشدار مشاهده می کنید که به شما می گوید شیلی که دستور 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 استفاده کنید:

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 یک ایمیل حاوی خروجی را پس از تکمیل جاب برای کاربر ارسال می کند. فراخوانی at با -M گزینه ای برای عدم ارسال ایمیل است:

at 09:00 -M
از -m برای ارسال ایمیل حتی اگر خروجی وجود ندارد، استفاده کنید:
at 09:00 -m

دستور batch :

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

echo "command_to_be_run" | batch

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

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

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

Time ,date و increment  را می توان با هم ترکیب کرد، در اینجا چند نمونه وجود دارد:

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

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

at -t 202005111321.32

تعیین صف :

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

at monday +2 hours -q L

لیست جاب های در انتظار :

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

atq

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

۹   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 یا -r را به دنبال شماره جاب فراخوانی کنید. به عنوان مثال، برای حذف جاب با شماره ۹، باید دستور زیر را  اجرا کنید:

atrm 9

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

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

جمع بندی :

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