پاسخ به:دستورات لینوکس
چهارشنبه 8 شهریور 1391 1:56 AM
دستور at
دستور 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
زمان معکوس ((Countdown))
شاید بخاین کاری رو در مثلا 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- (( وی کوچک ))
اپشن 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-
اپشن 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-
نکته : به جای l- میتونین از atq هم استفاده کنین
این اپشن و 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 استفده کنین
ممکنه این فلدر وجود نداشته باشه میتونین بسازینش
** دارالولایه **