Как добавить сервис в автозагрузку в Linux?
При старте системы запускаются жизненно необходимые для нее службы/демоны и т.д. Для включения в этот список необходимых вам компонентов, чтобы не делать каждый раз настройку вручную существуют различные способы, также непосредственно через специальные демоны автозагрузки.
В этой статье рассмотрим процесс добавления сервисов в автозагрузку для самых популярных дистрибутивов Linux: CentOS, Debian и Ubuntu.
Debian/Ubuntu
Для дистрибутивов Debian и Ubuntu управление автозагрузкой служб и доменов осуществляется с помощью утилиты update-rc.d с посредством демона init. Сама утилита работает с символическими ссылками связанных с init скриптами, которые управляют запуском/остановкой программ расположенных в каталоге /etc/init.d.
Коротко пройдемся по основных командах:
- вывод списка сервисов и их состояния
service —status-all
- добавить сервис в автозагрузку (service — название самого сервиса).
update-rc.d services defaults
- убрать сервис с автозагрузки
update-rc.d -f service remove
Опция -f отвечает за удаление символических ссылок.
CentOS 6
Здесь за автозагрузку демонов/программ/служб отвечает содержимое каталога /etc/rc.local. Управление этими процессами идет через команду chkconfig, которая кроме стандартных функций добавления/удаления служб с автозагрузки имеет уровни выполнения команды (уровни запуска). Уровни запуска — режимы работы операционной системы, каждый с каких несет в себе установленное направление функционала и ограничений. Всего уровней существует семь, которые нумеруются от 0 до 6.
0 уровень — прекращение работы системы.
1 уровень — однопользовательский режим, доступен только пользователю root.
2 уровень — многопользовательский режим, возможно работа с нескольких терминалов, вход уже как обычные пользователи.
3 уровень
4 уровень — не используется.
5 уровень — включение графической подсистемы X11, для возможности использования графического интерфейса вместо командной строки.
6 уровень — перезагрузка системы.
- вывод на экран списка всех сервисов
chkconfig —list
- предоставления информацию по конкретному сервису
chkconfig —list service
Здесь после использования команды на экране в консоли возле номеров уровней будут идти индикаторы on -включен, off — выключен, что определяет на каких уровнях работает или нет указанный сервис.
- добавление сервиса в автозагрузку
chkconfig service on
- удаление сервиса с автозагрузки
chkconfig service off
- для добавления сервиса на определенных уровнях
chkconfig —level 015 httpd on
Где после —level указываются номера уровней (слитно) на которых будет доступен сервис.
В более новых версиях CentOS, Debian и Ubuntu в качестве демона автозагрузки сервисов применяется systemd. Systemd для этого использует unit-файлы из каталога /etc/systemd/system. Systemd является очень универсальным и многофункциональным менеджером систем Linux, и позволяет распределять запуск служб в процессе загрузки ОС (включать и отключать их), тем самым максимально контролировать сам запуск. Systemd идет в связке с командой systemctl через которую идет управление автозагрузкой сервисов в системе.
- вывод списка всех сервисов
systemctl list-unit-files —type=service
- просмотр статуса определенного сервиса
systemctl status service
- добавить сервис в автозагрузку
systemctl enable service
- удалить сервис с автозагрузки
systemctl disable service
- проверить добавлен ли сервис в автозагрузку
systemctl is-enabled service
Автозагрузка сервисов призвана немного облегчить рутинные задачи, с чем успешно справляется.
Купить VPS с Linux
Добавление приложения в автозагрузку Linux (как запускать программу автоматически при старте ОС Linux)
Сегодняшний вопрос (насчет автозагрузки приложений) весьма популярен, причем, как при работе в Windows, так и Linux. Разумеется, в Linux он имеет свои особенности…
Наверное, для начала сразу же следует сказать, что в Linux несколько уровней (режимов) автозагрузки. Например, есть автозагрузка на уровне ядра, на уровне скриптов (rc.local), bash, и пр. малопонятные для начинающего пользователя аббревиатуры…
И в этой заметке я бы не хотел рассматривать все «эти тонкости», а показать наипростейшие варианты добавить обычное приложение (Chrome, Firefox, и т.д. и т.п.) в автозагрузку Linux (так, чтобы оно стартовало вместе с загрузкой ОС). Думаю, большинство пользователей именно это и интересует… 😉
👉 В помощь!
Если в процессе настройки вам понадобиться указать программу вручную (которую требуется авто-загружать) — ищите исполняемый файл в каталоге: /usr/bin (для отдельных приложений, запускаемых от имени админа: /usr/sbin).
*
Содержание статьи
Примеры настройки автозагрузки
Вариант 1
Итак…
Для начала совет банальный — откройте настройки того приложения, которое вам нужно добавить в автозагрузку. Возможно, что среди его параметров будет заветный «флажок», позволяющий запускать приложение при старте системы. См. пример на скрине ниже. 👇
Примечание: в некоторых системах Linux подобная опция в настройках приложения может ничего не дать… (т.е. приложение не будет запускаться при загрузке ОС).
Настройки конкретного приложения / параметры запуска
*
Вариант 2
Теперь пару слов о панелях управления тех дистрибутивов Linux, которые я рекомендовал…
*
Linux Mint
В этом дистрибутиве всё гораздо проще, чем просто «просто». 👌
Сначала необходимо открыть меню ПУСК/параметры системы и перейти во вкладку
Параметры системы — автозагрузка (Linux Mint)
После кликнуть по «плюсику» и выбрать нужное приложение из списка. Это всё… ✌
Добавляем нужно приложение (Linux Mint)
*
Elementary OS
Здесь все делается практически аналогично, как в Linux Mint.
Сначала необходимо открыть параметры системы и перейти во вкладку «Приложения».
Параметры системы — приложения (Elementary OS)
После раскрыть меню «Автозапуск», нажать на «плюс» и выбрать нужное приложение.
Автозапуск — выбор нужного приложения (Elementary OS)
Теперь приложение для мониторинга будет запускаться при старте Linux
*
Ubuntu
В Ubuntu также есть специальное ПО для решения этой задачи: необходимо перейти во вкладку «Система → Параметры → Запускаемые приложения».
Для добавления своей программы необходимо нажать на кнопку «Добавить», как в моем примере 👇. Потребуется указать имя, команду (об этом далее) и описание.
Ubuntu — добавить программу
После необходимо будет указать нужный исполняемый файл (программу) — обычно, они копируются в каталог
Находим нужное приложение в каталоге
*
Deepin
Этот дистрибутив (на мой взгляд) в плане простоты работы выигрывает у предыдущих!
Представьте, чтобы добавить программу в автозагрузку — достаточно просто кликнуть по ее значку правой кнопкой мыши и в контекстном меню выбрать оное. 👇
Как вам?.. (так просто даже в Windows не сделаешь!)
Как добавить ярлык на раб. стол или программу в автозагрузку
Разумеется, для исключения приложения из автозагрузки — нужно проделать обратную операцию: также кликнуть ПКМ по значку.. .
Теперь на приложении спец. значок — оно будет стартовать вместе с системой (Deepin)
*
Дополнения по теме — приветствуются в комментариях!
На сим пока всё, успехов!
✌
Полезный софт:
- Видео-Монтаж
Отличное ПО для создания своих первых видеороликов (все действия идут по шагам!).
Видео сделает даже новичок!
- Ускоритель компьютера
Программа для очистки Windows от «мусора» (удаляет временные файлы, ускоряет систему, оптимизирует реестр).
Другие записи:
Власть над демонами или автозапуск в Linux / Хабр
Для реализации автозапуска в Linux написано уже немало и на разных языках, но приходится искать, потому постарался свести большую часть тут. Здесь не рассказывается полностью весь процесс с нуля, но предоставлено достаточно информации и ссылок, чтобы сделать атоматический запуск программ в Linux реальностью.
Стоит сразу заметить — чтобы программа была полноценным сервисом/демоном, она должна быть соответствующе написана (link1, link2). Впрочем такое делают не всегда, хотя возможно это и не совсем правильно.
Существуют несколько способов сделать автозапуск программ в Linux:
- записать вызов программы/скрипта запуска в /etc/rc.local в фоновом режиме (&) (в разных дистрибутивах может лежать в разных местах, например, /etc/rc.d/rc.local) с перенаправленными потоками ввода/вывода в /dev/null. Например, «/home/user/my_prog 1 > /dev/null 2 > /dev/null &». Также, дополнительно, можно воспользоваться командой nohup;
- внести вызов в /etc/inittab, согласно правилам его оформления. В отличие от первого способа тут можно указать уровень запуска для программы;
- написать скрипт, позволяющий запускать/останавливать/перезапускать программу как демона, а также получать информацию о её состоянии.
Первый способ самый лёгкий, но и самый проблемный. Файл rc.local есть не во всех дистрибутивах. В нём нельзя задать уровень запуска. Если там записано несколько программ, то сложно ими управлять как сервисами (разве что запустить или остановить все одновременно). И, под конец, запуск из него подрывает устойчивость системы от взлома (примеры можно легко найти в поисковике).
Второй метод довольно экзотичный, сам узнал о нём совсем недавно, хотя пишут, что им пользуются многие администраторы. Тем не менее, используя его, нельзя оперировать запущенными таким способом программами как демонами, что довольно неудобно. Да и загромождать inittab некрасиво.
Последний метод на текущий момент самый «кошерный», но немного сложнее предыдущих (возможно, на первый взгляд). Именно им представлены все системные демоны, что говорит само за себя. Потому его и рассмотрю ниже.
Также есть способ автозапуска графических программ, но его опишу в конце, отдельно от остальных, т.к. он имеет недемоническую сущность.
Сразу обмолвлюсь, что у меня стоит Debian 6 и в других дистрибутивах пути могут несколько различаться.
Автозапуск программы как демона
Обычно в системе уже есть много подсказок как это сделать, но всё-таки приходится лазить по разным файлам и искать в интеренете дополнительную информацию. Это не значит, что я опишу тут каждую букву, но искать придётся меньше, надеюсь.
Для начала стоит заглянуть в каталог /etc/init.d. Здесь содержатся запускные скрипты всех сервисов, а также два файла для желающих написать себе такой же:
README и skeleton
skeleton содержит в себе болванку скрипта запуска с довольно подробными комментариями, а README его неплохо дополняет, не смотря на его небольшой размер. Также можно посмотреть и другие файлы и попытаться найти там что-то, что прояснит непонятную ситуацию.
В 6-ом debian`е для запускных скриптов демонов используется LSB (Linux Script Base) Init Standart. Почитать о нём подробнее можно тут. Для систем, где LSB не используется стоит взглянуть сюда.
Рассмотрим поближе файл skeleton. Первое с чего он должен начинаться, конечно же «#!/bin/sh», т. к. init-скрипт — запускной файл. Далее идёт комментированный заголовок:
### BEGIN INIT INFO # Provides: skeleton # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example initscript # Description: This file should be used to construct scripts to be # placed in /etc/init.d. ### END INIT INFO
Может показаться, что это просто лишняя информация от автора, но это не так. То, что указано здесь используется при прописывании скрипта в систему. Тут как раз пригодится файл README, который показывает, что в заголовке skeleton перечислены не все возможные параметры. Как минимум есть ещё следующие:
# Should-Start: $portmap # Should-Stop: $portmap # X-Start-Before: nis # X-Stop-After: nis # X-Interactive: true
Все параметры и их полное описание (на английском) можно увидеть
тут, а на русском
тути
тут(спасибо
awzrnoза новые ссылки ^_^). К русскому варианту добавлю, что в Required-Start: можно прописать $all, тогда текущий скрипт будет запускаться после всех остальных (иногда это бывает нужно). Также X-Interactive: true показывает, что этот скрипт может взаимодействовать с пользователем, запросом на ввод чего-нибудь, например пароля.
Далее в skeleton идёт инициализация переменных, используемых в самом скрипте. Часть из них нужно будет настроить под свои нужды. Потом проверки на то, что сам демон существует и попытка прочитать конфигурационный файл (их имена должны быть указаны в переменных выше), далее загрузка переменных rcS, а потом идёт одна из самых интересных частей init-файла:
. /lib/lsb/init-functions
это определение LSB функций работы с логами, LSB-статусом сервиса, работы с процессом. В некоторых дистрибутивах этот файл может находиться в каталоге /etc/init.d. Названия и часть подробностей можно узнать непосредственно из комментариев к функциям в этом файле, а также тут.
Следующая часть — непосредственно тело скрипта. Тело состоит из условных частей, которые являются командами для демона: start, stop, restart/reload/force-reload, status. Кто-то выделяет их в отдельные функции, кто-то нет. На мой взгляд, функциями они выглядят эстетичнее и код более понятен. Все эти команды объединяет оператор выбора case, который и выбирает для исполнения нужный кусок кода, в зависимости от команды (параметра) с которой был запущен init-скрипт.
Таким образом для создания обычного скрипта достаточно подставить в переменные в начале файла нужные значения и, возможно, немного добавить кода в функции start/stop (например загрузку/выгрузку драйвера).
После того как файл будет готов его нужно скопировать в /etc/init.d и добавить в автозагрузку:
update-rc.d <имя_скрипта> defaults
(или insserv <имя_скрипта> для debian 6 stable и выше)
Удалить из автозагрузки можно так:
update-rc.d -f <имя_скрипта> remove
(или insserv -r <имя_скрипта> для debian 6 stable и выше)
Далее также можно использовать команды sysv-rc-conf в debian или service в fedora core, чтобы включить/выключить автозагрузку сервиса.
Автозапуск графического ПО без ввода паролей
Сама по себе реализация такой возможности понижает уровень защищённости ОС, т.к. войти может любой. Но бывают ситуации, когда это необходимо. Рассмотрю тут варианты только для двух основных графических менеджеров, т.к. других установленных под рукой нет.
KDE:
Убрать запрос пароля на вход можно в центре управления (kcontrol) -> системное администрирование -> менеджер входа в систему -> удобства. Там выбрать пользователя, под которым входить (кроме рута) и поставить нужные галочки (разрешить автовход и вход без ввода пароля).
Чтобы сделать автозапуск программы нужно в каталог /home/<пользователь>/.kde/Autostart добавить ссылку на запускной файл/скрипт нужного ПО.
Gnome:
Тут убрать запрос пароля на вход можно также в центре управления (gnome-control-center) -> Login Screen. Там, под рутом (ткнуть на замок, ввести пароль) выбрать пользователя, под которым входить (кроме суперпользователя).
Для автозапуска программы опять же в центре управления выбрать Startup Applications -> Add и заполнить маленькую форму.
Для обоих графических менеджеров:
Если нужно запустить под обычным пользователем, но от рута, то ещё надо настроить правила в /etc/sudoers на запуск конкретной программы/набора программ от имени суперпользователя (манами рекомендуется для безопасности делать это с помощью visudo). Как это делать рассказывать не буду, т.к. в man sudoers всё хорошо расписано.
Пока всё.
Добавление команд в автозагрузку Linux
15 марта 2016 г. 6:19
На данный момент описанный мною способ уже устарел и лучше использовать другие способы. Например: для добавления служб можно воспользоваться командой systemctl. А для запуска своих скриптов использовать Systemd. Пока обновляется информация по этой статье, попробуйте поискать материал по этому вопросу в других источниках.
Чтобы команды запускались автоматически при старте Линукс, нужно создать файл /etc/init.d/local
sudo nano /etc/init.d/local
Затем добавляем свои команды или скрипты, например:
#! /bin/sh /usr/local/sbin/nginx /etc/init.d/bind9 start # добавляет bind9 в автозапуск service elasticsearch start # добавляет elasticsearch в автозапуск
Теперь файл, состоящий из списка команд, добавим в автозагрузку:
sudo chmod +x /etc/init.d/local # делаем файл исполняемым sudo update-rc.d local defaults 80 # добавляем скрипт /etc/init.d/local в автозагрузку
Этого достаточно, чтобы запускать команды и сервисы автоматически при загрузки системы.
Оцените статью
2.7 из 5 (всего 12 оценок)Спасибо за ваш отзыв!
После нажатия кнопки «Отправить» ваше сообщение будет доставлено мне на почту.
Права на использование материала, расположенного на этой странице https://vivazzi.pro/it/add-comands-to-autorun-linux/:
Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow"
в теге <a>
. Использование:
Автор статьи: Мальцев Артём
Ссылка на статью: <a href="https://vivazzi.pro/it/add-comands-to-autorun-linux/">https://vivazzi.pro/it/add-comands-to-autorun-linux/</a>
Подробнее: Правила использования сайта
Похожие статьи:
Настройка автозагрузки приложений в Ubuntu
Как добавить приложение в автозагрузку в Ubuntu? Многие наверное задумывались как добавить свое приложение в автозагрузку в дистрибутиве Ubuntu. Если вы задавались этим вопросом, ознакомьтесь с материалом ниже где все по пунктам описано.
Автоматически запускаемые приложения
Первым делом, что нам нужно чтобы добавить приложение в автозагрузку? Перейдем на боковую «Показать приложения» и воспользуемся поиском чтобы найти ярлык приложения — Автоматически запускаемые приложения. Запустим приложение — Автоматически запускаемые приложения(startup applications).
Добавление приложения в автозагрузку
Чтобы добавить новое приложение в автозагрузку, нажмем на кнопку добавить, далее мы увидим поля(имя, команда и описание) в поле имя мы просто добавляем имя приложения для автозагрузки как пример, я добавил в автозагрузку приложение Cairo-Dock.
Заполняем обязательные поля при добавлении в автозагрузку
Да, именно так, все просто и ничего лишнего:
- Поле имя — здесь можно добавить либо какое имя с большой или маленькой буквы разницы нет
- Поле команда — в данном поле нужно написать название программы с маленькой буквы, как пример — cairo-dock
- Поле описание — в данном поле пишем любое описание приложения, но можно и ничего не писать так как поле не обязательное.
Дополнительно есть кнопка — Обзор это как второй вариант, для добавления приложения в автозагрузку:
Добавление в автозагрузку через Tweaks / Доп.Настройки Gnome
Отличное системное приложение, которое позволяет выполнить много настроек в в системе в рамках одного приложение, это подобно системной замене ранее стороннего приложения Ubuntu Tweak.
Устанавливается легко, запускаете Ubuntu Software, в поиск вводит Tweaks и устанавливаем его. После первого запуска в левой колонке выберите пункт «Автозапуск«, далее нажмите по кнопке «+».
Выберите приложение, которое нужно добавить в автозагрузку с списка и нажмите кнопку «Добавить«. Вот так все просто делается.
Материал был обновлен и актуализирован: 2021-04-03 — 21:57 — Суббота
Linux добавить файл в автозагрузку. Как в Linux добавить программу в автозагрузку? Добавление программ в автозапуск в Linux
Многие программы мы используем постоянно и запускаем их каждый раз при старте системы, а некоторые, такие, как мессенджеры или различные утилиты должны постоянно работать в фоне чтобы правильно выполнять свою задачу. Для этого в операционных системах существует автозагрузка. Программы запускаются автоматически, после того, как запустилась ОС или графическая оболочка.
В этой статье мы поговорим о том, как работает автозагрузка в Ubuntu, какие существуют способы автозагрузки в этой системе и как добавить туда программы.
АВТОЗАГРУЗКА В UBUNTU
Первым делом нужно сказать, что в Ubuntu существует несколько уровней автозагрузки. Я не буду говорить здесь про systemd и , так как уже рассматривал это в одной из первых статей. Программу или скрипт можно добавить в автозагрузку такими путями:
- Утилита «Автоматически запускаемые приложения»;
- Папка «Автозапуск»;
- Файл rc.local;
- Файл Xinitrc;
Мы рассмотрим первые два способа, поскольку два последние более рассчитаны на скрипты, а не программы. Сначала автозагрузка в Ubuntu с помощью стандартной утилиты.
Откройте меню системы и наберите «Авто» и откройте программу, которая будет первой в списке, Автоматически запускаемые приложения:
Здесь будут перечислены все приложения, которые сейчас запускаются автоматически. Чтобы добавить в автозагрузку ubuntu еще одно приложение, нажмите кнопку «Добавить» :
Здесь нужно ввести имя нового пункта, а также команду запуска приложения. Вы можете выбрать приложение в файловой системе, если не помните путь, нажав кнопку «Обзор» :
В команде можно указывать параметры, если это нужно. Еще можно заполнить поле «Описание» , но это уже необязательно. Если вам нужна определенная программа из главного меню, но вы не знаете где ее найти и как пишется ее команда, можно посмотреть ее в том же меню. Но для этого нам нужно сначала установить утилиту «Главное меню» из центра приложений:
Здесь вам нужно обратить внимание на строку «Команда» , скопируйте ее и можете использовать для автозагрузки.
Следующий способ — это папка автозагрузки. Она находится по адресу ~/.config/autostart. По сути, это тот же самый способ, только он может выполняться без графического интерфейса. Когда вы настраиваете автозагрузку через приложение, то в этой папке создаются файлы настроек с именем desktop. Вот, например:
Напоминаю, что для того, чтобы посмотреть скрытые файлы нужно нажать сочетание клавиш Ctrl+H. Теперь попытаемся создать новый конфигурационный файл для еще одной программы. Вот таким будет его синтаксис:
Type
=
Application
Name
=
имя_нового_пункта
Exec
=
команда
Icon
=
полный_путь_к_иконке
Comment
=
комментарий
X-GNOME-Autostart-enabled
=
true
Для примера, сделаем файл для запуска плеера VLC, он будет выглядеть вот так:
vi ~/.config/autostart/vlc.desktop
Type=Application
Name=VLC
Exec=vlc
Icon=/usr/share/icons/hicolor/16×16/apps/vlc.png
Comment=VLC Media Player
X-GNOME-Autostart-enabled=true
Готово, и самое интересное, что если вы откроете приложение автозагрузки. То там тоже появится этот пункт. Это такой способ настройки без графического интерфейса.
ВЫВОДЫ
В этой небольшой статье мы рассмотрели как настраивается автозагрузка программ ubuntu различными способами — через графический интерфейс и терминал. Вы можете использовать эти знания, чтобы сделать работу в вашей системе более удобной. Даже несмотря на то, что Ubuntu перешла на Gnome, автозагрузка в ubuntu 16.04 и сейчас выглядят практически одинаково. Если у вас остались, вопросы, спрашивайте в комментариях!
Похожие записи:
А главное, полностью бесплатная операционная система, построенная на ядре Linux . Поэтому всё больше обладателей компьютеров становятся её пользователями. Если в их число попали и вы, то вам стоит, нет, не научиться — учиться там нечему — всего лишь понять и освоить основы управления. Например, как настроить автозапуск приложений и сервисов в Ubuntu.
Автозагрузка в Ubuntu — такой же процесс, как и на других ОС. Вы, должно быть, помните и представляете, как на Windows при включении ПК сразу же запускались Skype , uTorrent и ещё ряд программ. На Убунту есть несколько программ, которые аналогичным образом включаются вместе с компьютером. Их список можно изменить, как вам удобно: удалить лишние или добавить ещё несколько.
Добавление процессов
Добавить новый сервис , утилиту или команду в автозагрузку Ubuntu совсем не сложно. Делается это при помощи меню.
Добавлять таким образом можно не только утилиты, но и просто сервисы. Только в верхней строчке нужно выбрать подходящий тип, если он есть, а также вписать нужную команду. Главное — знать её.
Отсрочка
В Убунту есть также прекрасная возможность делать отсрочку включения — прямо как на современных духовых шкафах или мультиварках. Она делается с помощью введения небольшого дополнения к тексту команды. Которое выглядит следующим образом: «sleep 20;» (без кавычек). Вместо 20 можно вписать любое число, которое будет означать количество секунд, которые процесс «спит» перед тем, как запуститься. Таким образом вы можете дать системе время полностью загрузиться, после чего уже начнут включаться определённые сервисы или программы.
Удаление
Если вы уже пробовали добавлять программы в автоматический старт, то понимаете, что и удалить их оттуда будет очень легко.
- Снова заходим в утилиту управления автозагрузкой.
- Находим те процессы, которые нам не нужны.
- Выделяем их, жмём «Удалить».
Теперь лишние процессы будут убраны из автозапуска Ubuntu. Лучше иметь там только самое необходимое.
Стоит понимать, что если добавить много приложений в автозагрузку Ubuntu, ОС будет загружаться гораздо медленнее . Поэтому лучше не перебарщивайте и правильно регулируйте настройки автоматического запуска. Функция действительно очень удобная и вместе с отсрочкой запуска даёт хороший инструмент для автоматического регулирования действий системы.
После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.
В этой статье мы рассмотрим как работает автозагрузка Linux, как добавить программы автозагрузки, куда их будет более правильно добавить, а также какие виды автозагрузки бывают в этой операционной системы.
Как работает автозагрузка?
Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux . Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации — это основной процесс, именно он запускает все другие процессы в системе.
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
— вы можете указать любую программу, которая будет запускаться после старта ядра вместо системы инициализации; — запуск основных системных сервисов, дополнительных сервисов, а также ваших скриптов на этапе инициализации системы; — устаревший метод загрузки скриптов, выполняется перед запуском графического окружения; — вы можете выполнять свои скрипты или команды после запуска менеджера входа, но перед запуском окружения; — запуск нужных программ или скрпитов сразу после старта X сервера; — большинство окружений поддерживают автозагрузку программ, там даже можно настроить отложенный запуск и другие параметры; — самый последний вариант — это автозагрузка на уровне отдельной командной оболочки, вы можете выполнять нужные команды автоматически, как только будет запущен терминал.Автозагрузка на уровне ядра
Автозагрузка на уровне ядра вряд ли будет вам очень полезной для повседневного применения, но я решил о ней упомянуть, поскольку такая возможность есть. С помощью параметра ядра init вы можете указать какую программу стоит запускать сразу после завершения инициализации ядра. Например, вы можете загрузить оболочку Bash вместо Systemd. Для этого достаточно подправить строку запуска ядра в конфигурационном файле Grub или во время запуска. Добавьте в конец параметр init:
$ sudo vi /boot/grub2/grub.cfg
linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash
Но, обычно, удобнее изменить это значение временно, в меню Grub. Читайте подробнее об этом в статье параметры ядра Linux . Так не выполняется автозагрузка программы linux, но, тем не менее, иногда может быть полезно.
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система управления службами . Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.
Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:
$ sudo systemctl enable имя_службы
А чтобы отключить ее автозапуск linux:
$ sudo systemctl disable имя_службы
Например, если вы хотите добавить в автозагрузку Apache, то нужно выполнить:
$ sudo systemctl enable apache
Также вы можете проверить добавлена ли уже служба в автозагрузку:
$ sudo systemctl is-enabled httpd
Если вы не знаете точное имя файла сервиса, но знаете его первую букву, то можно использовать автодополнение, как и в любом другом месте терминала с помощью кнопки Tab:
Также вы можете посмотреть все сервисы, которые были добавлены в автозагрузку с помощью команды:
$ systemctl list-unit-files | grep enabled
Автозагрузка скриптов в Linux
Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /etc/rc. local. Этот файл все еще существует, но это пережиток системы инициализации SysVinit и теперь он сохраняется только для совместимости. Скрипты же нужно загружать только с помощью Systemd.
Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:
$ sudo vi /lib/systemd/system/runscript.service
Description=My Script Service
After=multi-user.target
Type=idle
ExecStart=/usr/bin/local/script.sh
WantedBy=multi-user.target
В секции Unit мы даем краткое описание нашему файлу и говорим с помощью опции After , что нужно запускать этот скрипт в многопользовательском режиме (multi-user). Секция Service самая важная, здесь мы указываем тип сервиса — idle , это значит, что нужно просто запустить и забыть, вести наблюдение нет необходимости, а затем в параметре ExecStart указываем полный путь к нашему скрипту.
Осталось выставить правильные права:
$ sudo chmod 644 /lib/systemd/system/runscript. service
Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:
$ sudo systemctl daemon-reload
$ sudo systemctl enable myscript.service
После следующей перезагрузки этот скрипт будет запущен автоматически. Обратите внимание, что для каждого скрипта, который вы собираетесь запускать должны быть правильно выставлены права, а именно нужно установить флаг выполнения. Для этого используйте команду chmod:
$ sudo chmod u+x /usr/local/bin/script
В параметрах мы передаем утилите адрес файла скрипта. Исполняемость — это обязательный параметр для всех способов.
Автозагрузка X сервера
Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл ~/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:
exec путь_к_скрипту &
Если файла ~/.xinitrc еще не существует, то его нужно создать:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:
exec /usr/bin/firefox &
Автозагрузка окружения рабочего стола
Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется «Запускаемые автоматически приложения» . Вы можете запустить ее из главного меню системы:
Здесь вы видите все программы, которые уже добавлены в автозагрузку. Вы можете отключить каждую из них просто сняв галочку.
Чтобы добавить новую программу или скрипт в автозагрузку нажмите кнопку «Добавить»:
Тут вам нужно заполнить три поля:
- Имя — произвольное имя для команды, по которому вы сможете ее найти;
- Команда — полный путь к исполняемому файлу программы;
В Убунту есть 2 основных уровня автозапуска — в системе инициализации systemd и в рабочем окружении. Для пользовательского софта автозагрузка в Ubuntu может быть настроена в удобной графической утилите. Добавить в автозапуск можно программу или собственный скрипт.
Автозагрузка в Ubuntu
Актуальная Ubuntu 18.04 по умолчанию в качестве рабочего окружения использует GnomeShell. Для настройки автозапуска в этой версии ОС нужно:
Совет! Чтобы не ошибиться с правильностью команды, нужно установить утилиту «Главное меню» из UbuntuSoftwareCenter.
В ней выбрать интересующий пункт и открыть его свойства. Правильная команда копируется из одноименной строки.
Запуск приложений в Ubuntu, присутствующих в списке и помеченных галочкой, будет происходить при каждом старте ОС. Все это приложения данного пользователя, системные программы и сервисы, утилита не отображает. В предыдущих версиях операционной системы с графической оболочкой Unity утилита для настройки автозагрузки также ищется поиском по меню Dash или открывается с помощью команды в терминале:
gnome-session-properties.
Как добавить скрипт в автозагрузку Ubuntu
Кроме конкретного софта, добавить в автозагрузку Linux легко и самописный скрипт, чтобы оптимизировать работу за компьютером. Для этого необходимо:
- Сделать скрипт исполняемым с помощью команды:
sudochmodugo+x /home/user/script.sh
(где user — имя пользователя, а script — название скрипта, но путь до вашего файла.sh может отличаться: его нужно прописать полностью, иначе скрипт не запустится).
- Открыть «Автоматически запускаемые приложения» и нажать «Добавить».
- Ввести имя скрипта, а в качестве команды — полное название с путем до файла, например, /home/user/script.sh .
- Кликнуть по «Добавить».
Есть другой, классический, но считающийся устаревшим способ настроить автозапуск скрипта в Ubuntu. Для его выполнения нужно:
Этот способ подойдет и для автозагрузки на UbuntuServer, где нет графики.
Отсрочка автозапуска программ в Ubuntu
Если программ в автозагрузке Убунту очень много, их необходимо подгружать в определенном порядке или запускать спустя какое-то время после загрузки системы — поможет функция отсрочки. Для ее активации используется unix-утилита sleep. Воспользоваться возможностями этого инструмента можно в уже знакомой программе «Автоматически запускаемые приложения». Для этого нужно:
- Открыть окно параметров запускаемых приложений.
- Выделить курсором программу, автозапуск которой необходимо отсрочить, и воспользоваться кнопкой «Изменить».
- В строке «Команда» перед имеющеюся записью внести:
где цифра после слова «спать» равна количеству секунд, которое приложение бездействует сразу после старта системы, перед тем как запуститься. Между данной формулой, в конце которой обязательна точка с запятой, и командой на запуск приложения, должен быть пробел.
В приведенном примере отложенной автозагрузки программ в Ubuntu приложение остается в состоянии «сна» 2 минуты, прежде чем открыться. Например, запуск через полчаса после старта ОС будет выглядеть как sleep 3h «имя программы». Пример, в котором Transmission запускается через 1 час:
sleep 1h; transmission-gtk %U
Аналогичным образом можно добавить в автозагрузку в Linux отсроченное выполнение пользовательского скрипта или запуск медиафайла.
Удаление из автозапуска Ubuntu
Чтобы убрать софт из автозагрузки Ubuntu, можно воспользоваться одним из 2 способов: через «Автоматически запускаемые приложения» или вручную. В первом случае достаточно запустить утилиту, выделить нужную программу и нажать «Удалить». Простое снятие галочки отключается программа, и она не будет запускаться при старте системы.
Ручной способ подразумевает использование папки autostart в Ubuntu. Она расположена по адресу /home/имя пользователя/.config/autostart/ (чтобы увидеть эту скрытую папку, следует открыть домашний каталог в файловом менеджере и нажать одновременно клавиши Ctrl+H). В ней лежат файлы с расширением.desktop для каждой программы из автозапуска, формирующиеся автоматически при добавлении через графическую утилиту. Достаточно удалить файл, чтобы программа больше не открывалась при включении компьютера.
Заключение
Автозагрузка в Ubuntu имеет множество способов тонкой настройки. Ее возможности трудно охватить. Грамотное использование этого инструмента делает ОС Linux практичнее в повседневных задачах.
Читайте также…
Как автоматически запускать приложения при загрузке Linux
Вы вручную загружаете приложения при каждом включении компьютера? Разве вы не хотите, чтобы они автоматически загружались вместо этого? Вот как можно автоматически запускать приложения в Linux.
Запускать приложения при загрузке в Linux довольно легко, но методы меняются в зависимости от используемой вами среды дистрибутива и рабочего стола. Эта статья покажет вам, как это сделать во всех основных средах Linux. Следующие наборы инструкций не будут актуальны для всех, поэтому, пожалуйста, перейдите к той части, которая наиболее подходит для вашей системы. Наборы инструкций включают в себя: Unity (Ubuntu), Cinnamon (Linux Mint), GNOME, KDE, MATE, LXDE, XFCE, мокша (Bodhi Linux), Budgie (Solus) и Pantheon (elementaryOS).
Преимущества автозапуска приложений
Автозапуск приложений, также известный как «Запуск приложений», — это процесс настройки определенных программ для автоматического запуска при включении компьютера. Это экономит время, если вы запускаете одни и те же приложения каждый день при первой загрузке компьютера. Для некоторых пользователей это, возможно, более полезно для запуска фоновых приложений, поэтому у вас всегда могут быть доступны специальные инструменты. Отличным примером фонового приложения для запуска является KDE Connect
или индикатор KDE Connect для синхронизации компьютера с телефоном Android.
Процесс настройки приложений на автоматический запуск в Linux немного запутан, потому что каждый дистрибутив (дистрибутив) и среда рабочего стола (DE) делают это по-своему. В некоторых случаях процесс очень прост, когда вы просто выбираете приложение из списка того, что вы установили, но в других случаях вам нужно знать точные команды, используемые для запуска приложения.
Unity, стандартная среда Ubuntu
Ubuntu, пожалуй, самый распространенный дистрибутив для начинающих
что делает странным, что эта функция не удобна для пользователей в Unity. К сожалению, автозапуск приложений в Системных настройках недоступен; вместо этого он требует, чтобы вы искали Dash для Запуск приложений инструмент.
В инструменте «Автозагрузка» щелкните добавлять Кнопка на правой стороне окна. Ubuntu не обеспечивает удобство выбора приложений, поэтому у вас есть два варианта для продолжения: 1.) Введите название приложения и команда чтобы запустить его (если вы это знаете) или 2.) Нажмите Просматривать кнопку, из боковой панели выберите компьютер и перейдите к / USR / бен папка. Папка / usr / bin содержит двоичный файл для запуска всех программ, установленных на вашем компьютере, так что для некоторых это может быть проблематично, посмотрите видео ниже для руководства.
В приведенном выше видео я продемонстрировал, как искать приложение, когда вы переходите в папку / usr / bin и просто начинаете вводить первые несколько букв двоичного имени.
Cinnamon, стандартная среда Linux Mint
Метод автозапуска приложений в Linux Mint представляет собой хорошее сочетание простого подхода GNOME, технического подхода Ubuntu и некоторых дополнительных пользовательских функций. Из меню монетного двора откройте Настройки системы и выбрать Запуск приложений из раздела настроек. В нижней части окна нажмите добавлять а потом Выберите приложение. В следующем окне вы можете прокрутить список и выбрать приложение, которое вы хотите, или вы можете просто начать печатать выявить скрытую функцию поиска. Наконец, нажмите Добавить приложение добавить его в список.
Как только приложение будет добавлено, вы увидите элементы управления Toggle и Delay ON / OFF вместе со входом. Задержку можно использовать по-разному; Я использую его, чтобы установить порядок приложений. Чтобы изменить задержку, выберите приложение и нажмите редактировать внизу окна. В следующем окне используйте Минус (-) или же Плюс (+) кнопки для изменения номера, или просто введите число. Иногда Linux Mint уделяет внимание деталям, что часто является одной из причин, по которой его считают Ubuntu Killer.
для некоторых.
GNOME через Ubuntu GNOME
GNOME не предоставляет функцию по умолчанию для автозапуска приложений, но инструмент настройки GNOME исправил это. Средство настройки GNOME доступно по умолчанию практически во всех дистрибутивах на основе GNOME, поэтому вам не нужно его устанавливать. Я использовал Ubuntu GNOME в демонстрационном видео, но инструкции актуальны для всех пользователей GNOME, так как инструмент настройки GNOME доступен повсеместно. Хотя, если вы используете Ubuntu GNOME, вы также можете найти инструмент Ubuntu в Обзоре GNOME.
Нажав на Activites в левом верхнем углу (или нажмите клавишу Windows Super aka) откроется обзор GNOME. Используя Обзорный поиск, введите щипать и запустите Tweak Tool. Вы также можете прокрутить сетку приложений, если хотите. Нажмите Запуск приложений на левой боковой панели, а затем большой плюс Кнопка, чтобы открыть новое диалоговое окно. Вы можете выбрать приложение, прокрутив список или начав вводить имя, чтобы открыть скрытую функцию поиска.
KDE через Kubuntu
Проект KDE в настоящее время переходит на свою последнюю версию, Plasma 5, которая является версией Kubuntu 15. 10, которая демонстрируется на видео ниже. Процесс управления запуском приложений в KDE идентичен по функциональности как в Plasma 5, так и в KDE4, поэтому видео демонстрирует только Plasma 5.
В Панели запуска приложений перейдите к компьютер раздел и открыть Настройки системы приложение. Запуск и завершение работы, в разделе Рабочая область, где вы будете управлять записями. В Автоматический старт, выбран по умолчанию, нажмите Добавить программу для прокрутки списка приложений по категориям или для поиска приложения. Нажатие кнопки Хорошо чтобы продолжить, вы получите краткое изложение того, что вы собираетесь добавить, нажмите Хорошо в этом окне, чтобы завершить процесс. Plasma также позволяет автоматически запускать пользовательские сценарии, чтобы сделать это Добавить скрипт, щелкните по квадратной области и перейдите к вашему сценарию.
MATE через Ubuntu MATE
Откройте Центр управления из система меню в левом верхнем углу экрана и оттуда нажмите Запуск приложений. Если вы используете Ubuntu MATE, возможно, вы изменили внешний вид системы с помощью Interface Switcher. В этом случае способ открытия Центра управления может отличаться для вас.
В дистрибутивах MATE используется тот же инструмент, что и в Ubuntu (с Unity) для управления автоматически запускающимися приложениями, поэтому процесс такой же. В инструменте «Автозагрузка» щелкните добавлять Кнопка на правой стороне окна. Введите название приложения и команда чтобы запустить его, если вы это знаете, или нажмите Просматривать, выбирать компьютер из боковой панели и выберите приложение в / USR / бен папка.
LXDE через Lubuntu
Решение LXDE для автозапуска приложений несколько скрыто в другом инструменте, настройках LXSession. В главном меню LXDE перейдите к Приложение и настройки > предпочтения > Приложения по умолчанию для LXSession. Автоматический старт Инструмент, выбираемый на левой боковой панели, в LXDE довольно ограничен, поэтому вам нужно будет знать команду приложения, которое вы хотите добавить.
LXDE не предоставляет способ просмотра двоичных файлов в инструменте автозапуска, но Lubuntu предоставил решение этой проблемы с помощью PCManFM (файловый менеджер). В PCManFM Приложения Места ввода, на левой боковой панели, представит коллекцию категорий. Просматривайте категории, пока не найдете приложение, щелкните его правой кнопкой мыши и выберите свойства из контекстного меню. Перейдите на вкладку «Запись рабочего стола» в окне «Свойства», скопируйте команду в поле «Команда» и вставьте ее в Автоматический старт поле в LXSession и, наконец, нажмите + добавлять.
XFCE через Xubuntu
XFCE использует тот же инструмент запуска приложений для добавления приложений, которые используют Ubuntu и MATE, но управление списком осуществляется с помощью инструмента настроек, который называется Сессия и запуск.
В меню Whisker перейдите к настройки категория и откройте Сессия и запуск инструмент. В сеансе и запуске перейдите к Автозапуск приложения вкладка для автоматического запуска записей и оттуда нажмите добавлять в левом нижнем углу. На этом этапе вам будет представлен тот же самый инструмент запуска, который используют Ubuntu и MATE. Нажмите на добавлять Кнопка на правой стороне окна. Введите название приложения и команда чтобы запустить его, если вы это знаете, или нажмите Просматривать, выбирать компьютер из боковой панели и выберите приложение в / USR / бен папка.
Мокша через бодхи линукс
Moksha — это легкая сфокусированная настольная среда, созданная на основе Enlightenment, созданного проектом Bodhi Linux. Процесс автозапуска приложений Moksha представляется уникальной реализацией рабочего стола Moksha.
В меню Мокша перейдите к настройки > Все > Программы > Запуск приложений. Вкладка «Система» предназначена для управления системными утилитами в последовательности запуска, вкладка «Приложения» — для управления приложениями, а вкладка «Заказ» позволяет управлять порядком записей при запуске. Нажми на Приложения выберите приложение из списка и нажмите добавлять чтобы добавить его в последовательность запуска. Похоже, что нет способа добавить пользовательские команды или сценарии в инструмент, поэтому, если утилита или приложение не найдены автоматически, для их добавления может потребоваться дополнительное исследование. Если вы знаете способ сделать это уже, пожалуйста, напишите в комментариях ниже.
Budgie через Solus Project
Solus Project разработал потрясающую рабочую среду
Это вилка GNOME 3 под названием Budgie. Поскольку Budgie является форком GNOME, запускаемые приложения управляются в Budgie / Solus с помощью GNOME Tweak Tool.
Тип щипать вверху меню Budgie и откройте Tweak Tool. Нажмите Запуск приложений на левой боковой панели, а затем большой плюс Кнопка, чтобы открыть новое диалоговое окно. Вы можете выбрать приложение, прокрутив список или начав вводить имя, чтобы открыть скрытую функцию поиска.
Пантеон через элементарный OS
Pantheon — это настольная среда на основе GTK +
созданный elementaryOS, и хотя Pantheon похож на GNOME 3, он не является форком GNOME, поэтому управление автоматически запускающимися приложениями схоже, но также немного отличается.
В самой правой верхней части панели Wingpanel выберите Настройки системы в системном (значок питания) меню. выберите Приложения > Запускать из настроек системы, чтобы перейти к инструменту запуска. Вот увидишь Плюс (+) и кнопки минус (-) в левом нижнем углу инструмента запуска. Выберите приложение из списка, найдите приложение в верхней части списка или введите пользовательскую команду в нижней части списка. После добавления элементов в список их можно отключить с помощью переключателя активности или удалить их с помощью кнопки «минус» (-) внизу.
Облегчение жизни Linux с помощью автоматизации
Какие приложения запускаются автоматически при загрузке компьютера? Есть ли у вас какие-либо вопросы о процессе для любой из настольных сред? Дайте нам знать в комментариях ниже.
Как: запускать программу в Linux автоматически при загрузке: SkySilk Cloud Support
СОДЕРЖАНИЕ
Если у вас есть сервер Linux и вам необходимо настроить службу или программу для автоматического запуска при загрузке, это руководство продемонстрирует, как это сделать. Это руководство будет полезно тем, кто запускает критически важные службы на своих машинах с Linux. Вы узнаете
, как обеспечить автоматический запуск этих служб даже после незапланированной перезагрузки.
Как запустить программу в Linux автоматически при загрузкеМы будем использовать systemd для этой задачи. Сначала мы создадим образец сценария. Затем мы создадим системный блок, который ссылается на наш пример скрипта. Наконец, мы скажем systemd автоматически запускать наш скрипт (служебный модуль) при запуске системы.
Начните с входа на свой VPS через SSH. Вы можете следовать этому руководству , чтобы помочь вам использовать SSH в вашем SkySilk VPS.
Создайте пример сценария или программы, которую мы хотим автоматически запускать при загрузке.Создайте следующий сценарий в / usr / sbin / testscript.sh с помощью вашего любимого текстового редактора (например, nano):
#! / bin / bash d = $ (дата +% Y-% m-% d-% s) echo "$ d" >> ~ / "$ d" .log exit 0
Убедитесь, что сценарий исполняется:
chmod + x /usr/sbin/testscript.shСоздайте системный блок (также известный как служба)
Теперь мы создадим систему модуль, который ссылается на приведенный выше тестовый сценарий. Этот системный блок — это то, как systemd узнает, что нужно запустить тестовый скрипт при загрузке системы.
Создайте следующий файл в / etc / systemd / system / test.услуга. Убедитесь, что вы ссылаетесь на сценарий, который вы создали выше, и что вы сохранили системный модуль с расширением «.service».
[Единица] Description = Описание вашей индивидуальной услуги находится здесь После = network.target [Услуга] Тип = простой ExecStart = / bin / bash /usr/sbin/testscript.sh TimeoutStartSec = 0 [Установить] WantedBy = default.targetНастройте службу для автоматического запуска при загрузке
Перезагрузите демон systemctl:
systemctl daemon-reload
Сообщите systemd о включении пользовательского системного модуля:
systemctl enable test. service
Подтвердите, что ваша тестовая служба была успешно создана:
systemctl --all | grep test.service
Запустите службу:
systemctl start test.serviceПротестируйте службу с помощью перезагрузки!
Выполните тестовую перезагрузку сервера. Настроенная вами служба должна автоматически запускаться при загрузке сервера. На этом все готово!
Присоединяйтесь к нашему приватному чату в Discord, чтобы пообщаться, а также получить поддержку сообщества от других проверенных пользователей SkySilk: https: // invite.gg / SkySilk
НАЖМИТЕ ДЛЯ РАЗВЕРТЫВАНИЯ UBUNTU LINUX VPS
Как запустить приложение при запуске в Linux
Статья обновлена на 29 мар 2021
Подписаться на обновления этой статьи
В этой статье описывается, как автоматически запускать приложение во время или после загрузки компьютера Apalis, Colibri и Verdin на модулях под управлением Embedded Linux.
На TorizonCore приложения упакованы в контейнеры. Контейнеры запускаются движком контейнеров, которым в нашем случае является Docker.
Docker уже настроен на автозапуск, и для запуска ваших приложений при загрузке в TorizonCore вы должны описать, какие контейнеры использовать и как их вызывать. Ознакомьтесь с нашим содержанием о шагах по автоматическому запуску контейнера с помощью TorizonCore в разделе Запуск и управление контейнерами Docker на Torizon.
Для наших справочных изображений для Yocto Project вы можете следовать любой из тем, описанных ниже, чтобы уделить внимание вашему проекту или потребностям варианта использования.
Начиная с версии 2.x нашего Linux BSP, мы используем systemd в качестве нашего инициатора и диспетчера служб.
Systemd — это системный и сервисный менеджер для Linux, также способный заменить традиционную систему инициализации SysV . Вы можете прочитать его руководство здесь.
Конфигурация устройства — это файл, имя которого заканчивается на .service , и он кодирует информацию о процессе, который контролируется и контролируется systemd . Служебные файлы можно найти в / etc / systemd / system /
, а для распространения — в / lib / systemd / system /
.
Вы можете включать, отключать, запускать, останавливать и проверять статус служб с помощью команды systemctl .
Общие элементы конфигурации настраиваются в общих разделах [Unit] и [Install] .
Параметры конфигурации для конкретных служб настраиваются в разделе [Служба] .
Файлы службыдолжны включать раздел [Служба] , в котором содержится информация о службе и контролируемом ею процессе.
Дополнительные сведения о возможных вариантах раздела [Сервис] см. В документации.
Процедура
Создайте файл конфигурации устройства, заканчивающийся на .service
Скопируйте файл конфигурации устройства в / etc / systemd / system
и используйте инструмент systemctl для включения и запуска службы.
Использование команды systemctl
Согласно документации SystemD, вам необходимо перезагрузить конфигурацию systemd после добавления или изменения любых файлов модулей:
# systemctl --system daemon-reload
Чтобы проверить статус службы или запустить и остановить службу, которая действует до следующей перезагрузки, вы можете использовать следующие команды:
# systemctl status <имя_службы>.услуга
# systemctl start <имя_службы> .service
# systemctl stop .service
Чтобы добавить службу или удалить ее из списка служб, запускаемых при загрузке. Примечание: Это не запускает и не останавливает службу, но действует только во время следующей загрузки
# systemctl enable . service
# systemctl disable .service
Вот пример файла конфигурации устройства для автоматического запуска (гипотетического) приложения mydatalogger при запуске:
mydatalogger.служба
[Единица] Описание = служба mydatalogger, собирает и регистрирует данные в фоновом режиме После = multi-user.target [Услуга] Тип = простой ExecStart = / usr / bin / mydatalogger [Установить] WantedBy = multi-user.target
/ и т.д / профиль
Каждый раз, когда запускается оболочка входа в систему, выполняется сценарий / etc / profile плюс все сценарии в /etc/profile.d
.
Это делается для входа в систему через консоль с последовательным интерфейсом , через соединение ssh , а также для входа в систему управления дисплеем на графический рабочий стол.
Источник / etc / profile создается при входе в систему: он устанавливает среду при входе в систему и параметры приложения, используя источник любого читаемого файла в /etc/profile. d/
.
Использование / etc / profile хорошо подходит для настройки среды или для выполнения некоторых небольших задач.
Обратите внимание, что эти сценарии должны вернуть управление, чтобы продолжить вход в систему.
Удалите файл в /etc/profile.d
или дополнения к / etc / profile , чтобы отменить автоматическое выполнение.
Процедура
Чтобы загружать сценарий оболочки при каждом входе в систему, вам просто нужно добавить файл сценария в /etc/profile.d/
.
Помните, что сценарий оболочки должен иметь расширение * .sh .
Ниже приведен пример файла сценария для удаления резервных записей:
remove_backup.sh
#! / Bin / sh rm / домой / корень / * ~
Weston Desktop
В более поздней версии Toradex Linux BSP 5 использовался графический композитор Weston / Wayland вместо X11, который использовался до нашего BSP 3. 0.
Имейте в виду, что Wayland — это протокол, Weston — это графический редактор, который реализует протокол Wayland. Вы можете прочитать об этом на странице Wayland.
Любое графическое приложение, разработанное для X11, также должно работать, поскольку композитор Weston настроен для работы в режиме совместимости XWayleand, который позволяет клиентам X11.
Тем не менее, чтобы вы могли создать графическое приложение, которое будет автоматически запускаться при загрузке системы, это приложение должно запускаться после службы Weston.
Пример графического приложения Wayland, которое автоматически запускается при загрузке, представлен ниже.
wayland-app-launch.service
[Unit] Описание = Запустить приложение Wayland [email protected] [email protected] [Услуга] Перезагрузка = при сбое Тип = разветвление ExecStart = / usr / bin / wayland-app-launch.sh RestartSec = 1 [Установить] WantedBy = multi-user. target
Как видите, эта служба вызывает сценарий для выполнения.Это потому, что необходимо проверить, установлена ли переменная среды XDG_RUNTIME_DIR
, а если нет, мы должны ее установить.
Weston будет использовать XDG_RUNTIME_DIR
для оконного контекста.
Также рекомендуется соответствующим образом экспортировать переменную DISPLAY. См. Ниже:
wayland-app-launch.sh
#! / Bin / sh если тест -z "$ XDG_RUNTIME_DIR"; тогда экспорт XDG_RUNTIME_DIR = / run / user / `id -u` если ! test -d "$ XDG_RUNTIME_DIR"; тогда mkdir --parents $ XDG_RUNTIME_DIR chmod 0700 $ XDG_RUNTIME_DIR фи фи # жди вестона в то время как [ ! -e $ XDG_RUNTIME_DIR / wayland-0]; сплю 0.1; сделано спать 1 экспорт ДИСПЛЕЙ =: 0,0 / путь / к / приложению и
Как со службой, так и со сценарием ваше приложение Wayland будет автоматически запускаться при загрузке.
Yocto Project / OpenEmbedded
Мы подготовили сценарии для автозапуска вашего приложения в Wayland / Weston при запуске прямо из сборки Yocto Project / OpenEmbedded. Это называется wayland-app-launch, а также то, как мы автоматически запускаем Qt Demos на мультимедийном эталонном образе. Ознакомьтесь с данными ссылками, которые содержат примеры того, как вы можете интегрировать это в OE.
X11 Настольный
Вы можете запускать приложения автоматически при входе в Window Manager или Desktop Environment.
С angstrom-lxde-image вы получите следующие параметры. Другие среды рабочего стола предоставляют аналогичные средства.
Менеджер сеансов lxsession может запускать приложения при запуске графической среды.
Этого можно добиться двумя способами:
Особый способ lxsession, в котором записи в файлах / etc / xdg / lxsession / LXDE / autostart и ~ /.config / lxsession / LXDE / autostart анализируются.
Общий способ, поддерживаемый многими диспетчерами сеансов. Файлы в папках / etc / xdg / autostart / и ~ / .config / autostart / , заканчивающиеся на .desktop , анализируются и, если применимо, запускается описанное в них приложение.
Дополнительную информацию можно найти в документации LXSession.
Файл автозапуска LXSession
Чтобы использовать 1-й вариант, вам необходимо отредактировать / etc / xdg / lxsession / LXDE / autostart или ~ /.config / lxsession / LXDE / автозапуск .
Добавьте приложение или командную строку, которую нужно запустить, в новую строку файла.
Если вы хотите, чтобы ваше приложение было перезапущено в случае аварийного завершения, поставьте перед именем приложения символ @. Как, например, lxterminal , с @lxterminal в / etc / xdg / lxsession / LXDE / autostart :
/ etc / xdg / lxsession / LXDE / autostart
@lxpanel --profile LXDE @pcmanfm --desktop --profile LXDE @xscreensaver -no-splash @lxterminal
Обратите внимание, что этот файл не является сценарием оболочки, и поэтому такие акробатические действия оболочки, как перенаправление и каналы, не разрешены.
При необходимости это можно сделать, создав собственный сценарий оболочки, который, в свою очередь, может поддерживать полный набор функций оболочки.
Файлы .desktop
В основном, чтобы запустить службу или приложение с этим подходом, необходимо создать файл .desktop и добавить его в автозапуск.
Дополнительную информацию об этом можно найти в документации к файлу .desktop. Примечание: В / usr / share / applications /
уже есть ряд.файлы рабочего стола, которые можно скопировать в папку автозапуска.
Например, если вы хотите запустить lxterminal автоматически при запуске, вы можете сделать следующее:
1. Создайте terminal.desktop в / etc / xdg / autostart /
. Добавьте несколько ключевых записей, например:
- [Desktop Entry] — Должен быть первой строкой каждого файла рабочего стола и заголовком раздела для идентификации блока пар ключ-значение, связанного с рабочим столом. Необходимо, чтобы рабочий стол правильно распознал файл.
- Имя приложения (имя группы Desktop Entry — должно быть уникальным в системе)
- Тип заявки. (Возможные значения: «Приложение», «Ссылка» или «Каталог».)
- Exec имя файла приложения плюс необязательные аргументы.
- Терминал (Определяет, должно ли приложение запускаться в терминале.)
Пример содержимого файла .desktop с записями должен быть следующим:
my_sample.настольный
[Desktop Entry] Имя = LXTerminal Тип = Приложение Exec = lxterminal Терминал = ложь
- После редактирования сохраните файл .desktop .
Примечание: Графический файловый менеджер будет отображать файлы .desktop не по имени файла, а по значению ключа «Имя». например в примере выше «LXTerminal».
Чтобы отключить автоматический запуск приложения, просто удалите соответствующий файл * .desktop из / etc / xdg / autostart /
и / или .config / autostart /
, либо добавить ключ NotShowIn = LXDE; в файл рабочего стола.
В качестве альтернативы используйте графический интерфейс «Меню LXDE» / «Настройки» / «Настройки сеанса рабочего стола» и снимите флажок «Включено».
X11 с приложением для одного пользователя
Если в вашем сценарии использования требуется запуск X11, вероятно, также потребуется запустить некоторые задачи настройки, такие как отображение клавиатуры, калибровка сенсорного экрана, а затем запустить одно-единственное пользовательское приложение. В этом случае вы можете использовать схему, подобную той, которая используется в angstrom-qt5-x11-image и qt4e-demo-image.
Скрипт, запущенный Systemd
qt4e-demo-image и angstrom-qt5-x11-image (до 2. 8b2) используют службу systemd и сценарий домашнего приготовления. Сценарий запускает X-сервер, а затем пользовательское приложение. Интеграция любых задач настройки между запуском X11 и запуском пользовательского приложения в скрипт создает множество проблем, поскольку иногда это останавливает X-сервер и так далее.
Однако для простой системы этого может быть достаточно.
Чтобы запустить приложение X11 вместо демонстрационного приложения, измените сценарий соответствующим образом.
Использование nodm, xinit и пользовательского скрипта
Изображение angstrom-qt5-x11-image (начиная с 2.8b2) использует простой диспетчер отображения nodm от OpenEmbedded для запуска X11. При этом используются данные конфигурации из / etc / X11
, например. Xsession.d , например для запуска сенсорного калибратора. На последнем этапе он ищет скрипт x-window-manager и его источники.
Чтобы запустить приложение X11, переопределите следующие две переменные в рецепте x-window-simple-app, чтобы установить начальный рабочий каталог и указать приложение:
INITIAL_PATH? = "/Usr/share/qtsmarthome-1. 0" X_APPLICATION? = "$ {INITIAL_PATH} / smarthome"
Как запустить программу Linux при запуске
Привет Тим,
Я новичок в Linux, Python3 и Raspberry Pi.Моя сильная сторона — Windows и Visual Basic. У меня
проблемы с настройкой следующей службы.
«/ home / pi / test» — это сценарий, который я хочу запустить после загрузки Raspberry Pi.
Он гарантирует, что текущий каталог — «/ home / pi» (для регистрации системных данных), затем
запускает терминал и запускает программу python3, которая отслеживает статус домашней системы
(сеть и питание переменного тока). Сценарии исполняемые и работают с терминала и
через графический интерфейс, и я попробовал оба способа ниже:
*********************************************** ********************
#! / Bin / sh
#
chdir / home / pi
/ usr / bin / x-terminal-emulator -e / usr / bin / python3 / home / pi / HomeStat. py
*********************************************** ********************
#! / Bin / sh
#
cd / home / pi
x-terminal-emulator -e python3 HomeStat.py
*********************************************** *********************
«HomeStat.service» — следующая услуга, которую я установил в соответствии с вашими инструкциями.
*********************************************** *********************
Описание = Home_Status_Monitor
Хочет = сеть.цель
После = syslog.target network-online.target
[Служба]
Тип = простой
ExecStart = / home / pi / test
Restart = on-failure
RestartSec = 10
KillMode = process
[Установить]
WantedBy = multi-user.target
*********************************************** ************************
Это сообщение о статусе, которое я получил
*********************************************** ************************
● HomeStat. служба
Загружено: загружено (/etc/systemd/system/HomeStat.service; включено; предустановка поставщика: включено)
Активно: активация (автоматический перезапуск) (Результат: код выхода) с чт 18.07.2019 19:18 : 23 EDT; 9с назад
Процесс: 1587 ExecStart = / home / pi / test (code = exited, status = 1 / FAILURE)
Main PID: 1587 (code = exited, status = 1 / FAILURE)
18 июля, 19:18:23 raspberrypi systemd [1]: HomeStat.service: Устройство перешло в состояние сбоя.
18 июля, 19:18:23 raspberrypi systemd [1]: HomeStat.service: Ошибка с результатом «код выхода».
*********************************************** ************************
Я не понимаю, о чем говорится в статусном сообщении! Где я могу найти информацию об этих сообщениях о статусе
? Что такое статус = 1 / ОТКАЗ? Есть ли список этих кодов ошибок
с разбивкой или синопсисом сбоя. Любая помощь будет оценена по достоинству.
Спасибо,
Джо
Запуск сценария при запуске в Linux
1. ОбзорВ этом коротком руководстве мы рассмотрим различные варианты выполнения сценария при запуске в Linux.Это пригодится во многих ситуациях, например, если мы хотим запускать серверное приложение автоматически.
2. РешенияБез лишних слов, давайте создадим простой сценарий для выполнения:
#! / Bin / sh
echo "Время последней перезагрузки: $ (дата)"> / etc / motd
Этот фрагмент кода устанавливает сообщение дня как время последней перезагрузки, чтобы каждый пользователь мог видеть его после своего первого входа в систему.
После этого сохраним наш файл и сделаем его исполняемым:
$ chmod + x сообщение_загрузки.ш
Теперь, когда наш скрипт готов, давайте посмотрим, как запланировать его выполнение.
2.1. Использование cronНачнем с самого простого решения, которое предполагает использование cron . Для этого нам нужно отредактировать наш файл crontab :
$ crontab -e
Здесь мы просто добавим строку с использованием выражения @reboot , которое будет выполнять наш код один раз при запуске:
@reboot sh / home / ec2-user / reboot_message.ш
Это быстрое и чистое решение, поскольку нам не нужно заниматься дополнительной конфигурацией, , но не каждая версия cron поддерживает @reboot .
2.2. Использование rc.localДавайте теперь рассмотрим другое решение, в котором используется файл /etc/rc.d/rc.local . Поскольку этот файл уже запускается при запуске, мы можем добавить строку, вызывающую наш скрипт:
sh / home / ec2-user / reboot_message.ш
Для того, чтобы это работало, нам нужно убедиться, что сам файл rc.local является исполняемым :
$ chmod + x /etc/rc.d/rc.local
2.3. Используя init.d Как и в предыдущем решении, папка /etc/init.d содержит исполняемые файлы жизненного цикла служб, управляемых системой. Кроме того, мы можем добавить свою собственную, создав LSB-совместимую оболочку, которая запускает нашу службу:
#! / bin / sh
# chkconfig: 345 99 10
case "$ 1" в
Начните)
# Выполняет наш скрипт
sudo sh / home / ec2-user / reboot_message.ш
;;
*)
;;
esac
выход 0
Эта оболочка запускает наш код при вызове с аргументом start . Однако в мы должны включить строку с конфигурацией chkconfig , которая содержит уровень запуска службы и приоритет запуска / остановки .
После помещения обертки в папку init.d нам нужно зарегистрировать нашу службу для запуска при запуске:
$ chkconfig --add service_wrapper.sh
Поскольку команда chkconfig недоступна в системах Debian, update-rc.d можно использовать как альтернативу:
$ update-rc.d service_wrapper.sh по умолчанию
2.4. Использование systemd Наконец, мы увидим, как запустить сценарий с systemd . Подобно init.d , нам нужно создать дескриптор службы, называемый файлом модуля , в каталоге / etc / systemd / system :
[Единица]
Описание = Сообщение о перезагрузке службы systemd.
[Услуга]
Тип = простой
ExecStart = / bin / bash / home / ec2-user / reboot_message.ш
[Установить]
WantedBy = multi-user.target
Файл разбит на несколько разделов:
- Блок — содержит общие метаданные, такие как описание, понятное человеку
- Служба — описывает процесс и демонизирующее поведение, а также команду для запуска службы
- Установить — включает службу для запуска при запуске, используя папку, указанную в WantedBy для обработки зависимостей
Чтобы закончить, нам нужно установить права доступа к файлам на 644 и включить нашу службу, используя systemctl :
$ chmod 644 / etc / systemd / system / reboot_message.услуга
$ systemctl включить reboot_message.service
Следует иметь в виду, что, хотя многие основные дистрибутивы поддерживают systemd , он не всегда доступен.
3. ЗаключениеВ этой статье мы рассмотрели различные способы выполнения сценария при запуске в Linux. У каждого из них есть свои плюсы и минусы, но, вообще говоря, следует предпочесть systemd и cron , если они доступны.Между тем, в качестве резервных можно использовать rc.local и init.d .
Пять способов запустить программу на Raspberry Pi при запуске
Запуск программы на Raspberry Pi при запуске
В этом руководстве мы покажем вам пять способов запустить программу на Raspberry Pi при запуске. Для запуска программы при загрузке доступны пять методов:
Пример программыВы можете использовать любую программу, которую хотите запустить при загрузке; для этого урока мы используем пример программы на Python, которая будет говорить при запуске Raspberry Pi.Этот пример программы будет использовать пакет Espeak , чтобы Raspberry pi говорил «Добро пожаловать в мир роботов».
Если у вас не установлен пакет Espeak , запустите в терминале для установки следующее:
sudo apt-get install espeak
Чтобы узнать больше о том, как заставить Raspberry Pi говорить, у нас есть руководство.
В каталоге / home / pi откройте файл для редактирования:
sudo nano образец.py
И введите следующий код и сохраните его (нажмите CTRL + X и введите Y).
#! / usr / bin / env питон из вызова импорта подпроцесса call ([‘espeak« Добро пожаловать в мир роботов »2> / dev / null’], shell = True)Метод 1: rc.local
Первый способ запустить программу на Raspberry Pi при запуске — использовать файл rc.local . Чтобы команда или программа выполнялась при загрузке Pi, вы можете добавить команды к rc.локальный файл . Это особенно полезно, если вы хотите включить Pi в автономном режиме (то есть без подключенного монитора) и запустить программу без конфигурации или ручного запуска.
Редактирование rc.localНа вашем Pi отредактируйте файл /etc/rc.local с помощью редактора по вашему выбору. Вы должны отредактировать его с правами root:
судо нано /etc/rc.local
Добавьте команды для выполнения программы python, желательно с использованием абсолютной ссылки на расположение файла (предпочтительно полный путь к файлу).Обязательно оставьте строку exit 0 в конце, затем сохраните файл и выйдите. В nano для выхода нажмите Ctrl-x, а затем Y.
Если ваша программа работает непрерывно (запускает бесконечный цикл) или, скорее всего, не завершится, вы должны обязательно разветвить процесс, добавив амперсанд («&») в конец команды, например:
sudo python /home/pi/sample.py и
Pi будет запускать эту программу при загрузке и перед запуском других служб.Если вы не включите амперсанд и ваша программа работает постоянно, Pi не завершит процесс загрузки. Амперсанд позволяет команде запускаться в отдельном процессе и продолжать загрузку с запущенным основным процессом.
Теперь перезагрузите Pi, чтобы проверить его:
перезагрузка sudoПодсказки
Также не забудьте ссылаться на абсолютные имена файлов, а не относительно вашей домашней папки. Например, используйте `/ home / pi / myscript.py` вместо` myscript.py`.
Если вы добавите сценарий в /etc/rc.local, он будет добавлен в последовательность загрузки. Если ваш код застревает, последовательность загрузки не может продолжаться. Поэтому будьте осторожны с тем, какой код вы пытаетесь запустить при загрузке, и проверьте его пару раз. Вы также можете записать вывод скрипта и ошибку в текстовый файл (например, log.txt) и использовать его для отладки.
Судо Питон /home/pi/sample.py &> /home/pi/Desktop/log.txt 2> & 1Метод 2: .bashrc
Второй способ запустить программу на Raspberry Pi при запуске — это изменить .bashrc файл. С методом .bashrc ваша программа python будет запускаться при входе в систему (что происходит автоматически, когда вы загружаетесь и переходите непосредственно на рабочий стол), а также каждый раз, когда открывается новый терминал или когда устанавливается новое соединение SSH. сделал. Поместите свою команду в конец «/home/pi/.bashrc». Программу можно прервать, нажав «ctrl-c» во время ее работы!
судо нано /home/pi/.bashrc
Перейти к последней строке скрипта и добавить:
echo Работает при загрузке sudo python / home / pi / sample.py
Приведенный выше оператор echo используется, чтобы показать, что команды в файле .bashrc выполняются при загрузке, а также при подключении к консоли bash.
Теперь перезагрузите Pi, чтобы услышать, как Pi говорит при запуске.
перезагрузка sudo
На изображении ниже показано, что команды, добавленные в файл .bashrc, выполняются даже при открытии нового терминала.
Метод 3: каталог init.d
Третий способ запустить программу на Raspberry Pi при запуске — это добавить программу (для запуска при загрузке) в файл / etc / init.d справочник. Этот каталог содержит сценарии, которые запускаются во время процесса загрузки (кроме того, все программы здесь выполняются при завершении работы или перезагрузке системы).
Добавьте программу, запускаемую при запуске, в каталог init.d, используя следующие строки:
sudo cp /home/pi/sample.py /etc/init.d/
Перейдите в каталог инициализации и откройте образец сценария
компакт-диск /etc/init.d sudo nano sample.py
Добавьте следующие строки в образец сценария, чтобы сделать его сценарием инициализации Linux Standard Base (LSB) (стандарт для структуры программной системы, включая иерархию файловой системы, используемую в операционной системе Linux ).
# /etc/init.d/sample.py ### НАЧАЛО ИНФОРМАЦИИ # Предоставляет: sample.py # Обязательное начало: $ remote_fs $ syslog # Обязательная остановка: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Краткое описание: запускать демон во время загрузки # Описание: включить службу, предоставляемую демоном. ### КОНЕЦ НАЧАЛЬНОЙ ИНФОРМАЦИИСценарии
init.d требуют, чтобы указанные выше зависимости среды выполнения были задокументированы, чтобы можно было проверить текущий порядок загрузки, порядок загрузки с использованием этих зависимостей и запустить сценарии загрузки параллельно для ускорения процесса загрузки.
Вы можете научиться писать сценарии init.d, следуя руководству здесь.
Сделайте образец сценария в каталоге инициализации исполняемым, изменив его права доступа.
sudo chmod + x sample.py
Выполните эту команду:
sudo update-rc.d sample.py по умолчанию
Теперь перезагрузитесь, чтобы услышать, как Pi говорит при запуске.
перезагрузка sudoМетод 4: SYSTEMD
Четвертый способ запустить программу на Raspberry Pi при запуске — использовать файлы systemd . systemd предоставляет стандартный процесс для управления тем, какие программы запускаются при загрузке системы Linux. Обратите внимание, что systemd доступен только в Jessie-версиях Raspbian OS.
Шаг 1. Создание файла объектаОткройте файл образца модуля, используя команду, как показано ниже:
судо нано /lib/systemd/system/sample.service
Добавить в следующий текст:
[Единица] Описание = Мой образец услуги После = многопользовательский.цель [Услуга] Тип = простаивает ExecStart = / usr / bin / python /home/pi/sample.py [Установить] WantedBy = multi-user.target
Вы должны сохранить и выйти из редактора nano.
Это определяет новую службу под названием «Пример службы», и мы просим, чтобы она была запущена, как только многопользовательская среда станет доступной. Параметр «ExecStart» используется для указания команды, которую мы хотим запустить. Для параметра «Тип» установлено значение «бездействие», чтобы команда ExecStart запускалась только тогда, когда все остальное загружено.Обратите внимание, что пути являются абсолютными и определяют полное местоположение Python, а также местоположение нашего скрипта Python.
Чтобы сохранить вывод текста сценария в файле журнала, вы можете изменить строку ExecStart на:
ExecStart = / usr / bin / python /home/pi/sample.py> /home/pi/sample.log 2> & 1
Разрешение на файл модуля должно быть установлено на 644:
sudo chmod 644 /lib/systemd/system/sample.serviceШаг 2 — Настройте systemd
Теперь файл модуля определен, и мы можем сказать systemd запустить его во время загрузки:
sudo systemctl демон-перезагрузка sudo systemctl enable sample.обслуживание
Перезагрузите Pi, и ваша пользовательская служба должна запустить :
перезагрузка sudoМетод 5: crontab
Подробное руководство по использованию crontab для запуска программы при загрузке можно найти здесь.
Вы можете использовать любой из этих методов для запуска вашей программы при загрузке, если точка, в которой ваш скрипт Python запускается в последовательности запуска, не важна. Если ваш сценарий полагается на какие-либо системные функции, доступные в этот момент времени, такие как подключенная и доступная сеть, каталог / home / pi смонтирован и готов к использованию или системное время было обновлено NTP, тогда это было бы идеально. использовать systemd или init.d методы. Эти методы контролируют точку загрузки, в которой ваш скрипт выполняется во время загрузки.
Ваше желание — моя команда.
Узнать больше
Хотите создать отличные проекты с Raspberry Pi и роботами? Собери свой собственный автомобиль-робот GoPiGo! Посетите нашу страницу проектов, чтобы увидеть больше примеров забавных проектов робототехники с вашим Raspberry Pi!
ВопросыЕсть вопросы? Нужна помощь? Спросите на нашем форуме!
Узнать больше!
Если вам понравился этот учебник, подумайте о том, чтобы получить Raspberry Pi здесь и SD-карту с Raspbian для роботов здесь, чтобы попробовать себя.
Использование сценариев запуска на виртуальных машинах Linux | Документация по Compute Engine
Linux
Сценарий запуска — это файл, который выполняет задачи во время процесса запуска
экземпляр виртуальной машины (ВМ). Сценарии запуска могут применяться ко всем виртуальным машинам в проекте.
или на одну виртуальную машину. Сценарии запуска, указанные в переопределении метаданных на уровне ВМ
сценарии запуска, указанные в метаданных уровня проекта, и только сценарии запуска
запускать, когда сеть доступна.В этом документе описывается, как использовать автозагрузку
сценарии на экземплярах виртуальных машин Linux. Для получения информации о том, как добавить
сценарий запуска на уровне проекта, см. gcloud compute project-info add-metadata
.
Для сценариев запуска Linux вы можете использовать файл bash или не-bash. Чтобы использовать не-bash
файла, назначьте интерпретатор, добавив #!
в начало файла. Для
Например, чтобы использовать сценарий запуска Python 3, добавьте #! / usr / bin / python3
наверх
файла.
Если вы укажете сценарий запуска с помощью одной из процедур в этом документе, Compute Engine выполняет следующие действия:
Копирует сценарий запуска в виртуальную машину
Устанавливает разрешения на запуск для сценария запуска
Запускает сценарий запуска от имени пользователя root
при загрузке виртуальной машины
Для получения информации о различных задачах, связанных со сценариями запуска, и о том, когда выполнить каждый из них, см. Обзор.
Прежде чем начать
Сценарий запуска передается на виртуальную машину из местоположения, указанного в ключ метаданных. Ключ метаданных указывает, сохраняется ли сценарий запуска. локально, хранится в облачном хранилище или передается непосредственно на виртуальную машину. В Ключ метаданных, который вы используете, также может зависеть от размера сценария запуска.
В следующей таблице показаны ключи метаданных, которые можно использовать для запуска Linux. сценарии и предоставляет информацию о том, какой ключ использовать в зависимости от хранилища расположение и размер сценария запуска.
Ключ метаданных | Используйте для |
---|---|
сценарий запуска | Передача сценария запуска bash или не-bash, который хранится локально или добавляется напрямую и имеет размер до 256 КБ |
URL-адрес сценария запуска | Передача сценария запуска bash или не-bash, который хранится в облачном хранилище и имеет размер более 256 КБ |
Порядок выполнения скриптов запуска Linux
Можно использовать несколько сценариев запуска.Скрипты запуска, хранящиеся локально или добавленные непосредственно выполнять перед запуском скрипты, которые хранятся в Облачное хранилище. В следующей таблице показано, на основе ключа метаданных, порядок выполнения сценариев запуска Linux.
Ключ метаданных | Порядок исполнения |
---|---|
сценарий запуска | Сначала при каждой загрузке после начальной загрузки |
URL-адрес сценария запуска | Секунда при каждой загрузке после начальной загрузки |
Непосредственная передача сценария запуска Linux
Вы можете добавить содержимое сценария запуска непосредственно в виртуальную машину при создании ВМ.Следующие процедуры показывают, как создать виртуальную машину со сценарием запуска. который устанавливает Apache и создает базовую веб-страницу.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине.
Консоль
Передача сценария запуска Linux непосредственно новой виртуальной машине
В Google Cloud Console перейдите на страницу Create an instance .
Перейти к созданию экземпляра
Для загрузочного диска выберите Изменить и выберите Linux , работающий система.
Разверните раздел Сеть, диски, безопасность, управление, единоличное владение и выполните следующий:
- Разверните раздел Management .
В разделе Automation добавьте следующий сценарий запуска:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.html
Сценарий запуска Linux добавлен напрямую.
Щелкните Создать .
Передача сценария запуска Linux непосредственно существующей виртуальной машине
Щелкните Изменить .
В разделе Пользовательские метаданные укажите следующее:
-
ключ
:сценарий запуска
-
значение
: содержимое сценария запуска
-
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
gcloud
Передача сценария запуска Linux непосредственно новой виртуальной машине
Передать содержимое сценария запуска непосредственно виртуальной машине при ее создании.
с помощью следующих экземпляров вычислений gcloud создайте
команда.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata = startup-script = '#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.htmlСценарий запуска Linux добавлен напрямую.
'
Замените VM_NAME именем виртуальной машины.
Передача сценария запуска Linux непосредственно существующей виртуальной машине
Добавьте сценарий запуска непосредственно в существующую виртуальную машину, используя следующие gcloud compute instance add-metadata
команда:
Добавление метаданных экземпляров gcloud compute VM_NAME \ --metadata = startup-script = '#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.htmlСценарий запуска Linux добавлен напрямую.
'
Замените VM_NAME именем виртуальной машины.
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт. Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
API
Передача сценария запуска Linux непосредственно новой виртуальной машине
Передайте содержимое сценария запуска непосредственно виртуальной машине при его создании с помощью
используя следующие экземпляра.вставка
метод.
POST https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance { ... "networkInterfaces": [ { "accessConfigs": [ { "тип": "ONE_TO_ONE_NAT" } ] } ], "метаданные": { "Предметы": [ { "ключ": "сценарий запуска", "value": "#! / bin / bash \ napt update \ napt -y install apache2 \ ncat << EOF> /var/www/html/index.html\nСценарий запуска Linux добавлено напрямую.
" } ] }, ... }
Заменить следующее:
Передача сценария запуска Linux непосредственно существующей виртуальной машине
Получите значение
tags.fingerprint
виртуальной машины с помощью экземпляров.get
метод.ПОЛУЧИТЬ https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME
Заменить следующее:
Передайте сценарий запуска, используя значение
отпечатка пальца
вместе с ключ метаданных и значение для сценария запуска при вызовеэкз.setMetadata
метод:POST https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / Zone / ZONE / instance / VM_NAME / setMetadata { «отпечаток пальца»: FINGERPRINT , "Предметы": [ { "ключ": "сценарий запуска", "value": "#! / bin / bash \ napt update \ napt -y install apache2 \ ncat << EOF> /var/www/html/index.html\n
Сценарий запуска Linux добавлено напрямую.
" } ], ... }Заменить следующее:
PROJECT_ID : идентификатор проекта
ЗОНА : зона ВМ
VM_NAME : зона виртуальной машины
FINGERPRINT : значение
tags.fingerprint
получено с помощью экземпляров. get
метод
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
Передача сценария запуска Linux из локального файла
Вы можете сохранить сценарий запуска в локальном файле на своей рабочей станции и передать local как метаданные для виртуальной машины при ее создании. Вы не можете использовать сохраненные файлы на виртуальных машинах в качестве сценариев запуска.
Перед передачей сценария запуска Linux из локального файла в виртуальную машину выполните следующий:
Создайте локальный файл для хранения сценария запуска.
Обратите внимание на относительный путь от инструмента
gcloud
до сценария запуска.Добавьте в файл следующий сценарий запуска:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
сценарий запуска Linux из локального файла.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине.
gcloud
Передача сценария запуска Linux из локального файла в новую виртуальную машину
Создайте виртуальную машину и передайте содержимое локального файла для использования в качестве
сценарий запуска с использованием экземпляров gcloud compute create
с флагом --metadata-from-file
.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata-from-file = сценарий запуска = FILE_PATH
Заменить следующее:
Передача сценария запуска Linux из локального файла в существующую виртуальную машину
Передайте сценарий запуска существующей виртуальной машине из локального файла, используя следующие gcloud compute instance add-metadata
команда:
Добавление метаданных экземпляров gcloud compute VM_NAME \ --metadata-from-file startup-script = FILE_PATH
Заменить следующее:
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создан веб-сайт.Возможно, вам придется подождать около 1 минуты для запуска образца сценарий, чтобы закончить.
Передача сценария запуска Linux из облачного хранилища
Вы можете сохранить сценарий запуска в облачном хранилище и передать его виртуальной машине. когда вы его создаете. После добавления сценария запуска в облачное хранилище у вас есть URL-адрес, который можно использовать для ссылки на сценарий запуска при создании виртуальная машина.
Перед добавлением сценария запуска из сегмента Cloud Storage выполните следующий:
Создайте файл для хранения сценария запуска.В этом примере используется bash (
.sh
) файл.Добавьте следующее в файл bash, который устанавливает Apache и создает простая веб-страница:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
Сценарий запуска Linux из облачного хранилища.
Создайте корзину Cloud Storage.
Добавьте файл в корзину Cloud Storage.
Последствия для безопасности
По умолчанию владельцы и редакторы проектов имеют доступ к Файлы Cloud Storage в том же проекте, если нет явного средства контроля доступа, которые его запрещают.
Если сегмент или объект облачного хранилища менее безопасны, чем метаданные, существует риск повышения привилегий при изменении сценария запуска и ВМ перезагружается. Это связано с тем, что после перезагрузки виртуальной машины сценарий запуска запускается как
root
и затем может использовать разрешения подключенной учетной записи службы для доступ к другим ресурсам.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине. - Разрешение на доступ к корзине и файлу сценария в облачном хранилище. Проверьте настройки контроля доступа в корзине и файле, чтобы убедиться, что у вас есть разрешение.
Консоль
Передача сценария запуска, который хранится в облачном хранилище, на новую виртуальную машину
В Google Cloud Console перейдите на страницу Create an instance .
Перейти к созданию экземпляра
Укажите сведения о виртуальной машине.
Для Загрузочного диска выберите Изменить и выберите Linux операционная система.
В разделе Identity and API access выберите сервисный аккаунт, который имеет средство просмотра объектов хранилища роль (
ролей / storage.objectViewer
).Разверните раздел Networking, disks, security, management, single tenancy , а затем выполните следующий:
- Разверните раздел Management .
В разделе Метаданные добавьте следующие значения:
Ключ : ключ метаданных. Установите
URL-адрес сценария запуска
, чтобы добавить сценарий запуска из облачного хранилища.Значение : значение метаданных. Установить в облачное хранилище расположение файла сценария запуска, используя один из следующих форматы:
- URL-адрес с аутентификацией :
https://storage.googleapis.com/ BUCKET / ФАЙЛ
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
Заменить следующее:
- BUCKET : название ковша, который содержит файл сценария запуска
- ФАЙЛ : имя сценария запуска файл
- URL-адрес с аутентификацией :
Чтобы создать виртуальную машину, щелкните Create .
Передача сценария запуска, который хранится в облачном хранилище, на существующую виртуальную машину
Отредактируйте ВМ, затем в Custom metadata используйте следующие значения для метаданных:
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт. Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
gcloud
Передача сценария запуска, хранящегося в облачном хранилище, на новую виртуальную машину
Передайте сценарий запуска, хранящийся в облачном хранилище, на виртуальную машину, когда вы
создайте его с помощью следующих экземпляров gcloud compute create
команда.По стоимости
флаг --scope
, используйте storage-ro
, чтобы виртуальная машина могла получить доступ
Облачное хранилище.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --scopes = хранилище-ро \ --metadata = start-script-url = CLOUD_STORAGE_URL
Заменить следующее:
VM_NAME : имя виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных.Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес с аутентификацией :
https://storage.googleapis.com/ BUCKET / ФАЙЛ
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес с аутентификацией :
Передача сценария запуска, хранящегося в облачном хранилище, на существующую виртуальную машину
Передайте сценарий запуска, который хранится в облачном хранилище, в
существующая виртуальная машина с помощью следующих экземпляров gcloud compute add-metadata
команда:
Добавление метаданных экземпляров gcloud compute VM_NAME \ --metadata startup-script-url = CLOUD_STORAGE_URL
Заменить следующее:
VM_NAME : имя виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес с аутентификацией :
https://storage.googleapis.com/ BUCKET / ФАЙЛ
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес с аутентификацией :
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
API
Передача сценария запуска, который хранится в облачном хранилище, на новую виртуальную машину
Передача сценария запуска, который хранится в облачном хранилище, на виртуальную машину.
когда вы создаете его, используя следующие экземпляры . вставьте
метод. К прицелам
добавьте https://www.googleapis.com/auth/devstorage.read_only
, чтобы виртуальная машина
может получить доступ к облачному хранилищу.
POST https: // compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance { ... "networkInterfaces": [ { "accessConfigs": [ { "тип": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "электронная почта": "по умолчанию", "области": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "метаданные": { "Предметы": [ { "ключ": "URL-адрес сценария запуска", "значение": " CLOUD_STORAGE_URL " } ] }, ... }
Заменить следующее:
PROJECT_ID : идентификатор проекта.
ЗОНА : зона для создания новой виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес с аутентификацией :
https://storage.googleapis.com/ BUCKET / ФАЙЛ
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес с аутентификацией :
Передача сценария запуска, хранящегося в облачном хранилище, на существующую виртуальную машину
Получите теги
.значение отпечатка
виртуальной машины с использованием экземпляров. get
метод.ПОЛУЧИТЬ https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME
Заменить следующее:
Передайте сценарий запуска, используя значение
отпечатка пальца
вместе с ключ метаданных и значение для сценария запуска при вызовеinstance.setMetadata
метод:POST https: // compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME / setMetadata { «отпечаток пальца»: FINGERPRINT , "Предметы": [ { "ключ": "URL-адрес сценария запуска", "значение": " CLOUD_STORAGE_URL " } ], ... }
Заменить следующее:
PROJECT_ID : идентификатор проекта.
ЗОНА : зона ВМ.
VM_NAME : зона виртуальной машины.
FINGERPRINT : значение
tags.fingerprint
получено с помощью экземпляров. get
метод.CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес с аутентификацией :
https://storage.googleapis.com/ BUCKET / ФАЙЛ
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес с аутентификацией :
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
В сценарии запуска вы можете получить доступ к значениям метаданных. Например, вы можете использовать один и тот же сценарий для нескольких виртуальных машин и параметризация каждого сценария индивидуально с помощью передача разных значений метаданных каждой виртуальной машине.
Чтобы получить доступ к настраиваемому значению метаданных из сценария запуска, выполните следующие действия:
Создайте сценарий запуска, который запрашивает значение ключа метаданных. Для Например, следующий файл bash (
.sh
) сценарий запуска запрашивает значение параметраfoo
ключ метаданных.#! / bin / bash METADATA_VALUE = $ (curl http: //metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
Доступ к значению метаданных foo: $ METADATA_VALUE
Установите значение ключа метаданных
foo
при создании виртуальной машины с помощью следующиеэкземпляра вычислений gcloud создают
команда.В этом примере сценарий запуска передается виртуальной машине из локального файла.gcloud
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata-from-file = startup-script = FILE_PATH \ --metadata = foo = bar
Заменить следующее:
Для получения дополнительной информации о том, как указать пару ключ / значение метаданных, см. Установка собственных метаданных.
На локальной рабочей станции просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска выводит значение
foo
.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
Повторный запуск сценария запуска Linux
Перезапустите сценарий запуска, выполнив следующие действия:
Подключение к ВМ.
Выполнение следующей команды:
sudo google_metadata_script_runner запуск
Просмотр вывода сценария запуска Linux
Вы можете просмотреть вывод сценария запуска Linux, выполнив любое из следующий:
Что дальше
Как запустить сценарий при запуске с помощью systemd в Linux
В этой статье я поделюсь образцом файла модуля systemd, который вы можете использовать для запуска скрипта при запуске с systemd без использования crontab в RHEL / CentOS 7/8 Linux.
Еще несколько статей по аналогичной теме:
Могут быть разные сценарии, когда вы ожидаете, что сценарий или команда будет вызываться при запуске, например
- Выполнить сценарий после ожидания N минут запуска
- Выполнить сценарий после загрузки всех служб systemd
- Выполнить сценарий сразу после появления приглашения на вход
- Выполнить сценарий непосредственно перед появлением приглашения на вход
В этой статье я рассмотрю две темы, поскольку они почти схожи.
- Запускать сценарий при запуске с помощью systemd после того, как сеть становится доступной
- Выполнить сценарий при запуске после загрузки всех служб systemd
Я буду использовать узел CentOS / RHEL 7/8 Linux, чтобы проверить шаги из этой статьи по запуску сценария с systemd прямо перед запросом на вход.
Шаг 1. Обзор systemd
Надеюсь, вы уже знакомы с темами ниже
Шаг 2. Создайте образец сценария
Теперь, чтобы запустить сценарий при запуске с помощью systemd, сначала нам понадобится сценарий или команда. Для этой статьи я создал фиктивный сценарий оболочки /tmp/startup_script.sh
, который мы будем использовать для тестирования этой статьи.
[корень @ centos-8 ~] # cat /tmp/startup_script.sh #! / bin / bash SCRIPT_NAME = $ (базовое имя - "$ 0") г = 0 для i в {1..5}; делать спать 1 мес. ((z ++)) стена $ SCRIPT_NAME: завершена минута $ {z} сделано стена $ SCRIPT_NAME: ПОЛНОСТЬЮ ЗАВЕРШЕНО
Этот сценарий будет продолжать работать в течение 5 минут и каждую минуту будет выводить на экран эхо-запрос в виде широковещательного сообщения с использованием команды wall
для всех пользователей Linux на соответствующем узле. А в конце 5-й минуты он распечатает законченную трансляцию. Благодаря этому мы также можем убедиться, что скрипт не будет убит systemd, если он продолжит работать в течение 5 минут.
Предоставить исполняемые права для скрипта
[корень @ centos-8 ~] # chmod u + x /tmp/startup_script.sh
Создайте новый файл служебной единицы systemd со следующим содержимым:
[корень @ centos-8 ~] # cat /etc/systemd/system/run-at-startup.service [Ед. изм] Описание = Запускать скрипт при запуске после того, как сеть станет доступной [Услуга] Тип = простой RemainAfterExit = да ExecStart = / tmp / startup_script.sh TimeoutStartSec = 0 [Установить] WantedBy = по умолчанию.цель
Далее, чтобы активировать изменения, выполните следующую команду:
~] # systemctl daemon-reload
Включите службу, чтобы она вызывалась автоматически после перезагрузки
[root @ centos-8 ~] # systemctl enable run-at-startup.service Создана символическая ссылка /etc/systemd/system/default.target.wants/run-at-startup.service → /etc/systemd/system/run-at-startup.service.
Шаг 3: Создайте файл модуля systemd для другого сценария
Шаг 3.1: Запускать сценарий при запуске с помощью systemd после того, как сеть станет доступной
В этом сценарии мы выполним наш сценарий, как только сеть станет доступной, то есть когда network.target запускается на этапе загрузки с использованием After = network.target
. Файл модуля должен находиться либо в / usr / lib / systemd / system
, либо в / etc / systemd / system
. Я помещу его в папку / etc / systemd / system
, поскольку он используется для размещения файла пользовательского модуля.
[root @ centos-8 ~] # cat / etc / systemd / system / run-at-startup.услуга [Ед. изм] Описание = Запускать скрипт при запуске после того, как сеть станет доступной После = network.target [Услуга] Тип = простой RemainAfterExit = да ExecStart = / tmp / startup_script.sh TimeoutStartSec = 0 [Установить] WantedBy = default.target
Шаг 3.2: Запуск сценария при запуске с systemd после загрузки всех служб systemd
Теперь в этом сенарио мы должны убедиться, что все службы systemd для соответствующей цели загружены, прежде чем запускать скрипт.Таким образом, чтобы запустить сценарий при запуске с помощью systemd после загрузки всех служб systemd, мы должны соответствующим образом определить нашу директиву After =
. Поскольку default.target будет зависеть от среды, вместо того, чтобы указывать конкретное имя цели, мы будем использовать After = default.target
, поэтому systemd определит свой default.target и вызовет сценарий при запуске в Linux.
[корень @ centos-8 ~] # cat /etc/systemd/system/run-at-startup.service [Ед. изм] Описание = Запускать скрипт при запуске после загрузки всех сервисов systemd После = по умолчанию.цель [Услуга] Тип = простой RemainAfterExit = да ExecStart = / tmp / startup_script.sh TimeoutStartSec = 0 [Установить] WantedBy = default.target
Шаг 3.3: Запуск сценария при запуске с помощью systemd после появления приглашения на вход
Теперь и в этом сценарии мы будем играть только с директивой After =
файла модуля. Теперь, поскольку требуется запускать скрипт при запуске с помощью systemd после появления приглашения на вход, мы будем использовать After = getty.цель
[корень @ centos-8 ~] # cat /etc/systemd/system/run-at-startup.service [Ед. изм] Описание = Запускать скрипт при запуске после загрузки всех сервисов systemd После = getty.target [Услуга] Тип = простой RemainAfterExit = да ExecStart = / tmp / startup_script.sh TimeoutStartSec = 0 [Установить] WantedBy = default.target
Здесь,
After = Если скрипту требуются какие-либо другие системные средства (сеть и т. Д.), Измените раздел [Unit], включив соответствующие После =, Wants = или Requires = директивы, как описано в: man systemd.Ед. изм Type = Switch Type = simple для Type = idle в разделе [Service], чтобы отложить выполнение скрипта до всех остальных отправляются задания (см. man systemd.service для еще большего выбора - например, Type = oneshot может быть полезен вместе с другими службами). TimeoutStartSec = Когда служба не сигнализирует о завершении запуска в течение TimeoutStartSec, systemd считает, что служба не выполнена; для долго работающих сценариев оболочки важно изменить TimeoutStartSec или полностью отключить логику тайм-аута как указано выше, с TimeoutStartSec = 0.См. Man systemd.service для более подробной информации.
Здесь, если вы заметили, мы определили After = network.target
, чтобы убедиться, что сценарий
Обновите файлы конфигурации systemd и включите службу
[root @ centos-8 ~] # systemctl демон-перезагрузка [root @ centos-8 ~] # systemctl enable run-at-startup.service
Шаг 4. Проверьте конфигурацию файла systemd.
Теперь наша конфигурация готова для запуска скрипта при запуске в CentOS / RHEL 7/8 Linux.
НАМЕКАТЬ: Вы также можете использовать systemctl list-jobs
в сценарии для отслеживания списка активных заданий, когда сценарий выполнялся при запуске.
Теперь после перезагрузки узла Linux мы видим, что наш startup_script.sh работает в фоновом режиме
[root @ centos-8 ~] # ps -ef | grep запуск корень 805 1 0 11:38? 00:00:00 / bin / bash /tmp/startup_script.sh root 1198 1147 0 11:39 pts / 0 00:00:00 grep --color = автоматический запуск
Также через некоторое время мы начнем получать широковещательные сообщения от пользователя root.
Широковещательное сообщение от [email protected] (где-то) (четверг, 16 января, 11:39: startup_script.sh: завершена минута 1 Широковещательное сообщение от [email protected] (где-то) (четверг, 16 января, 11:40: startup_script.sh: завершена минута 2 Широковещательное сообщение от [email protected] (где-то) (чт, 16 января, 11:41: startup_script.sh: завершена минута 3 Широковещательное сообщение от [email protected] (где-то) (четверг, 16 января, 11:42: запуск_скрипт.sh: завершена минута 4 Широковещательное сообщение от [email protected] (где-то) (четверг, 16 января, 11:43: startup_script.sh: завершена минута 5 Широковещательное сообщение от [email protected] (где-то) (четверг, 16 января, 11:43: startup_script.sh: ПОЛНОСТЬЮ ЗАВЕРШЕНО
Я проверил сценарий для обоих сценариев для запуска сценария при запуске с systemd (без crontab) в Linux, но я не помещаю вывод из обоих сценариев, поскольку вывод в обоих случаях одинаков.
ЗАМЕТКА: После загрузки используйте systemd-analysis plot> file.svg
, чтобы сгенерировать образ процесса загрузки для проверки. Вы можете использовать любой браузер, чтобы просмотреть этот файл .svg
и проверить процесс загрузки. После run-at-startup.service
может быть одна или две краткосрочных службы. Если это проблема, измените /etc/systemd/system/run-at-startup.service
, чтобы установить Type = idle
Наконец, я надеюсь, что шаги из статьи по запуску скрипта при запуске с systemd без использования crontab в CentOS / RHEL 7/8 Linux были полезны.Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.
Похожие запросы: Как выполнить сценарий при запуске, как только сеть становится доступной в Linux. Как вызвать сценарий или выполнить команду при запуске Linux, когда в Linux отображается приглашение для входа в систему. Как выполнить сценарий с systemd при запуске после загрузки всех сервисов systemd в RHEL / CentOS 7/8 Linux с примерами. Как запустить скрипт при запуске с помощью crontab и cron job. как добавить сценарии запуска в redhat linux 7.запускать скрипт при запуске.
Похожие сообщения
Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud
. .