خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش استفاده از دستور at در لینوکس
دستور at یک ابزار خط فرمان است که به شما امکان می دهد دستورات را در زمان خاصی اجرا کنید. کارها یا Job های ایجاد شده با at فقط یک بار اجرا می شوند.
بسته به توزیع لینوکس تان، ممکن است at در سیستم تان وجود داشته و یا نداشته باشد.
اگر at نصب نشده باشد، می توانید به راحتی آن را با استفاده از پکیج منیجر توزیع خود نصب کنید.
سپس با دستور زیر at را در سیستم لینوکس تان فعال کنید:
دستور at تاریخ و زمان(runtime) را که میخواهید کار را به عنوان پارامتر خط فرمان اجرا کنید و دستوری که باید از ورودی اجرا شود را میگیرد.
مثلا می خواهیم job ای ایجاد کنیم که ساعت 9 صبح اجرا شود:
هنگامی که Enter را فشار دهید، با خط فرمان at روبرو می شوید که اغلب
یک یا چند دستوری که می خواهید اجرا کنید را وارد کنید، مثلا:
وقتی وارد کردن دستورات تمام شد، Ctrl-D را فشرده تا از prompt خارج شوید و job را ذخیره کنید.
این دستور شماره کار و زمان و تاریخ اجرا را نمایش می دهد.
راههای دیگری نیز برای ارسال دستوری که میخواهید اجرا کنید، وجود دارد، مثلا از echo استفاده کنید و خروجی را با at در واقع pipe کنید.
گزینه دیگر استفاده از Here document است:
برای خواندن دستورات از یک فایل به جای وارد کردن آن، دستور را با گزینه f- در مسیر فایل فراخوانی کنید. به عنوان مثال، برای ایجاد job که اسکریپت home/khoshamoz/script.sh را اجرا می کند:
بهطور پیشفرض اگر دستور خروجی ای تولید کند، at یک ایمیل حاوی آن خروجی را پس از تکمیل کار برای کاربر ارسال میکند. برای اینکه ایمیلی ارسال نشود و از آن جلوگیری به عمل آورید، دستور at را با گزینه M- اجرا کنید.
از m- برای ارسال ایمیل حتی اگر خروجی وجود ندارد استفاده کنید:
At طیف وسیعی از مشخصات زمانی را می پذیرد. می توانید زمان، تاریخ و افزایش پیدا کردن از زمان جاری را تعیین کنید.
Time: برای تعیین زمان، از فرم HH:MM یا HHMM استفاده کنید. برای نشان دادن فرمت زمانی 12 ساعته از صبح یا بعد از ظهر بعد از Time استفاده کنید. همچنین می توانید از رشته هایی مانند now، midnight، noon یا teatime مثلا 16:00 عصر که وقت چای است استفاده کنید. در صورت سپری شدن زمان تعیین شده، job در روز بعد اجرا می شود.
Date: این دستور به شما امکان می دهد تا اجرای job را در یک تاریخ معین زمان بندی کنید. Date را می توان با استفاده از نام ماه و به دنبال آن روز و سال اختیاری مشخص کرد. می توانید از رشته هایی مانند today، tomorrow یا weekday استفاده کنید. تاریخ را میتوان با استفاده از فرمت های زیر هم نشان داد:
Increment: دستور At همچنین افزایشهایی را در فرمت now + count واحد زمانی میپذیرد، count یک عدد است و واحد زمان میتواند یکی از رشتههای weeks، days، hours و یا minutes باشد.
Time، date و Increment را می توان با هم ترکیب کرد. برای مثال:
یک کار را برای یکشنبه آینده در زمان 10 دقیقه بعدتر یا دیرتر از زمان جاری برنامه ریزی کنید:
یک کار را برای اجرا در ساعت 1pm دو روز fun برنامه ریزی و Schedule کنید:
یک job را برای اجرا در ساعت 12:30 21 اکتبر 2022 برنامه ریزی کنید:
یک کار را برای اجرا شدن به مدت یک ساعت از هم اکنون برنامه ریزی کنید:
همچنین می توانید با استفاده از گزینه t- زمان و تاریخ را در فرمت زیر مشخص کنید:
مثلا:
به طور پیش فرض، job های ایجاد شده با at در صفی با نام a و کارهای ایجاد شده با batch در صف b زمان بندی می شوند. کوئریها میتوانند نامی از a تا z و A تا Z داشته باشند. صفهای با حروف کوچک الویت به حروف بزرگ دارند.
با گزینه q- می توانید صف را مشخص کنید. به عنوان مثال، برای تنظیم یک کار در صف L، باید دستور را به صورت اجرا کنید:
برای فهرست کردن کارهای معلق کاربر، دستور atq یا at -l را اجرا کنید:
خروجی همه کارها را در هر خط لیست می کند. هر خط شامل شماره کار، تاریخ، زمان، حرف queue یا صف و نام کاربری است.
هنگامی که atq به عنوان یک کاربر ادمین فراخوانی و اجرا می شود، کارهای معلق همه کاربران را لیست می کند.
برای حذف یک job در حال انتظار یا pending ، دستور atrm یا r- را به دنبال شماره job اجرا کنید. به عنوان مثال، برای حذف کار با شماره 9، دستور زیر را اجرا کنید:
فایل های /etc/at.deny و /etc/at.allow به شما این امکان را می دهند که کنترل کنید کدام کاربران می توانند با دستور at یا batch کار یا job ایجاد کنند. فایل ها شامل لیستی از username های، یک نام کاربری در هر خط است.
به طور پیش فرض، فقط فایل /etc/at.deny وجود دارد و خالی است، به این معنی که همه کاربران می توانند از دستور at استفاده کنند. اگر می خواهید مجوز یک کاربر خاص را رد کنید، نام کاربری را به این فایل اضافه کنید. اگر فایل /etc/at.allow وجود داشته باشد فقط کاربرانی که در این فایل لیست شده اند می توانند از دستور at استفاده کنند. اگر هیچ یک از فایل ها وجود نداشته باشد، فقط کاربرانی که دارای امتیازات ادمین هستند می توانند از دستور at استفاده کنند.
بسته به توزیع لینوکس تان، ممکن است at در سیستم تان وجود داشته و یا نداشته باشد.
اگر at نصب نشده باشد، می توانید به راحتی آن را با استفاده از پکیج منیجر توزیع خود نصب کنید.
نصب at در اوبونتو و دبیان
به منظور نصب at در Ubuntu و Debian دو دستور زیر را در Terminal اجرا کنید:sudo apt update
sudo apt install at
نصب At در CentOS و Fedora
sudo yum install at
سپس با دستور زیر at را در سیستم لینوکس تان فعال کنید:
sudo systemctl enable --now atd
How to Use the at Command
Syntax ساده دستور at بصورت زیر است:at [OPTION...] runtime
دستور at تاریخ و زمان(runtime) را که میخواهید کار را به عنوان پارامتر خط فرمان اجرا کنید و دستوری که باید از ورودی اجرا شود را میگیرد.
مثلا می خواهیم job ای ایجاد کنیم که ساعت 9 صبح اجرا شود:
at 09:00
هنگامی که Enter را فشار دهید، با خط فرمان at روبرو می شوید که اغلب
warning: commands will be executed using /bin/sh
at>
یک یا چند دستوری که می خواهید اجرا کنید را وارد کنید، مثلا:
tar -xf /home/khoshamoz/file.tar.gz
وقتی وارد کردن دستورات تمام شد، Ctrl-D را فشرده تا از prompt خارج شوید و job را ذخیره کنید.
این دستور شماره کار و زمان و تاریخ اجرا را نمایش می دهد.
راههای دیگری نیز برای ارسال دستوری که میخواهید اجرا کنید، وجود دارد، مثلا از echo استفاده کنید و خروجی را با at در واقع pipe کنید.
echo "command_to_be_run" | at 09:00
گزینه دیگر استفاده از Here document است:
at 09:00 <command_to_be_run END
برای خواندن دستورات از یک فایل به جای وارد کردن آن، دستور را با گزینه f- در مسیر فایل فراخوانی کنید. به عنوان مثال، برای ایجاد job که اسکریپت home/khoshamoz/script.sh را اجرا می کند:
at 09:00 -f /home/khoshamoz/script.sh
بهطور پیشفرض اگر دستور خروجی ای تولید کند، at یک ایمیل حاوی آن خروجی را پس از تکمیل کار برای کاربر ارسال میکند. برای اینکه ایمیلی ارسال نشود و از آن جلوگیری به عمل آورید، دستور at را با گزینه M- اجرا کنید.
at 09:00 -M
از m- برای ارسال ایمیل حتی اگر خروجی وجود ندارد استفاده کنید:
at 09:00 -m
batch Command
Batch یا b- وقتی که load level یا سطح لود سیستم اجازه می دهد، کارها را زمان بندی کرده و آنها را در یک batch queue اجرا می کند. به طور پیش فرض، کارها زمانی اجرا می شوند که میانگین load کردن سیستم کمتر از 1.5 باشد. هنگام فراخوانی atd می توان مقدار load را مشخص کرد. اگر میانگین load سیستم بالاتر از مقدار مشخص شده باشد، کارها در صف منتظر می مانند. برای ایجاد یک کار با batch دستوراتی را که میخواهید اجرا کنید را مشخص کنید:echo "command_to_be_run" | batch
At طیف وسیعی از مشخصات زمانی را می پذیرد. می توانید زمان، تاریخ و افزایش پیدا کردن از زمان جاری را تعیین کنید.
Time: برای تعیین زمان، از فرم HH:MM یا HHMM استفاده کنید. برای نشان دادن فرمت زمانی 12 ساعته از صبح یا بعد از ظهر بعد از Time استفاده کنید. همچنین می توانید از رشته هایی مانند now، midnight، noon یا teatime مثلا 16:00 عصر که وقت چای است استفاده کنید. در صورت سپری شدن زمان تعیین شده، job در روز بعد اجرا می شود.
Date: این دستور به شما امکان می دهد تا اجرای job را در یک تاریخ معین زمان بندی کنید. Date را می توان با استفاده از نام ماه و به دنبال آن روز و سال اختیاری مشخص کرد. می توانید از رشته هایی مانند today، tomorrow یا weekday استفاده کنید. تاریخ را میتوان با استفاده از فرمت های زیر هم نشان داد:
MMDD[CC]YY
MM/DD/[CC]YY
DD.MM.[CC]YY
[CC]YY-MM-DD
Increment: دستور At همچنین افزایشهایی را در فرمت now + count واحد زمانی میپذیرد، count یک عدد است و واحد زمان میتواند یکی از رشتههای weeks، days، hours و یا minutes باشد.
Time، date و Increment را می توان با هم ترکیب کرد. برای مثال:
یک کار را برای یکشنبه آینده در زمان 10 دقیقه بعدتر یا دیرتر از زمان جاری برنامه ریزی کنید:
at sunday +10 minutes
یک کار را برای اجرا در ساعت 1pm دو روز fun برنامه ریزی و Schedule کنید:
at 1pm + 2 days
یک job را برای اجرا در ساعت 12:30 21 اکتبر 2022 برنامه ریزی کنید:
at 12:30 102122
یک کار را برای اجرا شدن به مدت یک ساعت از هم اکنون برنامه ریزی کنید:
at now +1 hours
همچنین می توانید با استفاده از گزینه t- زمان و تاریخ را در فرمت زیر مشخص کنید:
[[CC]YY]MMDDhhmm[.ss]
مثلا:
at -t 202205111321.32
به طور پیش فرض، job های ایجاد شده با at در صفی با نام a و کارهای ایجاد شده با batch در صف b زمان بندی می شوند. کوئریها میتوانند نامی از a تا z و A تا Z داشته باشند. صفهای با حروف کوچک الویت به حروف بزرگ دارند.
با گزینه q- می توانید صف را مشخص کنید. به عنوان مثال، برای تنظیم یک کار در صف L، باید دستور را به صورت اجرا کنید:
at monday +2 hours -q L
برای فهرست کردن کارهای معلق کاربر، دستور atq یا at -l را اجرا کنید:
atq
خروجی همه کارها را در هر خط لیست می کند. هر خط شامل شماره کار، تاریخ، زمان، حرف queue یا صف و نام کاربری است.
9 Tue May 5 12:22:00 2020 a khoshamoz
12 Wed Oct 21 12:30:00 2020 a khoshamoz
15 Tue May 5 09:00:00 2020 a khoshamoz
6 Tue May 5 09:00:00 2020 a khoshamoz
13 Mon May 4 23:08:00 2020 a khoshamoz
11 Wed Jul 1 10:00:00 2020 a khoshamoz
4 Tue May 5 09:00:00 2020 a khoshamoz
هنگامی که atq به عنوان یک کاربر ادمین فراخوانی و اجرا می شود، کارهای معلق همه کاربران را لیست می کند.
برای حذف یک job در حال انتظار یا pending ، دستور atrm یا r- را به دنبال شماره job اجرا کنید. به عنوان مثال، برای حذف کار با شماره 9، دستور زیر را اجرا کنید:
atrm 9
فایل های /etc/at.deny و /etc/at.allow به شما این امکان را می دهند که کنترل کنید کدام کاربران می توانند با دستور at یا batch کار یا job ایجاد کنند. فایل ها شامل لیستی از username های، یک نام کاربری در هر خط است.
به طور پیش فرض، فقط فایل /etc/at.deny وجود دارد و خالی است، به این معنی که همه کاربران می توانند از دستور at استفاده کنند. اگر می خواهید مجوز یک کاربر خاص را رد کنید، نام کاربری را به این فایل اضافه کنید. اگر فایل /etc/at.allow وجود داشته باشد فقط کاربرانی که در این فایل لیست شده اند می توانند از دستور at استفاده کنند. اگر هیچ یک از فایل ها وجود نداشته باشد، فقط کاربرانی که دارای امتیازات ادمین هستند می توانند از دستور at استفاده کنند.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: