Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
Как регулярно выполнять задачи в Linux
В LINUX периодически выполняемые задачи обычно обрабатываются демоном cron [ps -ef|grep cron]. cron считывает один или несколько файлов конфигурации, которые содержат командные строки и время их вызова.
Файл конфигурации cron называется «crontab», что является сокращением от «cron table».
1. cron ищет файлы конфигурации в трёх местах:
1. /var/spool/cron/ В этом каталоге хранятся задачи crontab каждого пользователя, включая root. Каждая задача названа в честь создателя. Например, файл, соответствующий задаче crontab, созданной tom, — это /var/spool/cron. /Том.
Как правило, у пользователя может быть не более одного файла crontab.
2. /etc/crontab Этот файл отвечает за организацию crontab для обслуживания системы и других задач, определенных системным администратором.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
3. /etc/cron.d/ Этот каталог используется для хранения любых файлов crontab или сценариев, которые необходимо выполнить.
4. Разрешения
При возникновении проблем с разрешениями crontab перейдите в /var/adm/cron/ и проверьте, существуют ли файлы cron.allow и cron.deny.
Использование следующее:
1. Если оба файла не существуют, только пользователь root может использовать команду crontab.
2. Если cron.allow существует, но cron.deny не существует, только пользователи, перечисленные в файле cron.allow, могут использовать команду crontab. Если пользователь root не находится в нем, пользователь root не может использовать crontab.
3. Если cron.allow не существует и cron.deny существует, только пользователи, перечисленные в файле cron.deny, не могут использовать команду crontab, а другие пользователи могут ее использовать.
4. Если оба файла существуют, пользователи, перечисленные в файле cron.allow и не перечисленные в cron.deny, могут использовать crontab. Если в обоих файлах есть один и тот же пользователь,
Это зависит от того, существует ли пользователь в файле cron.allow. Если пользователь существует в файле cron.allow, вы можете использовать команду crontab.
В AIX обычные пользователи имеют разрешения crontab по умолчанию. Если вы хотите запретить пользователям использовать crontab, вам необходимо отредактировать /var/adm/cron/cron.deny.
По умолчанию в HP-UNIX обычные пользователи не имеют разрешений crontab. Если вы хотите освободить разрешения crontab для обычных пользователей, вы можете отредактировать их.
5. Создайте cron-скрипт.
Шаг 1. Напишите файл сценария cron и назовите его crontest.cron.
15,30,45,59 * * * * echo “xgmtest…..” >> xgmtest.txt Указывает, что каждые 15 минут следует выполнять команду печати.
Шаг 2. Добавьте запланированную задачу. Выполните команду «crontab crontest.cron». Сделанный
Шаг 3: «crontab -l». Проверьте, успешно ли выполнено запланированное задание, или проверьте, создан ли соответствующий сценарий cron в /var/spool/cron.
6. служба cron
Cron — это инструмент запланированного выполнения в Linux, который может запускать задания без ручного вмешательства.
/sbin/service crond start //Запускаем службу
/sbin/service crond stop //Закрываем сервис
/sbin/service crond restart //Перезапускаем службу
/sbin/service crond reload //Обновить конфигурацию
/sbin/service crond status //Просмотр статуса службы
использование кронтаба
Команда crontab используется для установки, удаления или получения списка таблиц, используемых для управления фоновым процессом cron. Пользователь помещает последовательность команд, которые необходимо выполнить, в файл crontab для выполнения.
Каждый пользователь может иметь свой собственный файл crontab. Файл crontab в каталоге /var/spool/cron нельзя создать или изменить напрямую. Файл crontab создается с помощью команды crontab.
Как ввести команду и время ее выполнения в файле crontab. Каждая строка в этом файле включает шесть полей, первые пять полей — это время выполнения указанной команды, а последнее поле — команда, которую необходимо выполнить.
Используйте пробелы или табуляции для разделения каждого поля. Формат следующий:
minute hour day-of-month month-of-year day-of-week commands
Юридические значения 00-59 00-23 01-31 01-12 0-6 (0 – воскресенье)
Помимо цифр, есть несколько специальных символов: «*», «/» и «-», «,». * представляет все числа в диапазоне значений, «/» представляет значение каждого, «/5» представляет каждые 5 единиц «-» представляет от определенного числа до определенного числа, «» разделяет несколько дискретных чисел.
-l отображает текущую таблицу crontab в стандартном выводе.
-r удаляет текущий файл crontab.
-e Отредактируйте текущий файл crontab, используя редактор, на который указывает переменная среды VISUAL или EDITOR. Когда вы закончите редактирование и выйдете, отредактированные файлы будут установлены автоматически.
Несколько примеров:
6 часов каждое утро
0 6 * * * echo “Good morning.” >> /tmp/test.txt //Обратите внимание, что при использовании простого эха на экране не видно никаких выводов, поскольку cron отправляет любой вывод по электронной почте в корневой почтовый ящик.
каждые два часа
0 */2 * * * echo “Have a break now.” >> /tmp/test.txt
с 23:00 до 8:00 и 8:00
0 23-7/2,8 * * * echo “Have a good dream” >> /tmp/test.txt
4-го числа каждого месяца и каждый понедельник-среду в 11:00.
0 11 4 * 1-3 command line
1 января, 4 утра.
0 4 1 1 * командная строка SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //Если возникает ошибка или выводятся данные, данные будут отправлены на это как адрес электронной почты AccountHOME=/
Выполнять скрипт в /etc/cron.hourly каждый час.
01 * * * * root run-parts /etc/cron.hourly
Выполнять скрипт в /etc/cron.daily каждый день.
02 4 * * * root run-parts /etc/cron.daily
Выполняйте скрипт в /etc/cron.weekly каждую неделю.
22 4 * * 0 root run-parts /etc/cron.weekly
Выполняйте скрипт в /etc/cron.monthly каждый месяц.
42 4 1 * * root run-parts /etc/cron.monthly
Примечание. Параметр «run-parts» отсутствует. Если вы удалите этот параметр, вы сможете позже написать имя запускаемого сценария вместо имени папки.
Выполняйте команду через 5, 15, 25, 35, 45 и 55 минут в 4:00, 5:00 и 6:00 каждый день.
5,15,25,35,45,55 16,17,18 * * * command
Система переходит в состояние обслуживания в 15:00 каждый понедельник, среду и пятницу, после чего система перезапускается.
00 15 * * 1,3,5 shutdown -r +5
Через 10 и 40 минут каждый час выполняйте команду innd/bbslin в каталоге пользователя:
10,40 * * * * innd/bbslink
Выполняйте команду bin/account в каталоге пользователя каждые 1 минуту каждый час:
1 * * * * bin/account
Выполняйте следующие две команды в каталоге пользователя каждое утро в 3:20 (каждая команда разделяется знаком ;):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
Каждый январь и апрель, с 4 по 9 числа, в 3:12 и 3:55 выполняйте команду /bin/rm -f expire.1st и добавляйте результат после файла mm.txt (файл mm.txt находится в собственном каталоге пользователя).
12,55 3 4-9 1,4 * /bin/rm -f expire.1st#@62;#@62;mm.txt
Команда at реализует запланированные задачи
Если мы просто хотим один раз запустить определенную задачу, тогда нам нужно использовать программу мониторинга at в это время.
at аналогичен процессу печати. Он поместит задачу в каталог /var/spool/at и запустит ее в указанное время. Команда at эквивалентна другой оболочке. При запуске команды at time она отправляет команды одну за другой, и вы можете ввести любую команду или программу.
Процесс выполнения команды at выглядит следующим образом.
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
Метод представления времени в AT Time
———————————————————————–
Пример времени Описание
———————————————————————–
Минута сейчас + 5 минут Задача запустится через 5 минут
Час сейчас + 1 час Задача запустится через 1 час
Дней сейчас + 3 дня Задача запустится через 3 дня
Недели сейчас + задачи на 2 недели, выполняемые через две недели
Исправлено в полночь Задача запускается в полночь
Исправлено в 22:30.
Примечание. Linux не запускается по умолчанию, но по умолчанию запускается Ubuntu. Проверьте, запущен ли он, используйте службу atd для проверки синтаксиса, используйте службу atd status, чтобы проверить статус atd, и используйте службу atd start, чтобы запустить службу atd.
Проверьте конкретное содержимое при выполнении: обычно оно находится в каталоге /var/spool/at. Откройте его с помощью vi. Последняя часть — ваша исполняемая программа.
Подробное объяснение параметров
-V : Распечатать номер версии.
-q: использовать указанную очередь (очередь) для хранения. Данные at хранятся в так называемой очереди. Пользователь может использовать несколько очередей одновременно, номера очередей: a, b, c... z и A, B, … Z всего 52
-m: Даже если после выполнения программы/команды нет результата вывода, пользователю будет отправлено письмо.
-f файл: прочитать заранее написанный командный файл. Пользователю не нужно использовать режим чата для ввода. Он может сначала записать все спецификации в файл, а затем прочитать их снова.
веб-приложение
-l: перечислить все спецификации (пользователи также могут напрямую использовать atq вместо -l)
-d: удалить указанное (пользователи также могут использовать atrm напрямую вместо -d)
-v: вывести список всех выполненных, но еще не удаленных заданий.
Удалить задачу
atrm 2
Выполните /bin/ls три дня спустя в 17:00:
at 5pm 3 days /bin/ls
Выполните /bin/ls три недели спустя в 17:00:
at 5pm 2 weeks /bin/ls
Выполните /bin/date завтра в 17:20:
at 17:20 tomorrow /bin/date
Напечатано в последнюю минуту, в последний день конца света 1999 года!
at 23:59 12/31/1999 echo the end of world !
Вышеупомянутое - это то, что вам представил редактор. Как регулярно выполнять задачи в Linux и кронтаб Инструкция по использованию (собрана и систематизирована), надеюсь, будет полезна всем. Если у вас возникнут вопросы, оставьте мне сообщение, и редактор ответит вам вовремя. Я также хотел бы поблагодарить всех вас за поддержку сайта Script House!
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/172595.html Исходная ссылка: https://javaforall.cn