This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
# Настройка автоматического запуска runner.sh каждый час
|
||||||
|
|
||||||
|
Есть два способа настроить запуск `runner.sh` каждый час:
|
||||||
|
|
||||||
|
## Вариант 1: Systemd Timer (Рекомендуется)
|
||||||
|
|
||||||
|
Этот вариант рекомендуется, так как в проекте уже используются systemd сервисы.
|
||||||
|
|
||||||
|
### Установка:
|
||||||
|
|
||||||
|
1. Скопируйте файлы в systemd:
|
||||||
|
```bash
|
||||||
|
sudo cp services/runner.service /etc/systemd/system/
|
||||||
|
sudo cp services/runner.timer /etc/systemd/system/
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Или используйте скрипт установки:
|
||||||
|
```bash
|
||||||
|
chmod +x services/install_runner_timer.sh
|
||||||
|
sudo bash services/install_runner_timer.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Вручную:
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable runner.timer
|
||||||
|
sudo systemctl start runner.timer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Управление:
|
||||||
|
|
||||||
|
- Проверить статус: `sudo systemctl status runner.timer`
|
||||||
|
- Остановить: `sudo systemctl stop runner.timer`
|
||||||
|
- Запустить: `sudo systemctl start runner.timer`
|
||||||
|
- Отключить: `sudo systemctl disable runner.timer`
|
||||||
|
- Просмотр логов: `sudo journalctl -u runner.service -f`
|
||||||
|
- Список всех timers: `sudo systemctl list-timers`
|
||||||
|
|
||||||
|
### Настройка расписания:
|
||||||
|
|
||||||
|
Отредактируйте файл `/etc/systemd/system/runner.timer`:
|
||||||
|
|
||||||
|
- `OnCalendar=hourly` - каждый час
|
||||||
|
- `OnCalendar=*-*-* *:00:00` - каждый час в начале часа
|
||||||
|
- `OnCalendar=*-*-* 0,6,12,18:00:00` - в 0, 6, 12, 18 часов
|
||||||
|
- `OnCalendar=Mon..Fri 09:00:00` - каждый будний день в 9:00
|
||||||
|
|
||||||
|
После изменения: `sudo systemctl daemon-reload`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Вариант 2: Cron
|
||||||
|
|
||||||
|
Классический способ для периодических задач.
|
||||||
|
|
||||||
|
### Установка:
|
||||||
|
|
||||||
|
1. Откройте crontab для редактирования:
|
||||||
|
```bash
|
||||||
|
sudo crontab -e
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Добавьте строку:
|
||||||
|
```bash
|
||||||
|
0 * * * * /bin/bash /opt/testbot-git/runner.sh >> /opt/testbot-git/runner_cron.log 2>&1
|
||||||
|
```
|
||||||
|
|
||||||
|
Это запустит скрипт в начале каждого часа (0 минут каждого часа).
|
||||||
|
|
||||||
|
### Альтернативные варианты расписания:
|
||||||
|
|
||||||
|
- `0 * * * *` - каждый час в начале часа (00:00, 01:00, 02:00...)
|
||||||
|
- `30 * * * *` - каждый час в 30 минут (00:30, 01:30, 02:30...)
|
||||||
|
- `*/30 * * * *` - каждые 30 минут
|
||||||
|
- `0 9-17 * * *` - каждый час с 9:00 до 17:00
|
||||||
|
|
||||||
|
### Просмотр логов:
|
||||||
|
|
||||||
|
Логи будут записываться в `/opt/testbot-git/runner_cron.log` (если указан в crontab).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Рекомендации
|
||||||
|
|
||||||
|
- **Systemd Timer** - лучше для интеграции с существующими сервисами, более гибкое управление, лучшие логи
|
||||||
|
- **Cron** - проще для простых задач, не требует root прав (можно использовать `crontab -e` без sudo)
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Скрипт для установки systemd timer для runner.sh
|
||||||
|
|
||||||
|
# Путь к директории проекта
|
||||||
|
PROJECT_DIR="/opt/testbot-git"
|
||||||
|
SERVICES_DIR="$PROJECT_DIR/services"
|
||||||
|
|
||||||
|
echo "Установка systemd timer для runner.sh..."
|
||||||
|
|
||||||
|
# Копирование файлов в systemd
|
||||||
|
sudo cp "$SERVICES_DIR/runner.service" /etc/systemd/system/
|
||||||
|
sudo cp "$SERVICES_DIR/runner.timer" /etc/systemd/system/
|
||||||
|
|
||||||
|
# Перезагрузка systemd для чтения новых файлов
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
|
||||||
|
# Включение и запуск timer
|
||||||
|
sudo systemctl enable runner.timer
|
||||||
|
sudo systemctl start runner.timer
|
||||||
|
|
||||||
|
# Проверка статуса
|
||||||
|
echo ""
|
||||||
|
echo "Статус timer:"
|
||||||
|
sudo systemctl status runner.timer --no-pager
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Список всех активных timers:"
|
||||||
|
sudo systemctl list-timers --no-pager
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Для просмотра логов используйте:"
|
||||||
|
echo " sudo journalctl -u runner.service -f"
|
||||||
|
echo " sudo journalctl -u runner.timer -f"
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# /etc/systemd/system/runner.service
|
||||||
|
[Unit]
|
||||||
|
Description=Zilant Bot Runner - Executes scheduled scripts
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/testbot-git
|
||||||
|
ExecStart=/bin/bash /opt/testbot-git/runner.sh
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# /etc/systemd/system/runner.timer
|
||||||
|
[Unit]
|
||||||
|
Description=Zilant Bot Runner Timer - Runs every hour
|
||||||
|
Requires=runner.service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
# Запуск каждый час
|
||||||
|
OnCalendar=*-*-* *:10:00
|
||||||
|
# Запуск сразу после загрузки системы (опционально)
|
||||||
|
OnBootSec=5min
|
||||||
|
# Если пропущен запуск (например, сервер был выключен), запустить сразу после включения
|
||||||
|
Persistent=true
|
||||||
|
# Точность запуска (по умолчанию 1 минута, можно уменьшить)
|
||||||
|
AccuracySec=1min
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
|
||||||
Reference in New Issue
Block a user