Termux – это мощный Linux‑эмулятор для Android, который позволяет запускать скрипты, управлять пакетами и интегрировать мобильное устройство в инфраструктуру DevOps. Часто возникает необходимость выполнять задачи автоматически: бэкапы, синхронизацию, мониторинг или периодический запуск скриптов. В этой статье мы рассмотрим два основных подхода к автоматизации в Termux – традиционный cron и решения, близкие к systemd, такие как Termux:Boot и Termux:Service.
Почему автоматизация важна в Termux
- Сокращение ручных действий – скрипт запускается без вашего вмешательства.
- Повышение надёжности – задачи выполняются даже после перезагрузки устройства.
- Экономия батареи – планировщики могут запускать процессы только в необходимое время.
- Возможность интеграции с облачными сервисами и CI/CD пайплайнами.
Cron в Termux
Крон – проверенный временем планировщик задач в Unix‑подобных системах. В Termux он доступен через пакет cronie (или busybox-cron).
Установка
pkg update && pkg install cronie
После установки необходимо запустить демон crond и добавить его в автозапуск.
Запуск демона
sv-enable crond
sv up crond
Команды используют sv – простой менеджер сервисов, входящий в состав пакета runit, который уже предустановлен в Termux.
Создание расписания
Откройте файл crontab:
crontab -e
Пример записи, которая будет выполнять скрипт backup.sh каждый день в 02:30:
30 2 /data/data/com.termux/files/home/scripts/backup.sh >> /data/data/com.termux/files/home/logs/backup.log 2>&1
Обратите внимание на полные пути, потому что cron запускает задачи в ограниченной среде без переменных $PATH и $HOME.
Тестирование
crontab -l # показать текущие задания
sv status crond # убедиться, что демон работает
Systemd‑подобные решения в Termux
Android не использует systemd, однако в Termux есть несколько инструментов, которые позволяют имитировать его поведение.
Termux:Boot
Это официальное приложение от разработчиков Termux, которое автоматически запускает скрипты из каталога ~/.termux/boot после каждой загрузки устройства.
# Установить приложение из Google Play или F-Droid
pkg install termux-api
# Создать директорию для скриптов автозапуска
mkdir -p ~/.termux/boot
# Пример скрипта, запускающего сервер Flask при старте
cat > ~/.termux/boot/start_flask.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
cd ~/projects/flask_app
export FLASK_APP=app.py
flask run --host=0.0.0.0 --port=5000 &
EOF
chmod +x ~/.termux/boot/start_flask.sh
После перезагрузки устройства скрипт будет выполнен автоматически.
Termux:Service
Пакет termux-services предоставляет возможность управлять «демонами» через sv (runit). Это близко к systemd‑юнитам, но проще в настройке.
pkg install termux-services
# Создать сервисный скрипт
mkdir -p ~/.termux/serviced
cat > ~/.termux/serviced/ssh.service <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
exec svlogd -tt /data/data/com.termux/files/home/logs/ssh.log
EOF
chmod +x ~/.termux/serviced/ssh.service
# Добавить в автозапуск
sv-enable ssh
sv up ssh
Сервис будет автоматически подниматься после запуска sv up ssh и останавливаться при выключении.
Termux:JobScheduler
Для задач, которые должны запускаться в определённое время, но без постоянного демона, можно воспользоваться termux-job-scheduler. Он использует встроенный Android JobScheduler.
pkg install termux-job-scheduler
# Запланировать задачу, которая выполнит скрипт каждые 15 минут
termux-job-scheduler -r 900 -e /data/data/com.termux/files/home/scripts/cleanup.sh
Параметр -r задаёт интервал в секундах, а -e – путь к исполняемому файлу.
Сравнение Cron и systemd‑подобных подходов
| Критерий | Cron (cronie) | Termux:Boot / Termux:Service |
|---|---|---|
| Запуск после перезагрузки | Требует отдельного автозапуска демона | Встроено в приложение (Boot) или через runit (Service) |
| Точность расписания | Минутная точность | Точно так же, но можно использовать Android JobScheduler для более гибких интервалов |
| Управление логами | Требуется вручную перенаправлять вывод | svlogd автоматически сохраняет логи в отдельный файл |
| Потребление ресурсов | Постоянный демон crond | Boot – без демонов, Service – runit лёгкий (< 1 МБ RAM) |
| Гибкость конфигурации | Только crontab‑файл | Поддержка скриптов, env‑переменных, зависимостей между сервисами |
Практические примеры
1. Автоматический бэкап базы данных SQLite каждые 6 часов
# Скрипт backup_sqlite.sh
#!/data/data/com.termux/files/usr/bin/sh
DB_PATH="$HOME/data/app.db"
BACKUP_DIR="$HOME/backups"
mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
cp "$DB_PATH" "$BACKUP_DIR/app_$TIMESTAMP.db"
Запуск через cron:
0 /6 * $HOME/scripts/backup_sqlite.sh >> $HOME/logs/backup_sqlite.log 2>&1
Или через Termux:Service (один сервис, который будет запускаться каждые 6 ч с помощью termux-job-scheduler)
termux-job-scheduler -r 21600 -e $HOME/scripts/backup_sqlite.sh
2. Мониторинг изменения файлов и отправка уведомления
# Скрипт watch_changes.sh
#!/data/data/com.termux/files/usr/bin/sh
WATCH_DIR="$HOME/monitor"
inotifywait -m -e modify,create,delete "$WATCH_DIR" |
while read path action file; do
termux-notification --title "File change" --content "$action $file" --priority high
done
Для постоянного мониторинга лучше использовать Termux:Service:
mkdir -p ~/.termux/serviced
cat > ~/.termux/serviced/watch.service <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
exec $HOME/scripts/watch_changes.sh
EOF
chmod +x ~/.termux/serviced/watch.service
sv-enable watch
sv up watch
Заключение
Автоматизация в Termux открывает широкий спектр возможностей: от простого планирования задач через cron до более продвинутого управления сервисами с помощью Termux:Boot, Termux:Service и Android JobScheduler. Выбор инструмента зависит от требований к надёжности, потреблению ресурсов и удобству конфигурации. Комбинируя эти подходы, вы сможете построить полноценную инфраструктуру на вашем Android‑устройстве.
Если вам требуется профессиональная настройка Termux‑окружения, разработка кастомных скриптов автоматизации или интеграция мобильных решений в корпоративные процессы – обратитесь в RybinskLab. Мы предоставляем консалтинг, разработку и поддержку решений под Android, включая Termux, Docker, CI/CD и облачные сервисы.