Ответ
В зависимости от типа приложения и дистрибутива, я использую разные методы автозагрузки:
1. Для пользовательских GUI-приложений (в DE типа GNOME/KDE):
Создаю .desktop файл в ~/.config/autostart/:
[Desktop Entry]
Type=Application
Name=My Monitoring Tool
Exec=/usr/local/bin/my-monitor
Comment=Starts system monitor on login
X-GNOME-Autostart-enabled=true
2. Для системных сервисов (через systemd):
Создаю юнит-файл в /etc/systemd/system/:
[Unit]
Description=Custom Backup Service
After=network.target
[Service]
Type=simple
User=backup-user
ExecStart=/opt/scripts/backup.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Активирую:
sudo systemctl daemon-reload
sudo systemctl enable custom-backup.service
3. Для пользовательских systemd сервисов:
Размещаю в ~/.config/systemd/user/ и включаю:
systemctl --user enable myapp.service
systemctl --user start myapp.service
loginctl enable-linger $USER # для запуска после выхода
4. Через cron (для скриптов):
@reboot /path/to/script.sh
В DevOps-практике я предпочитаю systemd для всего, что должно работать как сервис: он предоставляет логирование (journalctl), контроль зависимостей, автоматический рестарт и интеграцию с мониторингом.