Здравствуйте, Уважаемые форумчане. Так как я новичок и не знаю, многого в Debian Linux ОС прошу у Вас помощи.
Вообщем имеется свой VPS сервер и стоит там Debian 6.0 и я хочу выставить в кроне, чтоб сервер перезагружался в определенное время.
Подскажите, как мне правильно в crontab -e настроить перезагрузку сервера в определенное время. Я хочу, чтоб VPS каждое утро в 5 часов утра перезагружалась.
Помогите пожалуйста.
Вот эти команды не помогают: 1 5 * * * root /sbin/shutdown -r now
0 5 * * * root /sbin/shutdown -r now
0 5 * * * root /sbin/reboot
Когда то на CentOS делал, но тут вовсе другой дистрибутив. Спасибо за ответы.
cron - это сервис(демон) который выполняет определенные команды в указанное время
######## Файлы конфигурации #########
Основной системный файл конфигурации находится в /etc/crontab
Он служит в основном для запуска системных заданий.
Файлы конфигурации пользователей находятся в директориях:
/usr/spool/cron/crontabs
/var/spool/cron/crontabs
там нет идентификатора пользователя(он не нужен)
Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron.deny.
############# Ключи запуска crontab ###############################
crontab -e запускается пользователем для редактирования пользовательского файла crontab
crontab -r удаление пользовательского файла crontab
crontab -l выводит содержимое файла crontab
crontab -u username запускается суперпользователем(root) для изменения crontab файлов других пользователей
############## Параметры файла crontab ###########################################
Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели).
В каждое из пяти временных полей вы можете поместить:
* означающее любое значение
5 одиночное значение
15,25,40 список значений разделенных запятыми
9-18 диапазон значений
*/5 период значений(в поле минуты будет означать каждые 5 минут)
Все остальные символы в строке интерпретируются как выполняемая команда с её параметрами. Если команда отправляет какой-нибудь текст в стандартный вывод, этот текст отправляется по e-mail пользователю.
* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)
Примеры:
*/10 * * 5,7,11 * root command1 команда будет запускатся каждые 10 минут в мае июле ноябре
0 9-18 * * 1-5 root command2 команда будет запускатся раз в час во время рабочего дня(с 9 до 18) с понедельника по пятницу
############# Запись в лог ########################
Запись в лог:
45 * * * * /home/admin/.notify.sh 2>&1 >>/tmp/crond.log
############# Примеры crontab ################################
# как обычно, с символа '#' начинаются комментарии
# в качестве командного интерпретатора использовать /bin/sh
SHELL=/bin/sh
# результаты работы отправлять по этому адресу
MAILTO=paul@example.org
# добавить в PATH
PATH=$PATH:$HOME/bin
# Здесь начинаются задания
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца в 14 часов 15 минут
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
1-59/2 * * * * echo "Выполняется по нечетным минутам"
# каждые 5 минут
*/5 * * * * echo "Прошло пять минут"
# m h dom mon dow command
# Запускаю eMule ночью в 1 час ночи 10 минут
10 1 * * * export DISPLAY=:0 && amule
# Останавливаю Emule утром в 10 часов 10 минут
10 10 * * * export DISPLAY=:0 && killall amule
cron - это сервис(демон) который выполняет определенные команды в указанное время
######## Файлы конфигурации #########
Основной системный файл конфигурации находится в /etc/crontab
Он служит в основном для запуска системных заданий.
Файлы конфигурации пользователей находятся в директориях:
/usr/spool/cron/crontabs
/var/spool/cron/crontabs
там нет идентификатора пользователя(он не нужен)
Администраторы многопользовательских систем могут контролировать, кому из пользователей разрешено использовать Cron, размещая их имена в одном из двух файлов, /etc/cron.allow и /etc/cron.deny.
############# Ключи запуска crontab ###############################
crontab -e запускается пользователем для редактирования пользовательского файла crontab
crontab -r удаление пользовательского файла crontab
crontab -l выводит содержимое файла crontab
crontab -u username запускается суперпользователем(root) для изменения crontab файлов других пользователей
############## Параметры файла crontab ###########################################
Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели).
В каждое из пяти временных полей вы можете поместить:
* означающее любое значение
5 одиночное значение
15,25,40 список значений разделенных запятыми
9-18 диапазон значений
*/5 период значений(в поле минуты будет означать каждые 5 минут)
Все остальные символы в строке интерпретируются как выполняемая команда с её параметрами. Если команда отправляет какой-нибудь текст в стандартный вывод, этот текст отправляется по e-mail пользователю.
* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)
Примеры:
*/10 * * 5,7,11 * root command1 команда будет запускатся каждые 10 минут в мае июле ноябре
0 9-18 * * 1-5 root command2 команда будет запускатся раз в час во время рабочего дня(с 9 до 18) с понедельника по пятницу
############# Запись в лог ########################
Запись в лог:
45 * * * * /home/admin/.notify.sh 2>&1 >>/tmp/crond.log
############# Примеры crontab ################################
# как обычно, с символа '#' начинаются комментарии
# в качестве командного интерпретатора использовать /bin/sh
SHELL=/bin/sh
# результаты работы отправлять по этому адресу
MAILTO=paul@example.org
# добавить в PATH
PATH=$PATH:$HOME/bin
# Здесь начинаются задания
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца в 14 часов 15 минут
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
1-59/2 * * * * echo "Выполняется по нечетным минутам"
# каждые 5 минут
*/5 * * * * echo "Прошло пять минут"
# m h dom mon dow command
# Запускаю eMule ночью в 1 час ночи 10 минут
10 1 * * * export DISPLAY=:0 && amule
# Останавливаю Emule утром в 10 часов 10 минут
10 10 * * * export DISPLAY=:0 && killall amule
Попробуйте изменить на
text
0 5 * * * root '/sbin/shutdown -r now'
Спасибо. Добавил в крон. Посмотрим, что оно нам скажет :)
Попробуйте так и посмотрите что будет в /tmp/crond.log
Проверьте строку PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin в /etc/crontab
Также я бы проверил есть-ли файлы /etc/shutdown.allow /etc/shutdown.denny
Попробуйте написать скрипт, и запускать его кроном.
Попробуйте так и посмотрите что будет в /tmp/crond.log
Проверьте строку PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin в /etc/crontab
Также я бы проверил есть-ли файлы /etc/shutdown.allow /etc/shutdown.denny
Попробуйте написать скрипт, и запускать его кроном.
самое забавное, что с кавычками команды работать ни как не будут т.к. крон просто скармливает их system()...
Не понял что вы тут творите, crontab -e откроет для редактирования задачи того пользователя, от которого была введена команда crontab -e, и пользователя указывать не надо, это не только в Debian, это везде так.
Если уж приспичило, то можно и в системном файле (/etc/crontab) писать задания (что не рекомендуется), вот в нем как раз надо указывать пользователя.
Ну и после добавления новых задач рестарт крону не забываем.
а поподробней можно? Я наоборот думал что кавычки нужны для того чтоб крон корректно выполнил команду с пробелами (иногда такое в bash наблюдал)
cron парсит /etc/crontab примерно так: читает 5 колонок времени, читает пользователя, а дальше всю оставшуюся строку сохраняет «как есть», когда время пришло крон тупо скармливает system() [man 3 system] оставшуюся строку.
в результате запускается процесс с параметрами: {"sh", "-c", "то что было в кроне"}
кавычки нужны будут, если надо будет запустить скрипт "/home/users/Васины Скриптики/сделать добро.sh", но параметры должны быть за ним.
соответственно в твоём примере будет выполняться программа, которая называется в точности '/sbin/shutdown -r now'
Fat-Zer Спасибо, надо будет вдумчиво перечитать "Основы написания скриптов на Bash" Видно не очень хорошо понимаю смысл и разницу между " и ' и `
P.S. Я к тому что, думал от них вреда не будет и все сработает :[