Автозапуск в Linux

  • 22.10.2019
  • 15 597
  • 0
  • 05.11.2022
  • 24
  • 24
  • 0
Автозапуск в Linux

Systemd

На современных дистрибютивах Linux (а так же других 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 можно написать краткое описание исполняемого файла, вторая отвечает за возможность запуска данного скрипта в многопользовательском режиме.
    В секции 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 не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.