دستور at برای زمان بندی کارها , مثلا اجرا شدن یک دستور در زمان خاصی یا اجرا شدن یک اسکریپت در زمان خاصی استفاده میشود 
دستور مشابه دیگه ای مثل دستور at هستش که اسمش cron هستش 
اموزش cron :
CronHowto - Iranian Ubuntu Team Wiki
یکی از فرق های مهم cron و at در این هست که cron قابلیت تکرار شدن رو داره (( مثلا هر روز در زمان خاصی کار خاصی انجام بشه)) اما at کاری که بهش دادیم رو یک بار انجام میدهد



کد:

at [-V] [-q queue] [-f file] [-mldv] timespec... at [-V] [-q queue] [-f file] [-mkdv] [-t time] 
یا به شکل ساده تر 

کد:

at time date 
تعیین زمان در at 

تنها قسمت مهم دستور at تعیین زمان اجرا شدن دستور هستش
در دستور at وقتی که دستور به همراه زمان معیین شده زدین یک صفه باز میشه که به صورت زیر هستش در اون صفه میتونین دستور مورد نظر خودتونو بنویسین و سپس کلید ترکیبیCtrl+D رو بزنین تا اجرا بشه 

کد:

alieblice@ubuntu:~$ at 12:00 tomorrow + 3 min warning: commands will be executed using /bin/sh at> ls > ~/Desktop/ls.txt at> حالا کنترل= دی رو بزنین <EOT> job 73 at Fri Jul 10 12:03:00 2009 alieblice@ubuntu:~$ 
جزع به جزع دستور بالا در پایین تر توضیح داده شده 



اگه فرض کنیم ساعت وتاریخ هم اکنون 

کد:

10:00 AM Tuesday, September 18, 2001 
باشد ,, هر کدوم از زمان یندی های زیر معنیشونو جلوشون نوشته 

کد:

at noon = 12:00 PM September 18, 2001 at midnight = 12:00 AM September 19, 2001 at teatime = 4:00 PM September 18, 2001 at tomorrow = 10:00 AM September 19, 2001 at noon tomorrow = 12:00 PM September 19, 2001 at next week = 10:00 AM September 25, 2001 
همون طور که در بالا میبینین بعضی کلمات معنی خاصی دارن مثلا noon یعنی ساعت 12:00 pm و کلمات به صورت ترکیبی هم میتونن استفاده بشن مثلا 

کد:

at noon tomorrow 
یعنی فردا ((روز بعد از امروز )) ساعت 12:00 pm


کد:

at next week 
اگه امروز سه شنبه ساعت 10 صبح باشه دستور بالا میگه سه شنبه ساعت 10 صبح کار انجام بشه 




برای هر روز از هفته یک کلمه داریم که میتونین تمام حروفشون رو به صورت بزرگ یا کوچک بنویسین فرقی نداره البته اسم کوچکش هم با حروف کوچک یا بزرگ میتونین بنویسین فرقی نداره 

کد:

day_of_week : SUN | MON | TUE | WED | THU | FRI | SAT 
از چپ به راست به ترتیب بالا یعنی

کد:

Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | 
چند مثال : 

کد:

at next monday = 10:00 AM September 24, 2001 
اگه الان ساعت 10 صبح باشه یک شنبه بعدی همین ساعت دستور اجرا میشه 


کد:

at 04:46 am fri 
روز جمعه ساعت 4:46 دقیقه صبح کارو انجام میده 





ماه ها هم مثل روز های هفته برای خودشون اختصار دارن که به شکل زیر هستش
کد:

month_name : JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC 
چند مثال

کد:

at 2:30 PM Sept 21 
ساعت 2:5 ظهر در تاریخ 21 سپتامر


کد:

at noon jul 24 

اگه فرض کنیم هم اکنون ساعت و تاریخ 

کد:

10:00 AM Tuesday, September 18, 2001 
کد:

at 9:00 AM = 9:00 AM September 19, 2001 at 2:30 PM = 2:30 PM September 18, 2001 at 1430 = 2:30 PM September 18, 2001 at 2:30 PM tomorrow = 2:30 PM September 19, 2001 at 2:30 PM next month = 2:30 PM October 18, 2001 at 2:30 PM Fri = 2:30 PM September 21, 2001 at 2:30 PM Sept 21 = 2:30 PM September 21, 2001 at 2:30 PM 9/21/2010 = 2:30 PM September 21, 2010 at 5 pm Friday = خودتون حدث بزنین 
نکته : بعد از next مقادیری که بر اثاث واحد های زیر باشه میتونه بیاد 
کد:

* minute[s] * hour[s] * day[s] * week[s] * month[s] * year[s] 

 : 
در 

کد:

at 1430 = 2:30 PM September 18, 2001 
از am و pm نمیتونین استفاده کنین باید زمان رو به صورت 24 ساعته بزنین یعنی مثلا به جای 2 ظهر بزنین 14 





شاید بخاین کاری رو در مثلا 5 دقیقه اینده انجام بدین یا مثلا در فردا پنج دقیقه بعد از ساعت 12 ظهر خوب این 5 دقیقه ها رو باید به صورت زیر بنویسین 
نکته : مقاکد:
مفادیری که بعد از بعلاوه می ایند بر اثاث یکی از این واحد های زیر میتونه باشه 
کد:

* minute[s] * hour[s] * day[s] * week[s] * month[s] * year[s] 
مثلا برای این که کاری رو در 25 دقیقه اینده از هم اکنون انجام بدین دستورو این جوری بنویسین 

کد:

at now +15 min 
به جای min میتونین minutes یا minute هم بزارین 


برای این که کاری رو فردا 3 ساعت بعد از ساعت 12 انجام بدین دستورو این شکلی بنویسین 
کد:

at noon tomorrow +3 hours یا at 12:00 pm tomorrow +3 hours 
جند مثال از این قسمت 
اگه فرض کنیم زمان و تاریخ هم اکنون 

کد:

10:00 AM Tuesday, September 18, 2001 
معنی هر مثال جلوش نوشته شده 
کد:

at now + 30 minutes = 10:30 AM September 18, 2001 at now + 1 hour = 11:00 AM September 18, 2001 at now + 2 days = 10:00 AM September 20, 2001 at 4 PM + 2 days = 4:00 PM September 20, 2001 at now + 3 weeks = 10:00 AM October 9, 2001 at now + 4 months = 10:00 AM January 18, 2002 at now + 5 years = 10:00 AM September 18, 2007 


روش کار به این صورت هستش که شما اول دستور at رو به همراه زمان اجرا شدنش مینویسین و سپس برای شما یک صفه باز میشه که در اون جا میتونین دستور مورد نظرتونو بنویسین و برای این که کار خود را ذخیره کنین کلید ترکیبی Ctrl+D رو بزنین 

در دستور زیر کاری رو فردا 3 دقیقه بعد از ساعت 12 انجام میدهد 
کد:

alieblice@ubuntu:~$ at 12:00 tomorrow + 3 min warning: commands will be executed using /bin/sh at> ls > ~/Desktop/ls.txt at> <EOT> job 73 at Fri Jul 10 12:03:00 2009 alieblice@ubuntu:~$ 
دستور بالا رو میتونین به صورت زیر هم بنویسین که فکر کنم راحت تر باشه 
کد:

alieblice@ubuntu:~$ echo ls > ~/Desktop/ls.txt | at 12:00 tomorrow + 3 min warning: commands will be executed using /bin/sh job 74 at Fri Jul 10 12:03:00 2009 alieblice@ubuntu:~$ 



اپشن v- برای نشون دادن زمان اجرا شدن دستور در همان اول کار یعنی قبل از امدنه صفحه ای که شما توش دستورو مینویسین 
کد:

alieblice@ubuntu:~$ at -v noon jul 24 + 10 min Fri Jul 24 1200 2009 warning: commands will be executed using /bin/sh at> cp -r /home/alielbice /var/backup/alieblice-bkp at> <EOT> job 77 at Fri Jul 24 1200 2009 alieblice@ubuntu:~$ 




اپشن f- برای دادن لیستی از کار هایی که میخایم انجام بدیم از طریق یک فایل متنی هستش 
کد:

alieblice@ubuntu:~$ cat myjobs.txt /home/sathiya/calculate-space.sh /path/to/a/shell-script /path/to/any/command/or/script 
کد:

alieblice@ubuntu:~$ at -f /home/alieblice/jobs.txt now +1 hour warning: commands will be executed using /bin/sh job 79 at Thu Jul 9 08:07:00 2009 alieblice@ubuntu:~$ 



نکته : به جای l- میتونین از هم استفاده کنین 
این اپشن و atq برای لیست کردن کار هایی که هنوز انجام نشده اند و در انتظار رسیدن زمان تعیین شده هستن استفاده میشه 
کد:

alieblice@ubuntu:~$ at -l 79 Thu Jul 9 08:07:00 2009 a alieblice 77 Fri Jul 24 1200 2009 a alieblice 73 Fri Jul 10 12:03:00 2009 a alieblice 74 Fri Jul 10 12:03:00 2009 a alieblice alieblice@ubuntu:~$ 
همون طور که میبینین هر کار برای خودش عددی دارد که از اون برای پاک کردن و دیدن محتویات اون استفاده میشه 



از اپشن d- یا atrm میتونین استفاده کنین 
برای این کار نیاز به شماره اون کار دارین که میتونین با لیست کردنشون شمارشونو یدست بیارین 
مثلا در زیر کار به شماره 77 رو پاک میکنیم 
کد:

alieblice@ubuntu:~$ atq 79 Thu Jul 9 08:07:00 2009 a alieblice 77 Fri Jul 24 1200 2009 a alieblice 73 Fri Jul 10 12:03:00 2009 a alieblice 74 Fri Jul 10 12:03:00 2009 a alieblice alieblice@ubuntu:~$ alieblice@ubuntu:~$ at -d 77 alieblice@ubuntu:~$ alieblice@ubuntu:~$ at -l 79 Thu Jul 9 08:07:00 2009 a alieblice 73 Fri Jul 10 12:03:00 2009 a alieblice 74 Fri Jul 10 12:03:00 2009 a alieblice alieblice@ubuntu:~$ 


برای این کار از اپشن c- ((سی کوچک )) استفاده کنین 

خروجیش زیاد بود برای همین فقط خود دستور رو میزارم 
کد:

alieblice@ubuntu:~$ at -l 73 Fri Jul 10 12:03:00 2009 a alieblice 74 Fri Jul 10 12:03:00 2009 a alieblice alieblice@ubuntu:~$ alieblice@ubuntu:~$ at -c 73 #!/bin/sh # atrun uid=1000 gid=1000 # mail alieblice 0 umask 22 خروجی کامل نیست 
محدود کردن دسترسی به at 

برای این که دسترسی کاربران رو به دستور at ببندین یا دسترسی رو برای یک سری کار بر خاص باز بگذارین میتونین از 2 فایل زیر استفاده کنین 
سیستم اول فلدر at.allow رو چک میکنه اگه وجود نداشت میره سراغ at.deny 
/etc/at.allow
/etc/at.deny
مثلا اگه کاربر tia رو به فایل at.deny اضافه کنین موقعی که کاربر tia بخاد از at استفاده کنه این اررور رو میگیره 
کد:

tia@ubuntu:~$ at 12:00 pm You do not have permission to use at. tia@ubuntu:~$ 
اگرم بخاین که at رو برای فقط کاربرای مشخصی باز بگذارین از فلدر at.allow استفده کنین 
ممکنه این فلدر وجود نداشته باشه میتونین بسازینش