- Автозагрузка в Ubuntu
- Автозагрузка в Ubuntu
- Как добавить скрипт в автозагрузку Ubuntu
- Отсрочка автозапуска программ в Ubuntu
- Удаление из автозапуска Ubuntu
- Заключение
- Автозагрузка сервисов в Ubuntu
- Управление автозагрузкой сервисов в Linux
- 1. Список сервисов добавленных автозагрузку
- 2. Проверка состояния
- 3. Добавление в автозагрузку
- 4. Удаление из автозагрузки
- Автозагрузка сервисов пользователя Linux
- Выводы
Автозагрузка в Ubuntu
В Убунту есть 2 основных уровня автозапуска — в системе инициализации systemd и в рабочем окружении. Для пользовательского софта автозагрузка в Ubuntu может быть настроена в удобной графической утилите. Добавить в автозапуск можно программу или собственный скрипт.
Автозагрузка в Ubuntu
Актуальная Ubuntu 18.04 по умолчанию в качестве рабочего окружения использует GnomeShell. Для настройки автозапуска в этой версии ОС нужно:
- Нажать на кнопку «Обзор» в левом верхнем углу экрана.
- Начать вводить в строку поиска «Автоматически запускаемые приложения» и запустить найденную утилиту.
- Далее кликнуть по кнопке «Добавить», чтобы внести желаемое приложение в автозагрузку.
- Заполнить поля «Имя» (название программы — как удобно) и «Команда» (та, которую вводят в консоли для запуска этого софта). Поле «описание» необязательное, сюда разрешено вписать любой комментарий.
Пример добавления Transmission в автозагрузку в Линукс показан на скриншоте:
- Нажать кнопку «Добавить».
Совет! Чтобы не ошибиться с правильностью команды, нужно установить утилиту «Главное меню» из UbuntuSoftwareCenter.
В ней выбрать интересующий пункт и открыть его свойства. Правильная команда копируется из одноименной строки.
Запуск приложений в Ubuntu, присутствующих в списке и помеченных галочкой, будет происходить при каждом старте ОС. Все это приложения данного пользователя, системные программы и сервисы, утилита не отображает. В предыдущих версиях операционной системы с графической оболочкой Unity утилита для настройки автозагрузки также ищется поиском по меню Dash или открывается с помощью команды в терминале:
Как добавить скрипт в автозагрузку Ubuntu
Кроме конкретного софта, добавить в автозагрузку Linux легко и самописный скрипт, чтобы оптимизировать работу за компьютером. Для этого необходимо:
- Сделать скрипт исполняемым с помощью команды:
Есть другой, классический, но считающийся устаревшим способ настроить автозапуск скрипта в Ubuntu. Для его выполнения нужно:
- Открыть терминал и выполнить команду:
Этот способ подойдет и для автозагрузки на UbuntuServer, где нет графики.
Отсрочка автозапуска программ в Ubuntu
Если программ в автозагрузке Убунту очень много, их необходимо подгружать в определенном порядке или запускать спустя какое-то время после загрузки системы — поможет функция отсрочки. Для ее активации используется unix-утилита sleep. Воспользоваться возможностями этого инструмента можно в уже знакомой программе «Автоматически запускаемые приложения». Для этого нужно:
- Открыть окно параметров запускаемых приложений.
- Выделить курсором программу, автозапуск которой необходимо отсрочить, и воспользоваться кнопкой «Изменить».
- В строке «Команда» перед имеющеюся записью внести:
где цифра после слова «спать» равна количеству секунд, которое приложение бездействует сразу после старта системы, перед тем как запуститься. Между данной формулой, в конце которой обязательна точка с запятой, и командой на запуск приложения, должен быть пробел.
В приведенном примере отложенной автозагрузки программ в Ubuntu приложение остается в состоянии «сна» 2 минуты, прежде чем открыться. Например, запуск через полчаса после старта ОС будет выглядеть как sleep 3h «имя программы». Пример, в котором Transmission запускается через 1 час:
Аналогичным образом можно добавить в автозагрузку в Linux отсроченное выполнение пользовательского скрипта или запуск медиафайла.
Удаление из автозапуска Ubuntu
Чтобы убрать софт из автозагрузки Ubuntu, можно воспользоваться одним из 2 способов: через «Автоматически запускаемые приложения» или вручную. В первом случае достаточно запустить утилиту, выделить нужную программу и нажать «Удалить». Простое снятие галочки отключается программа, и она не будет запускаться при старте системы.
Ручной способ подразумевает использование папки autostart в Ubuntu. Она расположена по адресу /home/имя пользователя/.config/autostart/ (чтобы увидеть эту скрытую папку, следует открыть домашний каталог в файловом менеджере и нажать одновременно клавиши Ctrl+H). В ней лежат файлы с расширением .desktop для каждой программы из автозапуска, формирующиеся автоматически при добавлении через графическую утилиту. Достаточно удалить файл, чтобы программа больше не открывалась при включении компьютера.
Заключение
Автозагрузка в Ubuntu имеет множество способов тонкой настройки. Ее возможности трудно охватить. Грамотное использование этого инструмента делает ОС Linux практичнее в повседневных задачах.
Автозагрузка сервисов в Ubuntu
Сервис в операционных системах семейства Unix — это программа, что выполняется в фоновом режиме и не имеет окон или других способов связи с пользователем. В операционной системе, работают в фоновом режиме огромное количество сервисов. И запускаются они при старте системы.
Всем этим управляет система инициализации Systemd. С помощью неё можно смотреть какие сервисы сейчас запущены, смотреть их логи, настраивать автозагрузку сервисов и многое другое. В этой статье мы рассмотрим как добавлять сервисы в автозагрузку в Linux на примере Ubuntu.
Управление автозагрузкой сервисов в Linux
Как было сказано ранее, сервисы, это обычные программы, которые выполняются в фоне и не связанны со стандартными потоками ввода и вывода. В Systemd настройки каждого сервиса находятся в отдельном файле, который хранится в файловой системе. Более подробно обо всём этом можно прочитать в статье Управление службами в Linux, а в этой статье сосредоточимся только на автозагрузке.
В Linux ещё со времен SysVInit существует понятие уровней загрузки (runlevel). Уровень загрузки определяет набор сервисов, которые должны быть запущены. В Systemd эти уровни загрузки тоже были реализованы в виде юнитов целей (target). Вот список уровней загрузки и соответствующие им цели:
- Run level 0 (poweroff.target, runlevel0.target) — выключение компьютера.
- Run level 1 (rescue.target, runlevel1.target) — режим восстановления.
- Run level 3 (multi-user.target, runlevel3.target) — текстовый режим.
- Run level 5 (graphical.target) — загрузка графического окружения.
- Run level 6 (reboot.target, runlevel6.target) — перезагрузка системы.
При добавлении сервиса в автозагрузку Systemd просто создает символическую ссылку на файл юнита в папке соответствующего уровня загрузки. А при каком уровне загрузки должен запускаться юнит указано в его конфигурации.
При старте системы, если это рабочая станция с графическим окружением Systemd запускает все сервисы для multi-user.target и затем graphical.target. Для серверов без графического окружения запускается только multi-user.target, а теперь давайте более подробно рассмотрим всё на практике.
1. Список сервисов добавленных автозагрузку
Если вам нужно знать какие сервисы на данный момент добавлены в автозагрузку используйте команду list-unit-files с фильтром по состоянию:
systemctl list-unit-files —type=service —state=enabled
2. Проверка состояния
Для того чтобы проверить находится ли сервис уже в автозагрузке используйте команду is-enabled. Например:
sudo systemctl is-enabled nginx
С помощью команды status вы можете посмотреть находится ли сервис в автоазагрузке, а также проверить запущен ли он в данный момент и посмотреть последние логи:
sudo systemctl status nginx
В строчке Loaded после пути к файлу юнита указано состояние автозагрузки disabled, enabled или static. Сервисы отмеченные как static запускаются автоматически и их автозагрузка не может быть отключена.
3. Добавление в автозагрузку
Добавить сервис в автозагрузку можно с помощью команды enable:
sudo systemctl enable имя_сервиса
Например, для того чтобы добавить в автозагрзку веб-сервер Nginx используйте такую команду:
sudo systemctl enable nginx
Если сервис ещё не запущен, то вы можете комбинировать команду enable с опцией —now для того чтобы запустить его прямо сейчас:
sudo systemctl enable —now nginx
Большинство системных сервисов, в том числе Nginx загружаются при уровне загрузки 3 (multi-user.target). Вы можете убедится, что в папке /etc/systemd/system/multi-user.target.wants есть ссылка на этот юнит:
ls -l /etc/systemd/system/multi-user.target.wants | grep nginx
4. Удаление из автозагрузки
Удалить сервис из автозагрузки можно, указав опцию disable:
sudo systemctl disable имя_сервиса
Автозагрузка сервисов пользователя Linux
Кроме системных сервисов, Systemd поддерживает сервисы, запускаемые от имени обычных пользователей. Такие сервисы не требуют прав суперпользователя для управления ими. Для управления такими сервисами нужно использовать опцию —user.
Обычно такие сервисы запускаются при старте первой сессии пользователя и завершаются при завершении его последней сессии. Для того чтобы посмотреть какие сервисы текущего пользователя добавлены в автозагрузку используйте такую команду:
systemctl list-unit-files —user —type=service —state=enabled
Для добавления сервиса в автоазгрузку используйте команду enable с опцией —user. Например для добавления pipewire в автозагрузку выполните:
systemctl enable —user pipewire
Аналогично всё будет работать для отключения автозагрузки:
systemctl disable —user pipewire
Если вы хотите чтобы для конкретного пользователя его сервисы запускались при загрузке системы, нужно выполнить такую команду:
sudo loginctl enable-linger имя_пользователя
Например если имя пользователя sergiy:
sudo loginctl enable-linger sergiy
После этого вы можете убедится в том, что это работает авторизовавшись от имени другого пользователя и посмотрев состояние сервиса. Например, для Pipewire:
sudo systemctl —user —machine=sergiy@ status pipewire —no-pager
Выводы
В этой статье мы рассмотрели как управлять автозагрузкой сервисов в Linux. Более подробно про автозагрузку в целом читайте в статье автозагрузка в Linux. В ней рассматривается не только автозагрузка сервисов, но и другие способы автозагрузки программ.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.