crontab








     crontab − змінює файл завдань crontab користувача (Dillon’s Cron)




     crontab файл [−u користувач] − поміняє  crontab  на  те,  що вказано у
файлі

crontab − [−u користувач] − поміняє crontab,  читаючи  зі стандартного вводу

crontab −l [користувач] − перелічить завдання з crontab користувача

crontab −e [користувач] − розпочне редагування  crontab користувача

crontab −d [користувач] − вилучить crontab користувача

crontab −c тека − вкаже теку з файлами crontab




     Програма  працює з файлом завдань для crond(8), (ми будемо називати його
crontab, не виділяючи  жирним  шрифтом),  що належить  певному  користувачеві.
Тільки надкористувач має доступ  до  файлу  завдань  відмінного  користувача
і/або відмінного  каталогу  з crontab−файлами. Як правило, опція −e
використовується для редагування вашого файлу  завдань.  crontab  використає
/usr/bin/vi  або редактор, вказаний у змінній середовища для цього.

На відміну від інших crond і crontab, ця програма  crontab не  намагається
здійснити все що завгодно. Скрипт оболонки занадто здібний до зміни середовища,
ніж cron і я не  бачу змісту  використання  користувацької оболонки з passwd для
команд   cron,    особливо    у    спеціальних    випадках crontab−файлів
не−користувачів, таких як UUCP, наприклад.  Ця  програма   crontab   обмежується
лише   /bin/sh   зі встановленими  лише трьома змінними середовища: USER, HOME і
SHELL.

crond автоматично виявляє зміни часу. Зміни індексів  часу у  зворотньому
напрямку менші за одну годину не запустять команди crontab, що вже мали місця,
знову.  Зміни  часу  у майбутньому,   менші   за   одну   годину,   призведе
до одноразового  виконання  додаткових  команд.  Зміни   часу більші за годину
назад або вперед, викличуть синхронізацію crond і додаткових команд не
виконуватиметься  наразі.  Не робитиметься  спроба  відновити  команди,  що  не
вдалося виконати   з−за   рестарту   системи    і    команди    не
перезапускаються,   якщо  попередньо−запущена  команда  не закінчила свою дію.
Так  прикладом,  якщо  у  вас  наявна команда   ‘sleep   70’,  яка  повинна
виконуватись  кожну хвилину, cron зможе в змозі буде запускати її лишень кожні
дві  хвилини.  Якщо  вам не подобається ця риса, ви завжди можете виконувати
команди у фоновому режимі, якщо добавите ‘&’ наприкінці.

Формат  crontab−файлів дещо схожий на той, що вживається з vixiecron, але без
складніших  можливостей.  Окремі  поля можуть  утримувати  час,  діапазон  часу,
діапазон часу з фактором пропуску, символічні діапазони  з  днем  тижня  і









                                       ‐2‐


місяцем  року  і  додаткові  проміжні діапазони, розділені комами.  Порожні
рядки або рядки, що  починаються  з  гешу (#)  ігноруються. Якщо ви одночасно
вказуєте день місяця і день  тижня,  результат  ефективно  пройде  через
логічне АБО...  цей  пункт  з  crontab виконуватиметься у вказаний день тижня і
вказаний день місяця.

      # MIN HOUR DAY MONTH DAYOFWEEK   COMMAND
      # о 6:10 ранку кожного дня
      10 6 * * * date

      # кожні дві години після кожної години
      0 */2 * * * date

      # кожні дві години з 23:00 по 7:00 і о 8−ій годині
      0 23−7/2,8 * * * date

      # о 11:00 ранку кожного 4−го числа місяця і кожного
      # понеділку, вівторку і середи
      0 11 4 * mon−wed date

      # о 4−ій ранку 1−го Січня
      0 4 1 jan * date

      # кожної години, весь вивід доточується до журналу
      0 * * * * date >>/var/log/messages 2>&1

Командна частина рядка виконується як /bin/sh  −c  команда може складатися з
будь−якої чинної команди оболонки Борна.  Поширеною практикою є виконання команд
з  допомогою  exec, щоб  запобігти безладдя у таблиці процесів. Також ви часто
зустрінете перенаправлення виводу  до  журнального  файлу.  Якщо  вивід  не
перенаправлено  і команда генерує його на стандартний  пристрій  виводу  або
стандартний   пристрій помилки,  тоді  вивід буде відправлено поштою
відповідному користувачеві. Якщо ви  використовуєте  цей  механізм  для
спеціальних  користувачів,  таких  як  UUCP,  вам  можливо необхідно буде
створити синонім  цьому  користувачеві  для перенаправлення  пошти  комусь
іншому,  скажімо  root або postmaster (дивіться сторінку aliases(5)).

Внутрішньо,   цей   cron   використовує   швидку   систему індексації,  під  час
пошуку  команд  до  виконання,  щоб зменшити  навантаження  на   процесор.
Декілька   сотень crontab−файлів   з   декількома   тисячами   записів  буде
оброблено без значного використання процесорних  ресурсів.




     Бажано  було  би  мати декілька файлів crontab для кожного користувача для
кращої організації.




     Matthew Dillon (dillon@apollo.west.oic.com)

Переклав Віталій Цибуляк (vi@uatech.atspace.com)









                                       ‐3‐