Помощь в примерах как использовать cron в unix, linux системах

Данная заметка предназначена для тех, кому изредка необходимо работать с cron ( crontab ), но кто еще не знает, как все это делается. Я в вкратце попробую объяснить, что такое cron, для чего он нужен, да и как вообще с ним работать. Надеюсь, что приведенная тут информация будет интересна и может быть даже полезна.

 


Итак, что такое cron... cron это программа, которая позволяет вам в определенные вами моменты времени производить те или иные действия. Например, запускать на выполнение какую либо программу или скрипт, обновлять данные и многое другое. Кстати, сразу же замечу, что cron это кусок от unix , так что не ищите его на Windows :) Там для этой цели используется совершенно другая вещь. 

Очень часто cron используется для ротации логов, обновления сайтов выполнения каких ни будь ежеминутных проверок или прочего. Так, например я его использую в качестве помощника по архивации своего сайта. Написанный скрипт по архивации всех данных запускается по крону каждую неделю, вследствие чего я избавлен от головной боли 'а не забыл ли я чего архивнуть...'. 

Да ну ладно, я думаю, вы и так знаете (или уже догадались) для чего нужен крон. Так что посмотрим, как все это работает. 

Для начала можно проверить, а запущен ли вообще этот самый крон ? 

Команда ps ax |grep cron должна вывести вам то-то похожее на 

 

407 ? S 0:00 crond 
744 pts/0 S 0:00 grep cron 




Т.е. если вы видите crond - то все в порядке, крон на месте. 

Иначе вам просто 'повезло', либо на вашей машине не установлен крон, либо функции крона выполняет какой-то другой софт. Хотя такие ситуации необычайно редки. 

Так что будем считать, что все в порядке, и двинемся далее. 
pages:: 
Как правило, все ваши данные (задания) для крона хранятся по адресу /var/spool/cron/ в файле с именем соответствующим вашему логину. Например /var/spool/cron/vadim 

Внутри файл выглядит следующим образом: 
 

SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=vadim 
HOME=/home/vadim 

# run-parts 
01 * * * * command 
02 4 * * * command 


Первые четыре строки просто обозначают настройку параметров окружения, и на них не стоит обращать внимание (как в прочем и менять тоже), так как это задается уже самой системой. 

А вот на следующие строки внимание уже стоит обратить... 

Формат этих строк выглядит следующим образом: 

  1. Нужная минута часа для запуска (0-59) 
  2. Нужный час дня для запуска (0-23) 
  3. Нужный день месяца (0-30) 
  4. Нужный месяц года (1-12) 
  5. Нужный день недели (0-6) 
  6. Выполнимая команда. 


Значок * обозначает слово каждый (день, год, месяц, час). 

Итак например строка 01 * * * * command будет обозначать запуск программы каждый час в одну минуту. 

А строка 02 4 * * * command означает запуск программы каждый день в 4 часа утра в две минуты. 

В качестве уже более полного примера могу привести следующее: 
01 * * * * echo `date` 'Hi man' >>$HOME/cron.res 

Данное задание каждый час будет добавлять в файл cron.res текст Hi man и текущую дату. 

Итак, мы уже знаем как и по какому принципу работает крон, и поэтому мы сейчас перейдем к заключительному этапу - его редактированию. 

Редактирование крона происходит при помощи команды crontab. 
 

crontab -e : войти в режим редактирования 
crontab -l : вывести все задания крона 
crontab -r : удалить все задания 


Со второй и третьей командой обычно все ясно. 

С первой командой просто хочу заметить, что редактирование будет простым открытием файла с заданиями через текстовый редактор. Как правило, по умолчанию этим редактором является vi. 

Но я так и не научился пользоваться этим редактором, поэтому использую pico. 

Смену редактора можно провести командой export EDITOR='pico' а далее и запускать команду редактирования. 

Вот вроде бы и все. Удачного вам крона! :)