at یک ابزار خط فرمان است که به شما امکان می دهد تا دستورات را در زمان خاص اجرا کنید. جاب های ایجاد شده با at فقط یک بار اجرا می شوند. در این مقاله به شما عیزان توضیح خواهیم داد که چگونه می توان از دستور at و برنامه های همراه آن batch, atq, atrm برای مشاهده، حذف و ایجاد جاب ها استفاده کرد تا بعداً اجرا شود.
بسته به توزیع لینوکس، at ممکن است در سیستم لینوکس شما وجود داشته باشد یا نباشد. اگر at نصب نشده باشد، می توانید به راحتی آن را با استفاده از مدیر بسته توزیع خود نصب کنید.
sudo apt update
sudo apt install at
sudo yum install at
پس از نصب برنامه ، مطمئن شوید atd که برنامه ریزی Daemon در حال اجرا است و هنگام بوت شدن سیستم عامل فعال می شود:
sudo systemctl enable --now atd
نحو ساده شده برای دستور 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 <<END
command_to_be_run
END
برای خواندن دستورات از یک فایل به جای ورودی استاندارد، دستور زیر را با گزینه -f را در مسیر فایل فراخوانی کنید. به عنوان مثال، برای ایجاد جاب که اسکریپت /home/linuxize/script.sh را اجرا می کند:
at 09:00 -f /home/linuxize/script.sh
به طور پیش فرض اگر دستور خروجی تولید کند، at یک ایمیل حاوی خروجی را پس از تکمیل جاب برای کاربر ارسال می کند. فراخوانی at با -M گزینه ای برای عدم ارسال ایمیل است:
at 09:00 -M
at 09:00 -m
batch یا نام مستعار at -b، جاب را برنامه ریزی کرده و آنها را در صف batch اجرا می کند. به طور پیش فرض، جاب ها زمانی اجرا می شوند که میانگین دانلود بار سیستم زیر ۱٫۵ باشد. اگر میانگین بار سیستم از مقدار مشخص شده بالاتر باشد، جاب ها در صف انتظار خواهند ماند. برای ایجاد جاب با batch، دستوراتی را که می خواهید اجرا کنید، وارد کنید:
echo "command_to_be_run" | batch
at طیف گسترده ای از زمان را می پذیرد. می توانید زمان، تاریخ و میزان تغییرات را از زمان فعلی مشخص کنید:
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 استفاده کنند.