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