[ВОЛК] runner-timer
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-26 02:14:34 +03:00
parent 82bb7984e9
commit c8f1cc2595
4 changed files with 155 additions and 0 deletions
+87
View File
@@ -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)
+34
View File
@@ -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"
+16
View File
@@ -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
+18
View File
@@ -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