Свой фоновый сервис на systemd
Если у вас есть скрипт или бинарь, который должен работать постоянно и подниматься после перезагрузки, не нужно ни tmux, ни самописных init-скриптов — оформите его как systemd-сервис.
Unit-файл
Кладём описание в /etc/systemd/system/myapp.service:
[Unit]
Description=My background worker
After=network-online.target
[Service]
WorkingDirectory=/opt/myapp
EnvironmentFile=/opt/myapp/.env
ExecStart=/usr/bin/python3 -m myapp
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Restart=always с RestartSec поднимет процесс, если он упадёт; EnvironmentFile подтянет переменные окружения; WantedBy=multi-user.target включит автозапуск при загрузке.
Управление
systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp
Логи теперь централизованы и доступны через journald — с фильтром по юниту и хвостом в реальном времени:
journalctl -u myapp -f --since "10 min ago"
Так вы получаете автозапуск, перезапуск при сбое и единое место для логов без единой строчки своего кода для демонизации.