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