Иногда требуется, чтобы программа автоматически стартовала после включения компьютера. В каждой операционной системе эта задачка решается по-своему и в Linux ее можно решить при помощи утилиты systemd. Последняя предоставляет возможность совершить автозапуск для приложения в любом дистрибутиве Linux, включая Ubuntu.
Программы, стартующие при запуске основанной на Linux операционной системы, контролируются systemd – системным и сервисным менеджером. systemd – это первый процесс, который запускается при запуске этой ОС и он всегда имеет идентификатор процесса (PID) 1. Все остальные процессы, запущенные на компьютере с Linux, запускаются systemd или процессом, который уже запустил systemd.
Чтобы настроить systemd на автоматический запуск нужной вам программы при старте Linux, выполните следующие действия.
- Проверьте, существует ли сервисный блок для программы, введя команду sudo systemctl list-unit-files —type=service. Вам придется вручную создать сервисный блок, если нужное приложение не поставляется с ним.
- Проверьте, включен ли сервисный блок нужного вам приложения командой sudo systemctl is-enabledXXX. Замена XXX укажите название приложения.
- Включите сервисный блок приложения для автостарта командой sudo systemctl enableXXX. Вместо XXX введите имя приложения.
- Снова проверьте, включен ли сервисный блок нужного вам приложения командой sudo systemctl is-enabledXXX.
Автозапуск нужного приложения через systemd может быть не всегда удобен. В этом случае можно воспользоваться службой Cron. Она выполняет команды, хранящиеся в cron(crontab):
- Откройте crontab командой crontab -e.
- Добавьте строку, которая начинается с @reboot. Продолжите эту строку командой запуска нужного вам приложения в формате [путь к исполнительному файлу приложения] [аргумент1] … [аргумент n]. Например: @reboot /root/backup.sh
- Сохраните файл crontab
- Повторно откройте файл crontab, чтобы убедиться в наличии команды запуска нужного вам приложения.
На некоторых компьютерах служба Cron может быть отключена. Убедитесь, что она работает командой sudo systemctl status cron.service и включите ее при необходимости командой sudo systemctl enable cron.service.