Как добавить скрипт в автозагрузку Linux
Обновлено: 07.07.2024
Известные сервисы в Linux можно без проблем добавлять во время загрузки, потому что большинство из них идут со своим скриптом, который делается с помощью команд «chkconfig» и «systemctl».
Для системы инициализации Sys V:
Для системы systemd:
Иногда может потребоваться добавить пользовательский сценарий, команду или службу при запуске/загрузке. Если да, то как вы это делаете?
В этой статье давайте разберемся, как использовать следующие три метода для его реализации:
- Использование файла /etc/rc.d/rc.local
- Использование файла crontab
- служба systemd
Способ 1: использование файла /etc/rc.d/rc.local
Файл «/etc/rc.local» традиционно выполняется после запуска всех обычных компьютерных служб в конце процесса переключения на многопользовательский уровень выполнения.
Этот метод также работает в системе systemd, и вам нужно добавить расположение вашего скрипта в файл ‘/etc/rc.d/rc.local’, чтобы он запускался при загрузке.
Убедитесь, что у файла есть разрешение на запуск исполняемого файла.
Чтобы понять это подробнее, мы создадим простой скрипт, как показано ниже, но вы можете создать любой скрипт по мере необходимости:
После того как сценарий будет готов, установите права доступа к исполняемому файлу, как показано ниже:
Наконец добавьте скрипт в конец файла:
Перезагрузите систему, чтобы проверить это:
Метод 2: Использование файла crontab
cron автоматически выполняет запланированные задания в серверной части в определенное время.
Этого легко добиться с помощью специальной строки "@reboot" с заданием cron.
@reboot — это специальная строка, которая позволяет пользователю запускать любую команду или сценарий при запуске (во время загрузки).
В этом примере файл ‘/opt/scripts/run-script-on-boot.sh’ запускается при перезагрузке системы.
Мы будем использовать тот же скрипт, который был создан в приведенном выше примере. Для этого просто добавьте следующую запись в файл crontab:
Перезагрузите систему, чтобы проверить следующее:
Способ 3: Использование сервисного модуля systemd
Этот метод работает только в системе systemd и очень прост.
Для этого вам нужно создать сценарий запуска systemd и поместить его в каталог «/etc/systemd/system/».
Это наш пример скрипта запуска systemd:
После того как вы поместите сценарий модуля в папку systemd, выполните следующую команду, чтобы обновить файлы конфигурации systemd и включить службу:
Перезагрузите систему, чтобы проверить следующее:
Дополнительные советы:
Если вы хотите запустить скрипт в фоновом режиме, вам нужно добавить завершающий символ амперсанда "&".
Если вы хотите запустить команду от имени другого пользователя, используйте следующий формат:
Заключение
В этом руководстве кратко рассказывается, как добавить пользовательский сценарий, команду или службу при запуске.
Для любых других отзывов или вопросов вы можете использовать раздел комментариев или форму обратной связи.
Спасибо за поддержку!!
8 мыслей на тему «Как запустить скрипт при запуске с помощью systemd в Linux»
как можно написать ОДИН служебный файл для запуска перед выключением, перезагрузкой, а также ПОСЛЕ того, как сеть будет включена при запуске? Или это нельзя сделать для обоих в одном файле?
спасибо
богатый
Ожидается, что любая обычная служба systemd запустится при завершении работы, если ExecStop найден, аналогично ExecStart требуется для запуска службы во время перезагрузки, и если вы хотите, чтобы это произошло после сети, вы можете использовать After=network.target
Хотя для того, чтобы запустить службу перед выключением и рассмотреть другие сценарии, вы можете просмотреть различные статьи, которые я опубликовал на аналогичные темы.
Хорошо, но можно ли поместить ОБА в один служебный файл? Или часть выключения должна находиться в одном файле .service, а запуск - в отдельном файле .service?
спасибо
богатый
Я не вижу никаких проблем в наличии одного служебного файла. Пожалуйста, попробуйте и сообщите мне о своих результатах.
Получил эту ошибку. как исправить?
Вы можете проверить шаг 3.1, где я предоставил содержимое файла сервисного модуля systemd.
Вам нужно создать этот файл /etc/systemd/system/run-at-startup.service,
за которым следует systemctl daemon-reload
Я обновил статью, извините за ошибку. Я должен был добавить эту часть раньше.
Существует несколько этапов запуска Linux, и вы можете настроить свой собственный сценарий или программу автозапуска на любом из этапов, где это может быть отдельная команда, цепочка команд или исполняемый файл. сценарий оболочки. Однако могут быть некоторые различия в процедуре запуска между различными дистрибутивами и версиями Linux.
Современный Linux сначала загружается в systemd, тогда как более старые версии Linux используют System V init. Оба метода будут запускать cron и rc.local перед загрузкой среды рабочего стола, такой как GNOME или KDE. С другой стороны, серверные дистрибутивы Linux будут запускать оболочку по умолчанию, такую как Bash, после входа пользователя в консоль вместо загрузки среды рабочего стола.
Способы автоматического запуска программы при запуске Linux:
Автоматически запускать программу при запуске Linux через systemd
systemd — это стандартный системный и сервисный менеджер в современном Linux. Помимо прочего, он отвечает за выполнение программ и управление ими во время запуска Linux. Совместимые программы предоставляют файлы service unit, используемые systemd для управления выполнением программы.
Вы можете настроить systemd для автоматического запуска программ при запуске Linux, выполнив следующие действия:
Вам придется создать свой собственный сервисный модуль, если это пользовательская программа или если ваша программа не поставляется с ним во время установки.
Связано: Создание и изменение файлов системных модулей
включенный сервисный модуль выполняется во время загрузки
Автоматически запускать программу при запуске Linux через cron
cron — это демон для выполнения запланированных команд. Команды хранятся в таблице заданий cron или в crontab и уникальны для каждого пользователя в системе. Он запускается во время загрузки системы с помощью systemd или System V init, и вы можете запланировать выполнение своего задания или программы прямо во время загрузки системы, выполнив следующие действия:< /p>
Вы должны выбрать редактор для crontab, если пользователь впервые использует команду.
crontab будет создан для пользователя, выполняющего команду, и будет выполняться с использованием привилегий пользователя. Если вам нужно, чтобы ваша программа запускалась от имени пользователя root, запустите crontab -e от самого пользователя root.
@reboot определяет задание, которое будет выполняться во время загрузки системы.
По возможности используйте полный путь к своим программам и пишите команды в одну строку.
Файл сохраняется в /var/spool/crontab/
Автоматически запускать программу при запуске Linux через rc.local
rc.local является наследием системы System V init. Это последний сценарий, который необходимо выполнить перед переходом к экрану входа в среду рабочего стола или приглашению входа в систему на терминале. Обычно это сценарий оболочки Bash, из которого можно запустить что угодно.
Вы можете настроить свой скрипт rc.local, выполнив следующие действия:
Он должен начинаться с интерпретатора (/bin/bash) и заканчиваться кодом выхода (0 означает успех)
Файл будет выполнен от имени пользователя root во время загрузки системы
Автоматически запускать программу при запуске GNOME
GNOME — это среда рабочего стола по умолчанию для дистрибутивов Linux, таких как Ubuntu и Red Hat. GNOME можно настроить для запуска программ, когда пользователь входит в систему, и его можно настроить, следуя приведенной ниже статье:
Автоматически запускать программу при запуске KDE
KDE — еще одна популярная среда рабочего стола для Linux, которая используется по умолчанию в Kubuntu и openSUSE. Его можно легко настроить для запуска программ, когда пользователь входит в систему, как описано в следующей статье:
Автоматически запускать программу в новом сеансе Bash
Новая программа оболочки будет создана при запуске сеанса терминала. Bash — это оболочка по умолчанию для большинства дистрибутивов Linux, и при запуске она ищет следующие файлы в определенном порядке и выполняет их.
Эти файлы содержат команды и логику для установки правильных переменных среды и запуска необходимых программ на языке Bash. Он также настроен на нормальное выполнение других файлов, таких как /etc/bashrc, /etc/bash.bashrc и ~/.bashrc. р>
Вы можете отредактировать любой из этих файлов, чтобы ваша программа запускалась при запуске сеанса Bash. Ниже приведена часть типичного файла ~/.bashrc:
сообщить об этом объявлении
Автор: Мохд Шакир Закария
Облачный архитектор по профессии, но всегда считал себя разработчиком, предпринимателем и энтузиастом открытого исходного кода.
Читайте также: