Автозапуск в Linux
- Recluse
- 22.10.2019
- 15 782
- 0
- 05.11.2022
- 24
- 24
- 0
- Содержание статьи
Systemd
На современных дистрибютивах Linux (а так же других UNIX-подобных операционных системах), одним из самых простых способов запуска нужной команды, скрипта или программы является создание сервиса для Systemd.
Рассмотрим решение задачи автозапуска скрипта hello.sh лежащего по адресу /home/sysadmin/:
- Сперва создадим файл по адресу
/lib/systemd/system/
, и назовем его hello.service. - Заполняем свежесозданный файл:
[Unit] Description=Hello script After=multi-user.target [Service] Type=idle ExecStart=/home/sysadmin/hello.sh [Install] WantedBy=multi-user.target
В первой строчке секции Unit можно написать краткое описание исполняемого файла, вторая отвечает за возможность запуска данного скрипта в многопользовательском режиме.
В секции Service, Type отвечает за однократный запуск (при значении idle), а ExecStart - это путь к исполняемому файлу. - Для включения автозапуска осталось выполнить несколько команд:
- Даем права на чтение всем пользователям:
sudo chmod 644 /lib/systemd/system/hello.service
- Обновляем список доступных сервисов systemd:
sudo systemctl daemon-reload
- Включаем автозагрузку сервиса hello:
sudo systemctl enable hello.service
- Даем права на чтение всем пользователям:
rc.local
Одним из самых старых способов запуска нужных команд является специальный файл rc.local. Находится данный файл в директории /etc/ и по умолчанию содержит всего одну команду:
exit 0
Достаточно написать что-то перед данной строкой, и эта команда будет исполнятся при запуске системы.
В современных системах, вроде Debian 9 или Ubuntu 18.04, данный файл отсутствует, но ради обеспечения обратной совместимости возможность автозапуска с его помощью оставлена.
Для его использования, нужно сперва данный файл создать, а затем дополнительно активировать через systemd:
systemctl enable rc-local
systemctl start rc-local.service
.bashrc и .profile
Если нужно автоматически запускать какую-то программу, скрипт или команду при входе пользователя в систему, то для этой цели прекрасно подойдут файлы .bashrc и .profile.
Данные файлы находятся в двух местах, и выполняются в следующем порядке:
- Общие для всех пользователей файлы находятся в директории /etc/
- Для каждого пользователя так же существуют отдельные экземпляры данных файлов, которые находятся в корне их домашних директорий- например, у пользователя sysadmin, они будут находится по пути /home/sysadmin.
Для корректного использования данных файлов, следует понимать их предназначение в системе:
- .bash_profile - данный файл используется для загрузки файлов .profile и .bashrc (в приведенном порядке).
- .bashrc - содержимое данного файла загружается при входе в режим терминала. Именно здесь задаются такие параметры, как внешний вид среды терминала, текстовый редактор по умолчанию и другое.
- .profile - содержимое данного файла загружается при загрузке графической оболочки. Здесь могут быть указаны различные переменные среды, и прочее не относящееся к bash содержимое.
Добавить комментарий