دستور at در لینوکس
at
یک ابزار خط فرمان است که به شما امکان می دهد تا دستورات را در زمان خاص اجرا کنید. جاب های ایجاد شده با at
فقط یک بار اجرا می شوند. در این مقاله توضیح خواهیم داد که چگونه می توان از فرمان at
و برنامه های همراه آن batch
, atq
, atrm
برای مشاهده ، حذف و ایجاد جاب ها استفاده کرد تا بعداً اجرا شود.
نصب at
بسته به توزیع لینوکس، at
ممکن است در سیستم لینوکس شما وجود داشته باشد.
اگر at
نصب نشده است ، می توانید به راحتی آن را نصب کنید.
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.
وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.
نصب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
) زمانی که می خواهید برای اجرای این جاب به عنوان یک پارامتر خط فرمان و دستور به از ورودی استاندارد اجرا شود میگیرد.
بیایید جاب ایجاد کنیم که ساعت 9 صبح اجرا شود:
at 09:00
پس از Enter
زدن ، از شما می خواهد دستور فرمان at
را بدهید که اغلب با at>
شروع می شود.
warning: commands will be executed using /bin/sh
at>
یک یا چند فرمان مورد نظر برای اجرای را وارد کنید:
tar -xf /home/one3erver/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 <<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
با استفاده از -m
حتی اگر هیچ خروجی هم وجود نداشته باشد یک ایمیل برای ارسال میکند:
at 09:00 -m
فرمانbatch
batch
یا نام مستعار at -b
، جاب را برنامه ریزی کرده و آنها را در صف دسته ای اجرا می کند. به طور پیش فرض ، جاب ها وقتی انجام می شود که میانگین بار سیستم زیر 1.5 باشد. اگر میانگین بار سیستم از مقدار مشخص شده بالاتر باشد ، کارها در صف انتظار خواهند ماند.
برای ایجاد جاب با batch
، دستوراتی را که می خواهید اجرا کنید ، وارد کنید:
echo "command_to_be_run" | batch
تعیین زمان اجرا
at
طیف گسترده ای از زمان را می پذیرد. می توانید زمان ، تاریخ و میزان تغییرات را از زمان فعلی مشخص کنید:
- Time – برای مشخص کردن زمان ، از فرم
HH:MM
یا فرمHHM
استفاده کنید. برای نشان دادن قالب 12 ساعته ، ازam
یاpm
بعد از آن استفاده کنید. همچنین می توانید از رشته هایی مانندnow
،midnight
،noon
، یاteatime
(16:00) استفاده کنید. در صورت گذشتن زمان مشخص شده ، جاب روز بعد انجام می شود. - تاریخ – این دستور به شما امکان می دهد تا اجرای کار را در یک تاریخ معین برنامه ریزی کنید. تاریخ را می توان با استفاده از نام ماه به دنبال آن روز و یک سال اختیاری مشخص کرد. شما می توانید از
today
،tomorrow
و یا روزهای هفته استفاده کنید. تاریخ را می توان همچنین با استفاده از فرمت هایMMDD[CC]YY
،MM/DD/[CC]YY
،DD.MM.[CC]YY
و یا[CC]YY-MM-DD
وارد کرد. - افزایش –
at
همچنین افزایش در قالبnow + count time-unit
را می پذیرد ، کهcount
در آن عدد است وtime-unit
می تواند یکی از موارد زیر باشد:minutes
،hours
،days
، یاweeks
.
زمان ، تاریخ و افزایش را می توان با هم ترکیب کرد ، در اینجا چند مثال آورده شده است:
- برنامه ریزی یک جاب برای یکشنبه آینده ساعت 10 دقیقه دیرتر از زمان فعلی:
at sunday +10 minutes
- برای تنظیم 2 روز دیگر ساعت 1 بعد از ظهر:
at 1pm + 2 days
- برنامه ای را برای اجرا در 12:30 اکتبر 21 2020 برنامه ریزی کنید:
at 12:30 102120
- برای انجام 1 ساعت دیگر:
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
یا at -l
را اجرا کنید :
atq
خروجی تمام جابها ، هرکدام در هر خط را نشان می دهد. هر خط شامل شماره جاب ، تاریخ ، زمان ، نامه صف و نام کاربری می باشد.
9 Tue May 5 12:22:00 2020 a linuxize
12 Wed Oct 21 12:30:00 2020 a linuxize
15 Tue May 5 09:00:00 2020 a linuxize
6 Tue May 5 09:00:00 2020 a linuxize
13 Mon May 4 23:08:00 2020 a linuxize
11 Wed Jul 1 10:00:00 2020 a linuxize
4 Tue May 5 09:00:00 2020 a linuxize
هنگامی که atq
به عنوان کاربر اداری فراخوانی شد ، مشاغل معلق همه کاربران را فهرست می کند.
حذف مشاغل در انتظار
برای حذف یک جاب در انتظار ، به عنوان مثال ، برای حذف کار با شماره 9 ، شما اجرا می کنید:
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
را در ترمینال خود اجرا کنید.
اولین نفر باشید که نظر ارسال میکنید