Автозапуск в Линукс

Systemd

На современных дистрибютивах Линукс (а так же остальных UNIX-схожих операционных системах), среди наиболее обычных методов пуска подходящей команды, скрипта либо программы является создание сервиса для Systemd.

Рассмотрим решение задачи автоматического запуска скрипта hello.sh лежащего по адресу /home/sysadmin/:

  1. Сначала сделаем файл по адресу /lib/systemd/system/, и назовем его hello.service.
  2. Заполняем свежесозданный файл:
    [Unit]  Description=Hello script  After=multi-user.target    [Service]  Type=idle  ExecStart=/home/sysadmin/hello.sh    [Install]  WantedBy=multi-user.target

    В первой строке секции Unit можно написать короткое описание исполняемого файла, 2-ая отвечает за возможность пуска этого скрипта в многопользовательском режиме.
    В секции Service, Type отвечает за однократный пуск (при значении idle), а ExecStart — это путь к исполняемому файлу.

  3. Для включения автоматического запуска осталось выполнить несколько команд:
    • Даем права на чтение всем пользователям:
      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 содержимое.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *