[ad_1]
Мир линукс заполнено так много веселая и интересная вещьчем больше мы заходим, тем больше находим всякой всячины.
В наших усилиях предоставить вам те маленькие лайфхаки и советы, которые сделают вас непохожими на других, здесь мы придумали несколько альтернативных методов планирования работы без использования утилита cron в линуксе.
Планирование задания/команды в Linux — это аббревиатура от cron. Всякий раз, когда нам нужно запланировать работу, мы звоним команда хрон, но знаете ли вы, что мы можем запланировать работу на более позднее время без кукурузы? Вы можете сделать это, используя следующие распространенные подходы.
Оглавление
1. Планирование заданий в Linux с использованием цикла сна
Запустите команду (скажем дата) каждый 5 сек и написать вывод в файл (сказать дата.txt). Чтобы реализовать этот сценарий, нам нужно запустить приведенный ниже однострочный скрипт непосредственно в командной строке.
$ while true; do date >> date.txt ; sleep 5 ; done &
Анатомия приведенного выше однострочного скрипта:
- пока правда — Попросите сценарий запуститься, пока условие истинно, он действует как цикл, который заставляет команду выполняться снова и снова или, скажем, в цикле.
- делать – выполнить следующее, т. е. выполнить команду или набор команд, которые находятся перед оператором do.
- дата >> дата.txt – здесь вывод дата команда записывается в файл дата.txt. Также обратите внимание, что мы использовали
>>
и не>
. >>
гарантирует, что файл (дата.txt) не перезаписывается при каждом выполнении скрипта. Он просто добавляет изменения. Тогда как>
перезаписывать файл снова и снова.- спать 5 — Он просит оболочку сохранить разницу во времени в 5 секунд, прежде чем он снова запустится. Обратите внимание, что время здесь всегда измеряется в секундах. Скажем, если вы хотите выполнять команду каждые 6 минут, вы должны использовать (6*60) 360, в последовательности сна.
- сделанный – отмечает конец цикла while.
&
— Поместите весь процесс в цикл на задний план.
Точно так же мы можем выполнить любой скрипт таким же образом. Вот команда для вызова скрипта через определенный интервал (скажем 100 сек) и имя скрипта script_name.sh
.
Также стоит отметить, что приведенный выше скрипт должен запускаться в каталоге, где лежит вызываемый скрипт, в противном случае вам необходимо указать полный путь (/home/$USER/…/script_name.sh
).
Синтаксис вызова скрипта с указанным выше интервалом:
$ while true; do /bin/sh script_name.sh ; sleep 100 ; done &
Примечание: приведенный выше однострочник не является заменой Кронпотому что Крон Утилита поддерживает множество опций по сравнению с другими и очень гибкая, а также настраиваемая.
Однако, если мы хотим запустить определенные тестовые случаи или тесты ввода-вывода, то приведенная выше единственная команда будет служить этой цели.
2. Планируйте задачи с помощью системных таймеров
В большинстве современные дистрибутивы Linux, Системд по умолчанию в этом система и поставляется с функцией таймера, которая позволяет вам планировать свои задачи.
Сначала создайте новый системад файл таймера с .timer
расширение, как показано.
$ sudo nano /etc/systemd/system/myjob.timer
Добавьте следующий контент в myjob.timer
файл:
[Unit] Description=My Job Timer [Timer] OnCalendar=*-*-* 00:00:00 # Replace the OnCalendar value with the desired schedule [Install] WantedBy=timers.target
в календаре поле в системад блок таймера позволяет указать расписание для вашего задания, используя определенный формат.
- Ежегодно: ежегодно или ежегодно
- Ежемесячно: ежемесячно
- Еженедельно: еженедельно
- Ежедневно: ежедневно или в полночь
- Ежечасно: ежечасно
- Минуты: Вы можете указать конкретную минуту, используя формат
*:MM
(например,*:15
за каждые 15 минут) или определенный диапазон с помощью ММ-ММ (например, 10-30 за каждую минуту с 10 до 30).
Вот несколько примеров, иллюстрирующих формат:
## Run every day at 3:00 AM ## OnCalendar=*-*-* 03:00:00 ## Run every Monday and Friday at 10:00 AM ## OnCalendar=Mon,Fri *-*-* 10:00:00 ## Run every 30 minutes: ## OnCalendar=*-*-* *:0/30:00
Затем создайте соответствующий файл сервисной единицы с .service
расширение в том же каталоге:
$ sudo nano /etc/systemd/system/myjob.service
Добавьте следующий контент в myjob.service
файл:
[Unit] Description=My Job [Service] ExecStart=/path/to/your/job.sh # Replace "/path/to/your/job.sh" with the actual command or script to execute [Install] WantedBy=multi-user.target
Включите и запустите таймер:
$ sudo systemctl enable myjob.timer $ sudo systemctl start myjob.timer
Это запланирует запуск вашего задания в соответствии с указанным таймером.
3. Планирование задач с помощью Anacron
Анакрон — это планировщик заданий на основе времени, который позволяет периодически планировать задания в системах, которые не всегда включены. Он предназначен для систем, которые могут не иметь регулярного доступа к cron. Если в вашей системе установлен anacron, вы можете использовать его для планирования своей работы.
Если он не установлен, вы можете установить его с помощью менеджера пакетов.
$ sudo apt install anacron [On Debian, Ubuntu and Mint] $ sudo yum install anacron [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/anacron [On Gentoo Linux] $ sudo apk add anacron [On Alpine Linux] $ sudo pacman -S anacron [On Arch Linux] $ sudo zypper install anacron [On OpenSUSE]
Создайте новый файл конфигурации (моя работа.sh) для вашей работы в /etc/anacrontab.d/ каталог.
$ sudo nano /etc/anacrontab.d/myjob.sh
В файле конфигурации укажите детали вашего задания.
# Run myjob.sh every day with a delay of 5 minutes 1 5 myjob /path/to/myjob.sh
Поля в файле конфигурации имеют следующие значения:
- Первое поле — это период времени, в течение которого должно выполняться задание. @ежедневно, @еженедельно, @ежемесячноили @ежегодно.
- Второе поле — это время в минутах для задержки выполнения задания после запуска системы.
- Третье поле — это имя задания, которое будет использоваться для создания файлов журнала.
- Четвертое поле — это команда или сценарий, которые необходимо выполнить.
Сейчас, Анакрон автоматически выполнит вашу работу в соответствии с заданным расписанием.
На данный момент это все, если вы знаете какие-либо подобные хаки или приемы Linux, вы можете поделиться ими с нами через наш раздел комментариев, и не забудьте поделиться этой статьей со своими друзьями.