Како користити ат и групно на Линук-у за заказивање команди

Ако желите да закажете Линук посао који ће се десити само једном, црон је претерано. Ат породица команди је оно што вам треба! А ако желите да покренете процесе само када ваш систем има слободне ресурсе, можете користити батцх.

Како заказати Линук послове

Демон црон одржава списак послова које обавља у одређено време. Ови задаци и програми раде у позадини у заказано време. Ово вам нуди велику флексибилност за заказивање задатака које треба поновити. Без обзира да ли треба да покренете задатак једном на сат, у одређено време сваког дана или једном месечно или годишње, можете га подесити у црон-у.

Међутим, ово не помаже ако желите да закажете да се задатак покрене само једном. Наравно, можете га подесити у црон-у, али онда морате запамтити да се вратите и уклоните унос у цронтаб након што се задатак изврши, што је незгодно.

Са Линуком, ако се борите са проблемом, то је скоро гаранција да се и неко други борио са њим. На срећу, пошто оперативни системи слични Уник-у постоје тако дуго, постоји и одлична шанса да је неко створио решење за ваш проблем.

За проблем који је горе наведен, они имају, и он се зове.

Инсталирање ат команде

Морали смо да инсталирамо ат на Убунту 18.04 и Мањаро 18.1.0 (већ је био инсталиран на Федора 31).

Да бисте инсталирали на Убунту, користите ову команду:

sudo apt-get install at

Тхе

Након што се инсталација заврши, можете покренути ат демон са овом командом:

sudo systemctl enable --now atd.service

Тхе

На Мањаро-у, инсталирате на са овом командом:

sudo pacman -Sy at

Тхе

Након што се инсталација заврши, откуцајте ову команду да покренете ат демон:

sudo systemctl enable --now atd.service

Тхе

У било којој дистрибуцији, можете откуцати ову команду да бисте били сигурни да је атд демон покренут:

ps -e | grep atd

Тхе

Како интерактивно користити команду ат

Да бисте користили у, морате му доделити датум и време за покретање. Постоји велика флексибилност у начину на који можете да их напишете, што ћемо покрити касније у овом чланку.

Међутим, иако ћемо то користити интерактивно, морате унапред да наведете датум и време. Ако не укључите ништа у командну линију, или унесете нешто што није датум и време, ат одговара са „Изопачено време“, као што је приказано у наставку:

at
at banana

Неправилна употреба

Датуми и времена могу бити експлицитни или релативни. На пример, рецимо да желите да се наредба изврши за један минут. ат зна шта значи „сада“, тако да можете користити сада и додати му минут, на пример:

at now + 1 minute

Тхе

ат одштампа поруку и ат промпт и чека да унесете команде које желите да закажете. Прво, ипак, размотрите поруку, као што је приказано у наставку:

  Како покренути Гмаил на Линук радној површини са Вавебок-ом

Тхе

Саопштава вам при покретању инстанцу сх схелл-а и вољу покрените команде унутар тога. Ваше команде се неће извршавати у Басх љусци, која је компатибилна са сх шкољком, али има богатији скуп функција.

Ако ваше команде или скрипте покушају да користе функцију или могућност коју Басх пружа, али сх то не чини, неће успети.

Лако је тестирати да ли ће се ваше команде или скрипте покренути у сх. Користите команду сх да покренете сх шкољку:

sh

Тхе

Командна линија се мења у знак долара ($), и сада можете да покренете своје команде и проверите да ли исправно раде.

Да бисте се вратили на Басх шкољку, откуцајте команду за излаз:

exit

Нећете видети никакав стандардни излаз или поруке о грешци из команди. То је зато што се сх схелл покреће као позадински задатак и ради без икаквог интерфејса на екрану.

Сваки излаз из команди – добар или лош – шаље вам се е-поштом. Шаље се преко интерног система поште ономе ко покреће ат команду. То значи да морате да подесите и конфигуришете тај интерни систем е-поште.

Многи (већина) Линук система немају интерни систем е-поште јер ретко постоји потреба за њим. Они који обично користе систем попут Пошаљи пошту или постфикс. Ако ваш систем нема интерни систем е-поште, можете да имате скрипте да пишу у датотеке или да преусмерите излаз на датотеке да бисте додали евиденцију.

Ако команда не генерише стандардни излаз или поруку о грешци, ионако нећете добити е-пошту. Многе Линук команде указују на успех путем тишине, тако да у већини случајева нећете добити е-пошту.

Сада је време да унесете команду ат. За овај пример, користићемо малу датотеку скрипте под називом свееп.сх која брише датотеке *.бак, *.тмп и *.о. Откуцајте путању до команде, као што је приказано испод, а затим притисните Ентер.

Тхе

Појављује се још једна командна линија и можете додати онолико команди колико желите. Обично је згодније имати своје команде у једној скрипти и једноставно позвати ту скрипту изнутра на.

Притисните Цтрл+Д да бисте рекли да сте завршили са додавањем команди. на изложбама , што значи крај преноса. Речено вам је број посла и када је посао заказан за покретање, као што је приказано у наставку:

Потврда

Након што се посао изврши, откуцајте следеће да бисте проверили интерну пошту:

mail

Тхе

Ако нема поште, морате претпоставити успех. Наравно, у овом случају можете проверити и видети да ли су датотеке *.бак , *.тмп и *.о избрисане да бисте потврдили да је команда радила.

Унесите следеће да бисте поново покренули целу ствар:

at now + 1 minute

Тхе

После једног минута, откуцајте следеће да бисте поново проверили пошту:

mail

Тхе

Хеј, имамо пошту! Да бисте прочитали поруку број један, притисните 1, а затим притисните Ентер.

Примили смо е-поруку од ат јер су команде у скрипти генерисале поруке о грешци. У овом примеру није било датотека за брисање јер када смо претходно покренули скрипту, она их је уклонила.

Притисните Д+Ентер да избришете е-пошту и К+Ентер да затворите програм за пошту.

Формати датума и времена

Имате велику флексибилност када су у питању формати времена које можете користити. Ево неколико примера:

  Како да сачувате музичке ЦД-ове на свом Линук рачунару помоћу соковника за звук

Трчање у 11:00:

at 11:00 AM

Трчање сутра у 11:00:

at 11:00 AM tomorrow

Покреће се овог дана следеће недеље у 11:00:

at 11:00 AM next week

Покрени у ово време, овог дана, следеће недеље:

at next week

Трчање у 11:00 наредног петка:

at 11:00 AM next fri

Трчите у ово време следећег петка:

at next fri

Покрени се у 11:00 на овај датум, следећег месеца:

at 11:00 AM next month

Покрени се у 11:00 на одређени датум:

at 11:00 AM 3/15/2020

Трчите 30 минута од сада:

at now + 30 minutes

Трчи два сата од сада:

at now + 2 hours

Трчите сутра у ово време:

at tomorrow

Трчите у ово време у четвртак:

at thursday

Трчање у 12:00 часова:

at midnight

Трчање у 12:00 часова:

at noon

Ако сте Британац, можете чак заказати да се наредба покрене у време чаја (16:00):

at teatime

Гледајући ред послова

Можете да откуцате команду атк да видите ред заказаних послова, као што је приказано испод.

Излаз из

За сваку команду у реду, атк приказује следеће информације:

ИД посла
Заказан датум
Уговорено време
Ставите у ред у којем се посао налази. Редови су означени са „а“, „б“ итд. Уобичајени задаци са којима планирате у ред иду у ред „а“, док задаци које планирате са пакетом (о којима се говори касније у овом чланку) иду у ред „б“.
Особа која је заказала посао.

Коришћење ат на командној линији

Не морате да користите ат интерактивно; можете га користити и на команди. Ово олакшава употребу унутар скрипти.

Можете пренети команде у ат, овако:

echo "sh ~/sweep.sh" | at 08:45 AM

Ан

Посао се прихвата и заказује до у, а број посла и датум извршења се пријављују као и раније.

Коришћење ат са датотекама наредби

Такође можете да сачувате низ команди у датотеци, а затим да га проследите на ат. Ово може бити обична текстуална датотека са командама — не мора да буде извршна скрипта.

Можете користити опцију -ф (датотека) на следећи начин да проследите име датотеке на:

at now + 5 minutes -f clean.txt

Ан

Исти резултат можете постићи ако преусмерите датотеку на:

at now + 5 minutes 

Ан

Removing Scheduled Jobs from the Queue

To remove a scheduled job from the queue, you can use the atrm command. If you want to see the queue first to find the number of the job you want to remove, you can use atq . Then, use that job number with atrm, as shown below:

atq
atrm 11
atq

Како видети детаљан приказ послова

Као што смо раније споменули, можете заказати послове далеко у будућност. Понекад можете заборавити шта ће посао радити. Команда атк вам показује послове у реду, али не и оно што ће урадити. Ако желите да видите детаљан приказ посла, можете користити опцију -ц (мачка).

Прво ћемо користити атк да пронађемо број посла:

atq

Излаз из

Сада ћемо користити посао број 13 са опцијом -ц:

at -c 13

Тхе

Ево прегледа информација које добијамо о послу:

Први ред: Ово нам говори да ће се команде изводити под сх схелл-ом.
Други ред: Видимо да ће се команде покренути са ИД-ом корисника и групе од 1000. Ово су вредности за особу која је покренула команду ат.
Трећи ред: Особа која прима било какву е-пошту долази.
Четврти ред: Тхе Усер Маск је 22. Ово је маска која се користи за постављање подразумеваних дозвола за све датотеке креиране у овој сх сесији. Маска се одузима од 666, што нам даје 644 (октални еквивалент рв-р--р--).
Преостали подаци: Већина су променљиве окружења.

Излаз из

Резултати теста. Тест проверава да ли се може приступити извршном директоријуму. Ако не може, јавља се грешка и извршење посла се напушта.
Команде које треба извршити. Они су наведени и приказани су садржаји заказаних скрипти. Имајте на уму да иако је скрипта у нашем примеру изнад написана за покретање под Басх-ом, она ће и даље бити извршена у сх љусци.

Команда серије

Групна команда делује слично на команду, али са три битне разлике:

Команду серије можете користити само интерактивно.
Уместо да планирате послове за извршавање у одређено време, ви их додајете у ред чекања, а батцх команда их извршава када је просечно оптерећење система ниже од 1,5.
Због горе наведеног, никада не наводите датум и време са батцх командом.

Када користите батцх команду, позивате је по имену без параметара командне линије на следећи начин:

batch

Тхе

Затим додајте задатке баш као што бисте то учинили са командом ат.

Контролисање приступа ат команди

Датотеке ат.аллов и ат.дени контролишу ко може да користи ат породицу команди. Они се налазе у директоријуму /етц. Подразумевано постоји само датотека ат.дени и креира се када је ат инсталиран.

Ево како ови функционишу:

ат.дени: Наводи апликације и ентитете који не могу да користе ат за заказивање послова.
ат.аллов: листе ко може да користи ат за заказивање послова. Ако датотека ат.аллов не постоји, ат користи само датотеку ат.дени.

Подразумевано, свако може да користи ат. Ако желите да ограничите ко може да га користи, користите датотеку ат.аллов да наведете оне који то могу. Ово је лакше него додавати све који не могу да користе ат у датотеку ат.дени.

Ево како изгледа датотека ат.дени:

sudo less /etc/at.deny

Тхе

Датотека наводи компоненте оперативног система које не могу да користе на. Многи од њих су спречени да то ураде из безбедносних разлога, тако да не желите да уклоните ниједну из датотеке.

Сада ћемо уредити датотеку ат.аллов. Додаћемо Дејва и Мери, али никоме другом неће бити дозвољено да користи на.

Прво откуцавамо следеће:

sudo gedit /etc/at.allow

Тхе

У уређивачу додајемо два имена, као што је приказано испод, а затим сачувамо датотеку.

Ако неко други покуша да користи ат, биће му речено да нема дозволу. На пример, рецимо да корисник по имену Ерик укуца следеће:

at

Он би био одбијен, као што је приказано у наставку.

Опет, Ерик није у датотеци ат.дени. Чим некога ставите у датотеку ат.аллов, било ком- и свима осталима је одбијена дозвола за коришћење на.

Одлично за једнократне

Као што видите, и ат и батцх су идеални за задатке које треба да покренете само једном. Опет, као брз преглед:

Када треба да урадите нешто што није редован процес, закажите то на.
Ако желите да покренете задатак само када је оптерећење система довољно мало, користите батцх.