LINUXCAMP_TG Telegram 324
Как работает cron и зачем он нужен?

Если вы хоть раз хотели, чтобы скрипт запускался сам — без вашего участия — скорее всего, вам пригодится cron. Это системный инструмент (ДЕМОН), который позволяет выполнять команды/скрипты по расписанию.

Сфер применения достаточно много, но суть технологии - автоматизировать рутинные задачи: очистка логов, обновление данных и т.д. Как говорилось в одной из статей выше cron — демон, который выполняет команды в запланированное время.

Дополню, что он каждую минуту проверяет свое расписание, наступило ли время начинать выполнять задачу. Расписание хранится в специальной таблице — crontab и задается в формате:


* * * * * команда
┬ ┬ ┬ ┬ ┬
│ │ │ │ └── День недели (0–7) — где 0 и 7 — это воскресенье
│ │ │ └──── Месяц (1–12)
│ │ └─────── День месяца (1–31)
│ └──────── Час (0–23)
└────────── Минута (0–59)


0 4 * * * /home/user/backup.sh


Этот скрипт будет запускаться каждый день в 4:00. Звёздочка означает «каждое значение»:

* * * * * — каждую минуту, каждый час, каждый день...;
30 9 * * * — каждый день в 9:30;
0 0 * * 0 — каждое воскресенье в полночь;

На старте может быть непонятно, поэтому пользуйтесь: crontab.guru

Практический пример

Допустим у нас в какой-нибудь папке (например, /var/log/myapp) копятся логи и мы хотим удалять раз в неделю старые. Сначала создадим простой bash-скрипт clear_logs.sh:


#!/bin/bash

LOG_DIR="/var/log/myapp"
DAYS_TO_KEEP=7

find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;


Этот скрипт ищет ".log" файлы в указанной директории (LOG_DIR) и удаляет те, что старше 7 дней (DAYS_TO_KEEP). Делаем файл исполняемым и добавляем cron-задачу:


chmod +x /home/user/scripts/clear_logs.sh


0 0 * * 0 /home/user/scripts/clear_logs.sh >> /var/log/clear_logs.log 2>&1


"0 0 * * 0" — каждое воскресенье в 00:00;

">> /var/log/clear_logs.log" — всё, что скрипт напишет в stdout (обычный вывод), попадёт в лог;

"2>&1" — перенаправление потока ошибок stderr в поток stdout, чтобы они тоже записывались в лог;

В нашем случае скрипт ничего не выводит, однако если возникнут ошибки по типу: "нет доступа к папке" или "нет прав на удаление", то они пойдут в stderr и запишутся в лог.

Важные команды:

Чтобы посмотреть список задач (расписание), можно использовать команду "crontab -l". Создание и изменение задач, команда "crontab -e". Удаление всех задач "crontab -r".

LinuxCamp | #cron
🔥30👍222😢1



tgoop.com/linuxcamp_tg/324
Create:
Last Update:

Как работает cron и зачем он нужен?

Если вы хоть раз хотели, чтобы скрипт запускался сам — без вашего участия — скорее всего, вам пригодится cron. Это системный инструмент (ДЕМОН), который позволяет выполнять команды/скрипты по расписанию.

Сфер применения достаточно много, но суть технологии - автоматизировать рутинные задачи: очистка логов, обновление данных и т.д. Как говорилось в одной из статей выше cron — демон, который выполняет команды в запланированное время.

Дополню, что он каждую минуту проверяет свое расписание, наступило ли время начинать выполнять задачу. Расписание хранится в специальной таблице — crontab и задается в формате:


* * * * * команда
┬ ┬ ┬ ┬ ┬
│ │ │ │ └── День недели (0–7) — где 0 и 7 — это воскресенье
│ │ │ └──── Месяц (1–12)
│ │ └─────── День месяца (1–31)
│ └──────── Час (0–23)
└────────── Минута (0–59)


0 4 * * * /home/user/backup.sh


Этот скрипт будет запускаться каждый день в 4:00. Звёздочка означает «каждое значение»:

* * * * * — каждую минуту, каждый час, каждый день...;
30 9 * * * — каждый день в 9:30;
0 0 * * 0 — каждое воскресенье в полночь;

На старте может быть непонятно, поэтому пользуйтесь: crontab.guru

Практический пример

Допустим у нас в какой-нибудь папке (например, /var/log/myapp) копятся логи и мы хотим удалять раз в неделю старые. Сначала создадим простой bash-скрипт clear_logs.sh:


#!/bin/bash

LOG_DIR="/var/log/myapp"
DAYS_TO_KEEP=7

find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;


Этот скрипт ищет ".log" файлы в указанной директории (LOG_DIR) и удаляет те, что старше 7 дней (DAYS_TO_KEEP). Делаем файл исполняемым и добавляем cron-задачу:


chmod +x /home/user/scripts/clear_logs.sh


0 0 * * 0 /home/user/scripts/clear_logs.sh >> /var/log/clear_logs.log 2>&1


"0 0 * * 0" — каждое воскресенье в 00:00;

">> /var/log/clear_logs.log" — всё, что скрипт напишет в stdout (обычный вывод), попадёт в лог;

"2>&1" — перенаправление потока ошибок stderr в поток stdout, чтобы они тоже записывались в лог;

В нашем случае скрипт ничего не выводит, однако если возникнут ошибки по типу: "нет доступа к папке" или "нет прав на удаление", то они пойдут в stderr и запишутся в лог.

Важные команды:

Чтобы посмотреть список задач (расписание), можно использовать команду "crontab -l". Создание и изменение задач, команда "crontab -e". Удаление всех задач "crontab -r".

LinuxCamp | #cron

BY LinuxCamp | DevOps


Share with your friend now:
tgoop.com/linuxcamp_tg/324

View MORE
Open in Telegram


Telegram News

Date: |

Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. Content is editable within two days of publishing How to Create a Private or Public Channel on Telegram? To edit your name or bio, click the Menu icon and select “Manage Channel.” The Standard Channel
from us


Telegram LinuxCamp | DevOps
FROM American