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

  • 263
  • 0
  • 100,00%
  • 3

Содержимое статьи:

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

Если существует файл .bashrc, то файл .profile выполняться не будет!


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

Ваш e-mail не будет опубликован.

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