reg-name Регистрация доменов, хостинг

Здесь Вы можете

1. купить хостинг для сайта

2. самостоятельно подобрать подходящее имя

3. зарегистрировать его
в сети Интернет

Доменные имена в зоне RU и РФ по 99 рублей

Проверка доменного имени

img img
отметить популярные зоны
.ru99
.biz760
.cc1400
.su600
.info760
.tv1800
.рф99
.mobi1100
.bz1400
.com760
.name760
.mn2800
.net760
.ws760
.me1800
.org760
.in1100
.tel950
.asia950
.us760
Что такое «домен» и с чем его едят?

Cron как заставить выполнять ваши приказы


Категория: Программы


Как заставить cron выполнять наши приказания


Было бы здорово, в случае, если бы ваша FreeBSD ежемгновенно автоматически исполняла свое техническое обслуживание и докладывала бы вам об этом по электронной почте. К счастью, благодаря демону cron и обслуживающим сценариям, ваша FreeBSD регулярно работает это. В настоящей статье мы обсудим как демон cron выполняет запланированные команды и обучимся как сконфигурировать cron для запуска ваших планов и программ.

Так же как большинство остальных демонов, cron запускается вместе с FreeBSD и потом тихонько сидит в фоновом режиме. Что бы установить себе , что нет необходимости начинать cron без чьей-либо помощи , поищите слово «cron» в списке запущенный процессов, к примеру следовательно :

ps -ax | grep cron



У вас должно выйти нечто похожее:

97? ? Is 0:07.71 cron

В данном случае cron имеет 97-й пункт процесса .

Cron «просыпается» всякую минуту и проверяет списки запланированных заданий – crontab (сокращение от «chron or time table“), на вопрос существования там заданий подлежащих запуску. Crontab это обыкновенный файл , содержащий каталог команд, а также время в которое эти директивы должны запуститься. Когда вы установили FreeBSD, системный каталог запланированных заданий был основан автоматически. Вы не должны делать никаких отклонений в этом файле. Далее мы опишем как применяя утилиту crontab вы сможете делать пользовательские каталоги запланированных заданий, которые cron будет исполнять кроме системного каталога . В файле содержится системный каталог /etc/crontab. Воспользуйтесь командой more, для того что бы просмотреть данный файл, гарантированно не отредактировав его. Очевидно вам следует проникнуть в систему вместе на 2-х консолях, это позволит вам на одной консоли читать системный каталог заданий, а на другой выполнять разные команды. Напишите на первой консоли:

more /etc/crontab



В результате вы увидите следующие черты :

# /etc/crontab — root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.21 1999/12/15 17:58:29 obrien Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday who command
#
*/5 * * * * root /usr/libexec/atrun

Как и в любом файле комментарий начинается с знака решетки “#». Наиболее пригодны комментарии, описывающие содержимое полей этого файла. Заметьте – 5 полей показывают время , потом подходит поле пользователя (поле «кто“), а затем группа . На первый взор объем этого файла может появиться вам странным, однако каждая линия этого файла, не являющаяся комментарием, просто беседует cron'у когда следует включить указанную группу .



В следующей схеме показаны границы допустимых значений аргументов столбцов показывающих время :

Поле Допустимое значение
Минуты (minute) 0-59
Час (hour) 0-23
День месяца (dayofmonth) 1-31
Месяц (month) 1-12 или первые 3 азы английского
названия месяца (регистр не учитывается)
День недели (dayofweek) 0-7 (где 0 и 7 это воскресенье) или первые
3 азы английского названия дня в неделе
(регистр не учитывается)

Значения могут существовать числом, трехбуквенным названием, а так же диапазоном к примеру запись “1-5» в поле dayofweek будет значить «с понедельника по пятницу“. Значения могут откладывать запятыми: “1,15,31“ в поле dayofmonth будет бросать указанную группу 1-го, 15-го и 31-го числа любого месяца .

Все 5 полей времени допускают применение символа звездочка – “*», который означает «использовать любое возможное значение» для этого поля. К примеру для того что бы бросать команду каждый месяц, поставьте «звездочку“ в поле month.

Также можно пользоваться значения типа “*/число“. К примеру “*/2» в поле месяца будет значить «запускать каждый 2-й месяц“. В системном списке заданий есть похожий пример:

#minute hour mday month wday who command
*/5 * * * * root /usr/libexec/atrun

Эта линия читается так: исполнять команду /usr/libexec/atrun от пользователя root, в случае, если настоящая минута делится нацело на 5 (или легко любые пять минут), ежечасно каждый день любого месяца. В случае, если вы не в курсе что создает команда atrun, напечатайте на консоли:

whatis atrun



В отзыв будет сказано:

atrun (8) — run jobs queued for later execution

Т.е. команда atrun запускает задачи из очереди отложенного выполнения. В случае, если ваше любопытство не удовлетворено таким толкованием , то загляните в man 8 atrun.


И последняя таблица , перед тем как снова превратиться к /etc/crontab. Вы можете заменить все 5 полей времени следующими подстановками:

Строка Что это значит
@reboot Запускать при начальной загрузке
@yearly Заменяет “0 0 1 1 *» т.е. «ежегодно в 00:00 1 января“
@annually Тоже что и yearly
@monthly Заменяет “0 0 1 * *» т.е. «ежемесячно в 00:00 1 числа“
@weekly Заменяет “0 0 * * 0» т.е. «еженедельно в 00:00 воскресенье“
@daily Заменяет “0 0 * * *» т.е. «ежедневно в 00:00“
@midnight Тоже что и daily
@hourly Заменяет “0 * * * *» т.е. «ежечасно в 00 минут»

 

Вернемся в первую консоль и продолжим чтение /etc/crontab:

# rotate log files every hour, if necessary
# (произвести замену журналов ежечасно , в случае, если это нужно )
0 * * * * root newsyslog

Т.е. производить ротацию файлов журналов ежечасно , в случае, если это нужно . Опять комментарий оказался годен . Ради того что бы узнать что создает команда newsyslog напишите:

whatis newsyslog

 

Система ответит:

newsyslog (8) — maintain system log files to manageable sizes

Т.е. newsyslog создан для придания системным журналам управляемых размеров.

 

Итак, читаем /etc/crontab дальше:

# do daily/weekly/monthly maintenance
# (проводить ежедневное/еженедельное/ежемесячное обслуживание)
59 1 * * * root periodic daily 2>&1 | sendmail root
30 3 * * 6 root periodic weekly 2>&1 | sendmail root
30 5 1 * * root periodic monthly 2>&1 | sendmail root


Обратите внимание, что обслуживающие сценарии никогда не запускаются одновременно. Ежедневное обслуживание запускается всякую ночь в 1:59, в случае, если вы спите рядом с вашей FreeBSD-системой, то вы можете ощутить треск винчестера в это, казалось бы, чудное время. Еженедельное обслуживание проходит всякую субботу, ночью в 3:30. Ежемесячное – запускается в 1-й день любого месяца в 5:30 утра. Вообще, это неплохая идея – запускать обслуживание, когда процессор не занят работой (т.е. в половине ночи), и не обрабатывать сейчас все сценарии одновременно, для предотвращения излишней загрузки процессора вашей теории.

Комбинация 2>&1 говорит интерпретатору команд, что все ошибки и сведения должны быть оставлены вместе. Возле опоры канала они передаются программе sendmail, которая отправляет их пользователю root, следовательно весь вывод (вместе с ошибками) порождаемый обслуживающими сценариями будет отправлен по электронной почте пользователю root. (На самом положении в текущих версиях FreeBSD процесс проходит несколько иначе – сценарий periodic формирует почтовое сообщение сам. Знать нужды в 2>&1 | sendmail root уже нет – прим. переводчика).



Где cron находит обслуживающие сценарии? На 2-й консоли попробуйте напечатать:

# ls /etc/periodic
daily monthly weekly

# ls -F /etc/periodic/weekly
300.uucp* 330.catman* 310.locate*
340.noid* 120.clean-kvmdb* 320.whatis*
999.local*

Ключ -F добавляет к названиям всех запускаемых файлов знак звездочки “*». Следовательно мы видим, что /etc/periodic включает подкаталоги в которых помещаются сценарии, которые, в свою цепь ежедневно (daily), каждую неделю (weekly) и каждый месяц (monthly) выполняет cron (тут писатель части молчит о том, что на самом положении сценарии из данных подкаталогов выполняет сценарий /usr/sbin/periodic, который и указан в файле /etc/crontab – прим. переводчика). В случае, если вы в самом деле любознательны, попробуйте создать:

more /etc/periodic/weekly/310.locate

В случае, если вы учитесь создавать сценарии для интерпретатора команд, исследование встроенных в систему сценариев даст вам множество образцов правильного и традиционного синтаксиса.

Поскольку факты разработки этих сценариев отправляются по почте пользователю root, он, применяя почтовую программу, может проверять возникающие в системе неисправности. Обычно вы не конфигурируете ваш любимый почтовый клиент для получения почты пользователя root, потому что в множестве переделок вам не требуется принимать или посылать почту от имени абонента root (мягко выговаривая спорное высказывание – прим. переводчика). Тем не менее вы все же хотите брать уведомления о проблемах в системе, которые пришлет вам cron. Зарегистрируйтесь в системе как суперпользователь и воспользуйтесь вашим любимым почтовым клиентом для получения этой связи (очень много почтовых клиентов не вызывают никакого конфигурирования для ознакомления с почтой любого пользователя – нужно только зарегистрироваться в системе от имени желаемого пользователя и запустить клиент – прим. переводчика).

В случае, если вы никогда не делали этого до этого, то вполне может, что вы получите сотни писем, в зависимости от того сколько времени включен ваш компьютер (в день просто генерируется 2 сообщения, не считая еженедельных и ежемесячных отчетов – прим. переводчика). Тем не менее, в случае, если вы всегда выключаете компьютер до полуночи, то вероятно вы не получите вообще ни одного сообщения, т.к. все сценарии запускаются после полуночи.

В случае, если у вас есть несколько сообщений, то кроме этого вы должны извлечь как минимум одно названное «daily run output», в случае, если вы прочтете это сообщение, то вы увидите, сколько вещи делает для вас cron всякую ночь в 1:59. Обратите внимание, что сообщения относящиеся к безопасности присылаются особым письмом которое зовется «security check output». Это сообщение чрезвычайно полезно для прочтения потому что оно включает информацию о проверке файлов имеющих атрибут setuid, uid 0, пользователях без паролей, сообщениях ядра, отвергнутых попытках зарегистрироваться в системе и отклоненных соединениях.

После объяснения эти сведения могут существовать безопасно удалены. После ухода из почтового клиента не забудьте завершить сеанс суперпользователя.

До сего часа мы исследовали целый файл crontab, который не нужно изменять. Теперь мы поглядим как формировать свой личный файл crontab, для того что бы заставить cron выполнять свои команды. Во FreeBSD по умолчанию любой пользователь обладает право написать личный файл crontab. Данные файлы хранятся в каталоге /var/cron/tabs. В случае, если вы напечатаете (от пользователя root):

ls /var/cron/tabs

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

Вы можете жить удивлены, сколько разных групп и сценариев следует возложить cron'у для исполнения. Спросите себя какие группы вы выполняете систематически или должны исполнять систематически, однако порой об этом забываете. К примеру вы можете пожелать удалять core-файлы или dead.letter (т.е. обычно ненужные файлы – прим. переводчика). Разве возможно вам хочется регулярно прочищать кеш вашего браузера.

Когда вы определитесь что вы желаете что бы cron сделал для вас, подумайте какими командами, или наборами команд, могут существовать исполнены эти задачи. Любая запись в crontab'е должна быть из одной линии. Вполне обычно, в случае, если линия будет переноситься по границе экрана пока вы не нажмете клавишу «Enter». Тем не менее в случае, если группа слишком длинна, то может существовать проще реализовать для нее особый файл (сценарий) и указать в crontab'е уже данный файл. Покажем это на примерах. В случае, если я хочу отвести и обнаружить файлы с определенными расширениями, то я могу назначить подобную группу (вы должны завести ее на одной черте):


find / \ (-name “*.core» -or -name «dead.*“ \)
-print -exec rm -rf {} \;

Посмотрим, как можно объяснять эту непонятную фразу. В полном виде эта директива что-то высматривает . Поисковые представления всегда выглядят как:

find точка_начала_поиска искать_вот_это с_найденным_делать_это

Итак, когда я пишу find /, я говорю команде find искать от корня файловой системы.

Дальше я говорю find, что бы она искала файлы, чьи имена заканчиваются на “.core» или начинаются на «dead.». Потому что в конечном результате я хочу что бы оба вида фалов были далеки , то я окружил их скобками. Я добавил перед скобками по обратному слешу для того что бы интерпретатор команд не воспринял их на свой счет.

Когда find найдет такие файлы он применит к ним команду «rm -rf“, указанную в параметре “-exec“. Всякий раз когда вы употребляете слово “-exec“ в find, вы должны оканчивать его символами “\;», иначе ничего не будет делать . Фигурные скобки задают exec место, куда следует устроить информацию найденную find.

Ну что, мне кажется это было не так уж плохо? Теперь соберем простой план для очистки кеша браузера Netscape. Данный план я взял из списка рассылки FreeBSD – отсюда и еще отсюда.



Откройте ваш любимый текстовый редактор и напечатайте следующий стих:

#!/bin/sh

# First, double-check that the user is not
# currently using Netscape
# Then remove the contents of all the subdirectories
# in the Netscape cache
# Во-первых двойная проверка, не применяет ли
# пользователь теперь Netscape. В случае, если нет, то удалить
# содержимое кеша Netscape

if! (`ps wxu $USER | grep -q [n]etscape`)
then
echo «Clearing Netscape cache…»
rm -rf ~/.netscape/cache/*

fi

echo «Exiting….“



Попытаемся разобраться что мы тут поставили. Все сценарии начинаются вот с такой штуки:

#!

за которой следует целый путь к программе которая бросит выполнять план . Мы разработали план для интерпретатора команд Bourne и указали что команда sh (Bourne shell) будет разъяснять данный скрипт:

#!/bin/sh

Далее мы включили семь строк комментариев (они начинаются с знака решетки “#») для того что бы не не вспоминать для чего данный сценарий предназначается.

Далее идет золотое содержимое сценария. Оно содержит слово «если», начинающееся главным словом «if» и завершается «fi». В первой строчке предложения «если» указывается условие которое умеет принимать значение «истина» или «ложь“:

if! (`ps wxu $USER | grep -q [n]etscape`)

Знак “!» это операция отрицания «не», которая разрешает блоку «if» выполняться когда выражение в скобках не истинно. По существу команда ps применяется для поиска запущенного процесса Netscape у данного абонента . В случае лишения такого хода план остается выводом строки заключенной в кавычки:

echo «Clearing Netscape cache…»

 


Далее идет прямо очистка кеша Netscape, который простирается в личном каталоге пользователя:

rm -rf ~/.netscape/cache/*

В случае, в случае, если у пользователя есть запущенный процесс Netscape, то интерпретатор выходит из блока «if» не выполняя пункт «then».

Сохраните ваш сценарий. Я сохранил его под именем «clean». Вы же можете указать ваш сценарий как вам будет угодно, тем не менее не нужно назвать его именем какой-нибудь существующей группы . Для перестраховки запустите на 2-й консоли следующую группу :

whereis -b предполагаемое_имя_сценария

В случае, если вы получите какой-то путь, то команда с таким именем существует и вам следует избрать другое название . Тем не менее , в случае, если полученный вывод выглядит приблизительно вот так:

whereis -b clean
clean:

то, вероятнее всего вы выбрали удачное название для вашего плана .

После оного как вы сохраните ваш сценарий, вам следует поставить у него атрибут исполняемого файла :

chmod +x clean

Хорошим цветом будет произведение в вашей личном каталоге подкаталога bin, в котором вы будете сохранять ваши сценарии:

cd ~
mkdir bin
mv clean ~/bin

И наконец вы должны познать ваш сценарий на работоспособность, прежде чем отдать его cron'у. В каталоге bin напишите:

./clean



В случае, если вы находитесь в другом списке напишите:

clean



В случае, если вы используйте интерпретатор C-shell и получите предупреждение «Command not found», то напечатайте:

rehash

и повторите запуск сценария.

Теперь мы готовы к созданию файла crontab для того что бы cron выполнял наш сценарий, а так же команду find. Под постоянным читателем зарегистрируйтесь в системе. Я регистрируюсь под именем genisis. Теперь сочиняйте:

crontab -e

для применения утилиты crontab в режиме редактирования. В случае, если вы очень бойкий, то вы успеете увидеть выступление перед запуском редактора vi:

crontab: no crontab for genisis — using an empty one
(crontab: нет файла crontab для пользователя
genisis – применяем пустой файл)

Так как мы находимся в vi, нажмите клавишу «ESC» и следом символ «i“ для входа в режим вставки, затем вмонтируйте данный текст:

#every morning at 4:32 search and
#destroy all core or dead files
#каждое утро в 4:32 искать и удалять
#все core и dead-файлы
32 4 * * * find / \ (-name “*.core» -or
-name «dead.*» \) -print -exec rm -rf {} \;

#run the script that clears the Netscape
#cache every morning at 2:48
#запуск сценария который очищает кеш
#Netscape всякую ночь в 2:48
48 2 * * * ~/bin/clean

(разумеется строки 5 и 6 это на самом положении одна линия).

Обратите внимание, что синтаксис несколько отличается от синтаксиса системного файла crontab, а именно отсутствует поле «кто». Т.к. данный файл crontab есть такое же имя как и имя создавшего его пользователя, поле «кто» будет одинаково имени создавшего файл пользователя (т.е. все указанные в этом файле директивы будут проводиться только от имени абонента который основал данный файл – прим. переводчика). Когда вы закончите, старательно проверьте текст на наличие ошибок, а после сего нажмите клавишу «ESC», а потом «wq». Колебания будут сохранены и вы покинете редактор. В случае, если вы введете неверные данные в какие поля, утилита crontab сообщит вам об этом и попросит вас снова проверить файл. В этом инциденте скажите «yes“ и сначала проверьте файл на опечатки. В случае в случае, если все правильно, вы увидите следующую надпись:

crontab: installing new crontab

Когда вы завтра будете испытывать свой почтовый ящик, вы увидите 2 письма от cron'а с результатами работы записей в вашем файле crontab. Ежели ваши команды выполнились успешно, то вы получите нечто похожее:

From genisis@.istar.ca. Thu Sep 14 04:38:31 2000
Date: Thu, 14 Sep 2000 04:38:50 -0400 (EDT)
From: genisis (Cron Daemon)
To: genisis
Subject: cron find / \ (-name “*.core» -or
-name «dead.*» \) -print -exec rm -rf {} \;

find: /usr/games/hide: Permission denied
/usr/home/genisis/dead.letter
/usr/home/genisis/netscape.bin.core
find: /var/spool/opielocks: Permission denied
find: /var/cron/tabs: Permission denied
find: /var/games/hackdir: Permission denied
find: /stand/etc: Permission denied
find: /etc/isdn: Permission denied
find: /etc/uucp: Permission denied
find: /root/mail: Permission denied

From genisis@.istar.ca. Thu Sep 14 02:51:36 2000
Date: Thu, 14 Sep 2000 02:52:01 -0400 (EDT)
From: genisis (Cron Daemon)
To: genisis
Subject: cron ~genisis/bin/clean

Clearing Netscape cache…
Exiting….

Теперь несколько финальных замечаний насчет crontab. В случае, если вы хотите испытать содержимое своего файла crontab, напечатайте:

crontab -l

В случае, если вы хотите поменять данный файл, опять пишите crontab -e.

Только суперпользователь root имеет действительно видеть, у которых пользователей установлены файлы crontab. Зарегистрируйтесь под пользователем root, и попробуйте создать следующее:

ls /var/cron/tabs
genisis

Вы нужны будете разобрать последнюю запись с именем пользователя, который только что выполнил свой crontab-файл.

Мы лишь прикоснулись к функциональности файлов crontab. В следующих частях мы исследуем новые группы и научимся писать больше сложные сценарии и в любом случае добавим записей в свои файлы crontab.


Примеры для тех кто не хочет читать статью =)

# запускать php скрипт раз в час в 0 минут
0 */1 * * * /usr/local/bin/php /home/user/www/site_folder/public_html/you_script.php

# запускать php скрипт через url каждые три часа в 0 минут с передоваемым GET параметром var=123
0 */3 * * * /usr/local/bin/wget 'http://имя_домена/you_script.php?var=123'

# запускать php скрипт каждые 12 часов через день
* 12 */2 * * /usr/local/bin/php /home/user/www/site_folder/public_html/you_script.php

# запускать php скрипт по понедельникам в 1 час 15 минут ночи
15 1 * * 1 /usr/local/bin/php /home/user/www/site_folder/public_html/you_script.php

# запускать php скрипт через url 1 апреля в 0 часов 1 минуту каждый год с передоваемым GET параметром var1=день и var2=дурака
1 0 1 4 * /usr/local/bin/wget 'http://имя_домена/you_script.php?var1=день&var2=дурака'

# запускать php скрипт в пятницу 13 числа в 13 часов 13 минут
13 13 13 * 5 /usr/local/bin/php /home/user/www/site_folder/public_html/you_script.php

# запускать php скрипт ежемесячно 1 числа в 6 часов 10 минут
10 6 1 * * /usr/local/bin/php /home/user/www/site_folder/public_html/you_script.php


Дата: 19 July 2009, 21:57


Комментария:

Гость - 05 April 2010, 1:33

Спасибо написано очень доходчиво :)


Гость - 30 November 2011, 12:58

I'm really into it, tnhaks for this great stuff!




Проверочная картинка:

Зарегистрироваться
E-mail
imgimg
Пароль
imgimg
Хост
img img
Пользователь
img img
Пароль
img img
Сервер
img img img
Пользователь
img img
Пароль
img img
Панель управления
Логин
imgimg
Пароль
imgimg
Востановление пароля
Новости

Отдел по работе с клиентами:

Режим работы: с 10.00 до 19.00
тел.+7 (495) 728-32-45
mailinfo@reg-name.ru
icq999135

Административный отдел:

Режим работы: с 10.00 до 19.00
тел.+7 (495) 728-32-45
mailadmin@reg-name.ru
icq999135

Отдел технической поддержки:

Режим работы: круглосуточно
тел.+7 (495) 728-32-45
mailsupport@reg-name.ru
Оплата услуг baner wsc По вопросам рекламы
img img reg Reg-name.ru, 2007—2011 wsc Сделано в студии ВебСтройКом
Rambler's Top100


Обработка данных!

НЕ обновляйте страницу, дождитесь завершения операции!!!