Как на Ubuntu настроить автоматический запуск команд через определенные промежутки времени?

Как настроить автоматическое выполнение команд `docker-compose down --volumes` и `docker-compose up` каждый день в 00:00 и выполнение определенных команд раз в месяц, независимо от перезагрузки системы?
  • 9 февраля 2024 г. 21:29
Ответы на вопрос 2
Для автоматического запуска команд через определенные промежутки времени вы можете использовать планировщик задач `cron`. Вот как это сделать:

1. Откройте терминал.

2. Введите `crontab -e` для редактирования crontab текущего пользователя.

3. Для ежедневного выполнения команд `docker-compose down --volumes` и `docker-compose up` в 00:00 добавьте следующие строки:

```bash
0 0 * * * cd /path/to/your/docker-compose/folder && /usr/bin/docker-compose down --volumes
1 0 * * * cd /path/to/your/docker-compose/folder && /usr/bin/docker-compose up -d
```

Эти строки говорят cron выполнять команду `docker-compose down --volumes` каждый день в полночь, а затем команду `docker-compose up` через минуту после полуночи (чтобы предоставить достаточно времени для полного выключения контейнеров).

4. Для выполнения определенных команд раз в месяц вы можете добавить следующую строку:

```bash
0 0 1 * * /path/to/your/script.sh
```

Здесь `/path/to/your/script.sh` – это путь к сценарию, который вы хотите выполнить в полночь первого числа каждого месяца. Убедитесь, что у вас есть выполнимый скрипт, и он имеет правильные права на выполнение (`chmod +x /path/to/your/script.sh`).

5. Сохраните файл и выйдите из редактора crontab. Cron автоматически подхватит новые задачи.

Обратите внимание, что для полноценной работы `docker-compose` в crontab команды должны содержать полные пути до `docker-compose` и каталога с файлом `docker-compose.yml`. Пути можно узнать при помощи команды `which docker-compose` и `pwd` (когда вы находитесь в нужной директории).

Если ваша система перезагружается, задачи cron также будут выполнены согласно расписанию после перезагрузки (если только не наступят условия для их выполнения во время простоя системы). 

Также обратите внимание, что если ваша система использует `systemd`, вместо `cron`, вы можете использовать `systemd timers` для управления периодическим выполнением задач.
Cron - вот твой ответ на твой вопрос. Осталось понять как это сделать.
Похожие вопросы