| AT(1) | General Commands Manual | AT(1) |
نام (NAME)
at, batch, atq, atrm - زمانبندی و اجرای دستورات در یک زمان مشخص در آینده
خلاصه دستور (SYNOPSIS)
at [-V] [-q queue] [-f
file] [-u username] [-mMlv] timespec ...
at [-V] [-q queue] [-f file]
[-u username] [-mMkv] [-t time]
at -c job [...]
at [-V] -l [-o timeformat] [job ...]
atq [-V] [-q queue] [-o timeformat]
[job ...]
at [-rd] job [...]
atrm [-V] job [...]
batch
at -b
توضیحات (DESCRIPTION)
دستورات at و batch دستورات را از ورودی استاندارد یا یک فایل مشخص میخوانند تا در زمانی دیگر با استفاده از /bin/sh اجرا شوند.
- at
- دستورات را در یک زمان مشخص اجرا میکند.
- atq
- کارهای معلق کاربر را فهرست میکند، مگر اینکه کاربر مدیر سیستم (کاربر ارشد) باشد؛ که در آن صورت، کارهای همه افراد فهرست میشود. قالب خطوط خروجی (یک خط برای هر کار) به این صورت است: شماره کار، تاریخ، ساعت، صف و نام کاربری.
- atrm
- کارهایی را که با شماره کارشان مشخص شدهاند حذف میکند.
- batch
- دستورات را زمانی اجرا میکند که سطوح بار سیستم اجازه دهد؛ به عبارت دیگر، زمانی که میانگین بار سیستم (load average) به زیر 0.8 یا مقدار مشخصشده در هنگام فراخوانی atd کاهش یابد.
دستور at امکان تعیین زمان به شیوههای نسبتاً پیچیده را فراهم میکند و استاندارد POSIX.2 را گسترش میدهد. این دستور زمانهایی به فرم HH:MM را برای اجرای یک کار در زمان مشخصی از روز میپذیرد. (اگر آن زمان سپری شده باشد، روز بعد در نظر گرفته میشود.) شما همچنین میتوانید midnight، noon یا teatime (ساعت ۴ عصر) را مشخص کنید و میتوانید زمان روز را با پسوند AM یا PM برای اجرا در صبح یا عصر همراه کنید. همچنین میتوانید تعیین کنید که کار در چه روزی اجرا شود؛ با دادن تاریخی به فرم month-name day به همراه یک year اختیاری، یا دادن تاریخی به فرم MMDD[CC]YY، MM/DD/[CC]YY، DD.MM.[CC]YY یا [CC]YY-MM-DD. مشخص کردن تاریخ باید پس از مشخص کردن زمان روز بیاید. شما همچنین میتوانید زمانهایی مانند now + count time-units را مشخص کنید، که در آن واحدهای زمانی میتوانند minutes، hours، days یا weeks باشند و میتوانید با افزودن پسوند today به زمان، به at بگویید که کار را امروز اجرا کند و با افزودن پسوند tomorrow بگویید کار را فردا اجرا کند.
برای مثال، برای اجرای یک کار در ساعت ۴ بعدازظهر سه روز دیگر، دستور at 4pm + 3 days را اجرا میکنید؛ برای اجرای یک کار در ساعت ۱۰:۰۰ صبح در ۳۱ ژوئیه، دستور at 10am Jul 31 و برای اجرای یک کار در ساعت ۱ بامداد فردا، دستور at 1am tomorrow را وارد میکنید.
اگر مشخص کنید که کاری دقیقاً در زمان و تاریخی در گذشته اجرا شود، کار در سریعترین زمان ممکن اجرا خواهد شد. برای مثال، اگر ساعت ۸ شب باشد و شما دستور at 6pm today را اجرا کنید، کار به احتمال زیاد در ساعت ۸:۰۵ شب اجرا خواهد شد.
تعریف مشخصات زمان را میتوانید در /usr/share/doc/at/timespec بیابید.
برای هر دو دستور at و batch، دستورات از ورودی استاندارد یا فایل مشخصشده با گزینه -f خوانده و اجرا میشوند. دایرکتوری کاری، متغیرهای محیطی (به جز متغیرهای BASH_VERSINFO، DISPLAY، EUID، GROUPS، SHELLOPTS، TERM، UID و _) و umask از زمان فراخوانی حفظ میشوند.
از آنجا که at در حال حاضر به عنوان یک برنامه setuid پیادهسازی شده است، سایر متغیرهای محیطی (مانند LD_LIBRARY_PATH یا LD_PRELOAD) نیز صادر نمیشوند. این موضوع ممکن است در آینده تغییر کند. به عنوان یک راهکار موقت، این متغیرها را به صراحت در کار خود مقداردهی کنید.
یک دستور at یا batch که از یک شل su(1) فراخوانی شود، شناسه کاربری (userid) فعلی را حفظ خواهد کرد. خروجی استاندارد و خطای استاندارد دستورات در صورت وجود، برای کاربر ایمیل خواهد شد. ایمیل با استفاده از دستور /usr/bin/sendmail ارسال خواهد شد. اگر at از یک شل su(1) اجرا شود، مالک شل ورود (login shell) ایمیل را دریافت خواهد کرد.
مدیر سیستم (کاربر ارشد) در هر صورت میتواند از این دستورات استفاده کند. برای سایر کاربران، دسترسی استفاده از at توسط فایلهای /etc/at.allow و /etc/at.deny تعیین میشود. برای جزئیات به at.allow(5) مراجعه کنید.
گزینهها (OPTIONS)
- -V
- شماره نسخه را در خطای استاندارد چاپ کرده و با موفقیت خارج میشود.
- -q queue
- از صف مشخصشده استفاده میکند. تعیین صف شامل یک حرف تکنویسهای است؛ شناسههای مجاز صف از a تا z و از A تا Z هستند. صف a صف پیشفرض برای at و صف b برای batch است. صفهایی با حروف بالاتر با اولویت کمتر (nice بیشتر) اجرا میشوند. صف ویژه "=" برای کارهایی که در حال حاضر در حال اجرا هستند رزرو شده است.
اگر کاری به صفی که با یک حرف بزرگ مشخص شده ارسال شود، با آن کار طوری رفتار میشود که گویی در زمان اجرای کار به batch ارسال شده است. پس از فرارسیدن زمان، قوانین پردازش دستهای با توجه به میانگین بار سیستم (load average) اعمال میشوند. اگر به atq صف خاصی داده شود، تنها کارهای معلق در آن صف را نشان خواهد داد.
- -m
- هنگامی که کار به پایان رسید، حتی اگر خروجی نداشته باشد، به کاربر ایمیل ارسال میکند.
- -M
- هرگز به کاربر ایمیل ارسال نمیکند.
- -u username
- به جای کاربر فعلی، به username ایمیل ارسال میکند.
- -f file
- کار را به جای ورودی استاندارد از file میخواند.
- -t time
- کار را در زمان time که در قالب [[CC]YY]MMDDhhmm[.ss] داده شده است اجرا میکند.
- -l
- یک نام مستعار برای atq است.
- -r
- یک نام مستعار برای atrm است.
- -d
- یک نام مستعار برای atrm است.
- -b
- یک نام مستعار برای batch است.
- -v
- پیش از خواندن کار، زمانی را که کار اجرا خواهد شد نشان میدهد.
زمانهای نمایشدادهشده در قالب "Thu Feb 20 14:50:00 1997" خواهند بود.
فایلها (FILES)
/var/spool/atd
/var/spool/atd
/proc/loadavg
/var/run/utmp
/etc/at.allow
/etc/at.deny
همچنین ببینید (SEE ALSO)
at.allow(5), at.deny(5), atd(8), cron(1), nice(1), sh(1), umask(2).
اشکالات (BUGS)
عملکرد صحیح batch در لینوکس به وجود یک دایرکتوری از نوع proc- که روی /proc سوار (mount) شده باشد بستگی دارد.
اگر فایل /var/run/utmp در دسترس نباشد یا خراب شده باشد، یا اگر کاربر در زمان فراخوانی at به سیستم وارد نشده باشد، ایمیل به شناسه کاربری موجود در متغیر محیطی LOGNAME ارسال میشود. اگر این متغیر تعریف نشده یا خالی باشد، شناسه کاربری فعلی در نظر گرفته میشود.
دستورات at و batch به شکلی که در حال حاضر پیادهسازی شدهاند، برای شرایطی که کاربران بر سر منابع با یکدیگر رقابت میکنند مناسب نیستند. اگر این موضوع در سیستم شما صدق میکند، ممکن است بخواهید یک سیستم دستهای (batch) دیگر مانند nqs را در نظر بگیرید.
نویسندگان (AUTHORS)
برنامه at عمدتاً توسط Thomas Koenig نوشته شده است.
| 2009-11-14 |