Введение в Кронтаб:
В Linux используется команда crontab. Команда crontab распространена в Unix и Unix-подобных операционных системах и используется для установки инструкций, которые будут выполняться периодически. Эта команда считывает инструкции со стандартного устройства ввода и сохраняет их в файле «crontab» для последующего чтения и выполнения. Слово происходит от греческого хронос (χρ?νο?), что означает время. Обычно инструкции, хранящиеся в crontab, активируются процессом-демоном Crond, который часто работает в фоновом режиме и каждую минуту проверяет, есть ли запланированные задания, которые необходимо выполнить. Такие задания обычно называются заданиями cron. После установки операционной системы эта команда планирования задач будет запущена по умолчанию. Команда crond будет периодически проверять, есть ли работа, которую нужно выполнить, каждую минуту. Если есть работа, которую нужно выполнить, она будет выполнена автоматически.
Примечание. Вновь созданная задача cron не будет выполнена немедленно. Прежде чем она сможет быть выполнена, пройдет не менее 2 минут. Конечно, вы можете перезапустить cron, чтобы выполнить ее немедленно.
1. Используйте команду yum для установки Crontab:
yum install vixie-cron
yum install crontabs
Примечание: пакет программного обеспечения vixie-cron является основной программой cron;
Пакет программного обеспечения crontabs используется для установки, удаления или получения списка драйверов. cron программа формы демона.
Cron — это встроенная служба «Служить» в Linux, но она не запускается автоматически. Для запуска и завершения этой службы можно использовать следующие методы:
/sbin/service crond start #запускать Служить
/sbin/service crond stop #закрытие Служить
/sbin/service crond restart #Перезапуск Служить
/sbin/service crond reload #Обновить конфигурацию
2. Проверьте статус Crontab:
service crond status
ntsysv #Проверьте, настроен ли запуск crontabСлужить при загрузке
chkconfig –level 35 crond on #Добавляем автоматический запуск при загрузке
3. Добавьте запланированные задачи:
crontab -e #Изменить режим задачи cron
i #Текстовым редактором по умолчанию является vim. Нажмите клавишу с буквой i, чтобы добавить задачу cron.
30 3 * * * /usr/local/etc/rc.d/lighttpd restart #Вводим код команды. Значение этой команды: 03:30 каждый день Перезапустить апач
ESC #Нажмите клавишу ESC, чтобы выйти из режима редактирования.
:wq #Введите: wq для сохранения
service crond restart #restartcrontabСлужить
4. Просмотрите список задач:
crontab -l
5. Команды, связанные с Crontab:
(1) язык Закон:
crontab [-u <Имя пользователя>][Конфигурационный файл] или crontab { -l | -r | -e }
-u #<Имя пользователя> относится к обозначению настройки<Имя пользователя>иззапланированные задачи, предполагается, что у вас должны быть ее разрешения (например, root) может указывать расписания других людей. Если не используется -u user , это означает установку собственных запланированных задачи。
-l #Список запланированных пользователем настройки задачи.
-r #Удалить запланированные этого пользователя настройки задачи.
-e #Редактировать запланированные этого пользователя настройки задачи.
(2) Формат времени команды :
* * * * * command
точка час день луна неделя Заказ
Столбец 1 представляет часы с 1 по 59. Те, кто использует *или каждую точку часов */1 означает
Столбец 2 представляет малые часы 1–23 (0 соответствует 0 баллам).
В столбце 3 указаны периоды дней с 1 по 31.
В столбце 4 указаны части луны с 1 по 12.
В пятом столбце указан день недели от 0 до 6 (0 означает воскресенье).
Нет.6столбец для запускаиз Заказ
(3)НекоторыйCrontabзапланированные пример задачи:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart #каждуюночь21:30 Перезапустить апач
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #Каждыйлуна1、10、22деньиз4 : 45Перезапустить апач
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart #Каждыйнеделяшесть、неделяденьиз1 : 10Перезапустить апач
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart #каждый день18 : с 00 до 23 : 00Измежду Каждыйразделенный30точкаколокол Перезапустить апач
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart #каждуюсуббота11 : 00 pmПерезапустить апач
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart #ночь11до утра7между точками,Каждыйразделенныйодин Маленькийчас Перезапустить апач
* */1 * * * /usr/local/etc/rc.d/lighttpd restart #Каждыйодин Маленькийчас Перезапустить апач
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart #Каждыйлунаиз4Количество и Каждыйнеделя По прибытиинеделятрииз11точка Перезапустить апач
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart #одинлунаодин Числоиз4точка Перезапустить апач
*/30 * * * * /usr/sbin/ntpdate cn.pool.ntp.org #Каждый半Маленькийчассинхронныйодин Внизчасмежду
0 */2 * * * /sbin/service httpd restart #Каждый两个Маленькийчас Перезапускодин Второсортныйapache
50 7 * * * /sbin/service sshd start #Open sshСлужить в 7:50 каждый день
50 22 * * * /sbin/service sshd stop #Закрытие в 22:50 каждый день sshСлужить
0 0 1,15 * * fsck /home #Каждыйлуна1Хаохэ15№ проверить/home диск
1 * * * * /home/bruce/backup #Каждый Маленькийчасиз Нет.одинточкаосуществлять /home/bruce/сохраните резервную копию этого файла
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; #Каждыйнеделяодинкнеделяпять3точкаколокол,в каталоге /home,Найти файлы с именем *.xxx,иудалить4дней назадиздокумент。
30 6 */10 * * ls #Каждыйлунаиз1、11、21、31деньдаиз6:30осуществлятьодин ВторосортныйlsЗаказ
End...
6. Некоторые скрипты не могут быть выполнены:
Если мы используем crontab для регулярного выполнения сценария, он не может быть выполнен, но если мы напрямую используем команду (например: ./test.sh), она может выполняться нормально. Это происходит главным образом потому, что переменные среды не могут быть прочитаны.
Решение:
(1) Все команды необходимо записывать в форме абсолютного пути, например: /usr/local/bin/docker.
(2) Используйте следующий код в начале сценария оболочки:
#!/bin/sh
. /etc/profile
. ~/.bash_profile
(3) Добавьте переменные среды в /etc/crontab и добавьте команду ./etc/profile;/bin/sh перед исполняемой командой, чтобы переменные среды вступили в силу, например:
20 03 * * * . /etc/profile;/bin/sh /var/www/wwwroot/test.sh
7. Crontab планирует задачи по умолчанию:
cron по умолчанию настроен на планирование задач: ежечасно, ежедневно, еженедельно, ежечасно, а файл конфигурации по умолчанию — /etc/anacrontab.
Просто поместите скрипты, которые необходимо выполнить, в соответствующие каталоги. Каталоги:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/ect/cron.mouthly
8. Уделите внимание очистке логов почты пользователей системы:
После того как выполнение каждой задачи запланировано, система отправит выходную информацию о задаче текущему пользователю системы по электронной почте. Со временем информация журнала станет очень большой и может повлиять на нормальную работу системы. быть перенаправлены. Обработка очень важна.
Например, вы можете установить следующую форму в файле crontab, чтобы игнорировать вывод журнала:
0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
“/dev/null 2>&1”Указывает, что стандартный вывод сначала перенаправляется на/dev/null,Затем перенаправьте стандартную ошибку на стандартный вывод.,Поскольку стандартный вывод был перенаправлен в /dev/null,Таким образом, стандартная ошибка также перенаправляется на /dev/null.,такдень Проблема с выводом журнала решена。
9.Путь журнала Crontab:
ll /var/log/cron* #/var/log/cron будет записывать только то, выполняются ли определенные запланированные сценарии, но является ли конкретное выполнение правильным, а также некоторую информацию во время выполнения сценария, Linux будет каждый раз отправлять пользователю электронные письма.
10. Инструмент онлайн-проверки команд Crontab:
Ссылка на эту статью:https://cloud.tencent.com/developer/article/2359335
Оригинальная статья Тианле, при перепечатке указывайте источник!