Posts tagged ‘tasks’

Основи на Линукс автоматизацията

Тази статия описва начина, по който могат да се изпълняват команди в определено време без да се налага на потребителя да ги въвежда. Програмите отговорни за това в линукс са cron и at.

Изпълняване на команди в точно определено време:

Ако нямате нужда командата да се изпълнява редовно може да използвате. Например може да ползвате :

at midnight

След като изпълните това ще си се покаже at командния ред( at>; ). Напишете командата, която искате да се изпълни. Например:

at>; who > who.out

Можете да въвеждате по една команда на ред. Когато сте готови натиснете Ctrl и D. Сега би трябвало да видте :

X         2006-05-26 00:00 a yourname

Където X е номера на вашата команда. Тази поредица от команди казва на вашата машина да изпълни в полунощ командата, която сте въвели.

Ако решите, че вече на искате да се изпълнява тази команда, може да използвате :

atrm X

X е номера на командата, която искате да не се изпълнява. atrm е командата, с която се премахват задачи зададени с at.

atrm поддържа много разновидности на въведеното време. Например може да ползвате: morning, noon, teatime, or midnight. „teatime“ също работи и изпълнява команди в  4 следобед!

Ако ви се налага да изпълнявате една команда всеки ден от месеца например, може тогава не е удобно всеки ден да назначавате да се изпълнява. Cron ви позволява да изпълнявате команди по този начин. Освен това има една много важна разлика между cron и at. at може да се изпълнява само от root, a cron от всички потребители.

Може да има различни настройки за всеки потребител на системата. Преди да започнете каквото и да било трябва да се уверите, че cron работи като демон.

За да можем да създаваме задачи, трябва да разберем как работи Cron. Най-добрия начин е чрез примери.

Първо, всяка задача за cron има следния синтаксис:

Minute (0-59) Hour (0-23) Day of Month (1-31) Month (1-12 or Jan-Dec) Day of Week (0-6 or Sun-Sat) Command

Не е нужно да се указва всяко поле. Ако искате да укажете всеки месец например може да използвате *. Това е пример как може да използване *.

* * * * 5 who

Това ще изпълнява командата who всяка минута, от всеки час, от всеки месец от за всеки петък. Използваме 5 на мястото на ден от седмицата.

5 * * * * who

Това ще изпълнява командата who на всяка пета минута, от всеки час, от всеки месец, за всеки ден от седмицата. Тук използваме 5 на мястото на минутите.

Ако искате някаква команда да се изпълнява всяка вечер в полунощ?

0 0 * * * whо

Това ще изпълнява командата who в полунощ, всеки месец, за всички дни от седмицата. Тук 0 има на мястото за часове и минути и представлява полунощ.

За повече гъвкавост може да използваме / (наклонена черта). Например:

*/15 * * * * who

Този ред ще изпълнява командата who всеки 15 минути, от всеки час, от всеки месец, за всички дни от седмицата. Използване /15 на мястото на минутите за да покажем колко често трябва да се изпълнява задачата.

Има и други опции, но за да не усложняваме ще ги пропуснем.

Създаване на автоматична задача

За да можете да задавате задачи на cron процеса трябва да използвате crontab. Тази команда се въвежда на командния ред. Като изпълните командата тя отваря редактора по подразбиране на вашата дистрибуция и ви дава възможност да редактирате всички задачи за вашия потребител. Може да въведете това, което искате да изпълнявате :

Първо изпълнявате командата с параметър -е (edit):

crontab -e

След това въвеждате задачата:

*/15 * * * * yourcommand

Заменете yourcommand, с това което искате да изпълнявате. След това запазете файла и излезте от редактора. Трябва да видите нещо от сорта на:

crontab: installing new crontab

Току що създадохте задача, която ще се изпълни от вашия потребител в уреченото време(на всеки 15 минути от всеки час, от всяка седмица, от всеки месец, за всеки ден от седмицата).

Изчакайте да се изпълни командата. Ако се пуснали crond с възможност да записва задачите, които изпълнява, може да проверите какво става така :

tail -f /var/log/cron

Може да редактирате задачата по същия начин, по който я създадохте, само че редактирате файла и запазвате. За да изтриете всички задачи може да използвате:

crontab -r

Ако искате да изтриете само някои:

crontab -е

След това изтривате редовете, които не са нужни вече и запазвате.

Possibly Related Posts: