Альт линукс caps автозапуск

Обновлено: 06.07.2024

Добавление сервисов в автозагрузку на Linux через консоль.
Список всех сервисов и их состояние можно просмотреть командой:

Добавление сервиса в автозагрузку:

Удаление сервиса из автозагрузки:

Ubuntu-18.04

Поддерживаемые релизы: Ubuntu-15.04, 15.10, 16.04, 16.10, 18.04.

systemd — это менеджер системы и сервисов в операционной системе Linux.

Сейчас он, по умолчанию, используется в большинстве Linux дистрибутивах и полностью поддерживается в Ubuntu-15.04 и последующих релизах.

Он поставляется с командной утилитой systemctl, которая, помимо всего прочего, позволяет включать и выключать сервисы во время загрузки системы.

Узнать стоит ли сервис в автозагрузке:

Убрать сервис из автозагрузки в Ubuntu-18.04:

Добавить сервис в автозагрузку в Ubuntu-18.04:

Ubuntu-14.04

Поддерживаемые релизы: Ubuntu-9.10, 10.04, 10.10, 11.04, 11.10, 12.04, 12.10, 13.04, 13.10, 14.04, 14.10.

Узнать стоит ли сервис в автозагрузке:

Убрать сервис из автозагрузки в Ubuntu-14.04:

Добавить сервис в автозагрузку в Ubuntu-14.04:

CentOS-7

systemd — это менеджер системы и сервисов в операционной системе Linux, который становится новым стандартом для Linux машин.

В CentOS-7, он заменяет Upstart в качестве init системы по умолчанию.

systemd поставляется с командной утилитой systemctl , которая является центральной управляющей программной для systemd , которая, помимо всего прочего, умеет включать и выключать сервисы во время загрузки системы.

Узнать стоит ли сервис в автозагрузке:

Убрать сервис из автозагрузки в CentOS-7:

Добавить сервис в автозагрузку в CentOS-7:

CentOS-6

Узнать стоит ли сервис в автозагрузке:

Убрать сервис из автозагрузки в CentOS-6:

Добавить сервис в автозагрузку в CentOS-6:

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.

В этой статье мы рассмотрим как работает автозагрузка Linux, как добавить программы автозагрузки, куда их будет более правильно добавить, а также какие виды автозагрузки бывают в этой операционной системы.

Как работает автозагрузка?

Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux. Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации - это основной процесс, именно он запускает все другие процессы в системе.

Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.

Рассмотрим основные уровни автозагрузки которые вы можете использовать:

  • Автозагрузка на уровне ядра - вы можете указать любую программу, которая будет запускаться после старта ядра вместо системы инициализации;
  • Автозагрузка системы инициализации - запуск основных системных сервисов, дополнительных сервисов, а также ваших скриптов на этапе инициализации системы;
  • Автозагрузка rc.local - устаревший метод загрузки скриптов, выполняется перед запуском графического окружения;
  • Автозагрузка менеджера входа - вы можете выполнять свои скрипты или команды после запуска менеджера входа, но перед запуском окружения;
  • Автозагрузка X сервера - запуск нужных программ или скрпитов сразу после старта X сервера;
  • Автозагрузка окружения - большинство окружений поддерживают автозагрузку программ, там даже можно настроить отложенный запуск и другие параметры;
  • Автозагрузка bash - самый последний вариант - это автозагрузка на уровне отдельной командной оболочки, вы можете выполнять нужные команды автоматически, как только будет запущен терминал.

Дальше мы рассмотрим более подробно как использовать каждый из пунктов для автозагрузки программ, скриптов или выполнения команд в Linux.

Автозагрузка на уровне ядра

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

Также вы можете проверить добавлена ли уже служба в автозагрузку:

Если вы не знаете точное имя файла сервиса, но знаете его первую букву, то можно использовать автодополнение, как и в любом другом месте терминала с помощью кнопки Tab:

Также вы можете посмотреть все сервисы, которые были добавлены в автозагрузку с помощью команды:

systemctl list-unit-files | grep enabled

Автозагрузка скриптов в Linux

Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /etc/rc.local. Этот файл все еще существует, но это пережиток системы инициализации SysVinit и теперь он сохраняется только для совместимости. Скрипты же нужно загружать только с помощью Systemd.

Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:

sudo vi /lib/systemd/system/runscript.service

[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/local/script.sh
[Install]
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 еще не существует, то его нужно создать:

Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:


Готово. Осталось сохранить изменения. При следующем запуске X сервера сработает автозапуск Linux и выполняется эта команда. Таким же способом может выполняться автозапуск приложений linux.

Автозагрузка окружения рабочего стола

Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется "Запускаемые автоматически приложения". Вы можете запустить ее из главного меню системы:


Здесь вы видите все программы, которые уже добавлены в автозагрузку. Вы можете отключить каждую из них просто сняв галочку.


Чтобы добавить новую программу или скрипт в автозагрузку нажмите кнопку "Добавить":


Тут вам нужно заполнить три поля:

  • Имя - произвольное имя для команды, по которому вы сможете ее найти;
  • Команда - полный путь к исполняемому файлу программы;
  • Комментарий - дополнительная информация, указывать необязательно.


Дальше нажмите "Добавить" ваша программа появится в списке. При следующей загрузке системы, будет выполняться автозагрузка программ linux.

Автозагрузка Bash

Самый простой автозапуск скрипта linux - это запуск с помощью bashrc. Ваш скрипт или команда будет выполняться каждый раз, когда запускается новая сессия терминала. Для этого добавьте адрес нужного скрипта в файл

/usr/bin/local/script
export MYWAR=test

Здесь вы можете запускать на выполнение любые скрипты или команды. Часто такой подход используется для создания псевдонимов команд, объявления новых переменных и собственных функций.

Выводы

В этой статье мы рассмотрели добавление в автозагрузку linux, а также как работает автозагрузка и ее виды. Конечно, существует множество других файлов, куда бы вы могли пристроить свой скрипт, но это будет неправильно. Нужно использовать только предназначенные для этого методы, хотя бы потому, чтобы потом не забыть. Если у вас остались вопросы, спрашивайте в комментариях!

date

21.04.2020

directory

CentOS, Linux

comments

комментариев 8

В данной статье мы рассмотрим основы управлением автозагрузкой сервисов и скриптов в Linux CentOS 7/8. В частности, разберем основы работы с демоном systemd, научимся добавлять в автозагрузку сервисы и убирать их оттуда, а также рассмотрим альтернативные варианты запуска скриптов или демонов после старта системы.

Задача статьи – научить вас быстро разобраться со списками служб и скриптов которые запускаются в Linux автоматически, добавить в автозагрузку свои службы или скрипты, или отключить автозапуск определённых программ.

Systemd: управление автозагрузкой служб в Linux

В большистве популярных современных популярных дистрибутивов Linux (CentOS 7, RHEL, Debian, Fedora и Ubuntu) в качестве демона автозагрузки вместо init.d используется systemd. Systemd – менеджер системы и служб Linux, используется для запуска других демонов и управления ими в процессе работы, использует unit-файлы из /etc/systemd/system (init.d использовал скрипты из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб в процессе загрузки ОС, тем самым ускоряя запуск.

Для управления system используется команда systemctl.

Для начала, после загрузки системы, мы проверим список юнитов, которые в данный момент добавлены в systemd:

systemctl list-units

Список unit-файлов можно получить командой:

Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).

Чтобы вывести список активных сервисов и их состояние, выполните:

Как видим из списка, здесь отображаются даже сервисы, которые не были найдены на диске «not-found».

Использую данную команду, вы можете добавить и другие флаги, например:

systemctl list-units —type=service вывести список сервисов в centos

Добавление сервиса в systemd

Для управления сервисами в systemd используется особый синтаксис. После имени серверсв в конце нужно указывать .service. Например:

systemctl enable nginx.service – команда добавит в автозагрузку веб-сервер nginx

Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.

Вывод этой команды показывает в какой директории был создан симлинк на файл сервиса.

Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:

systemctl status nginx.service

При выводе нужно обратить внимание на строку:

Значение enabled означает что данный сервис загружается автоматически (добавлен в автозагрузку). Если сервис не загружается автоматом, здесь буде указано disabled.

Удаление сервиса из systemd

Вы можете удалить сервис из автозагрузки, чтобы он не запускался после старта Linux (при этом сам сервис с сервера не удаляется). Чтобы удалить сервис из автозагрузки, выполните команду:

systemctl disable нужный_сервис

Например, чтобы удалить из автозагрузки nginx, выполните:

После выполнения команды, симлинк на файл сервиса будет удален из директории systemd. Можно проверить, есть ли юнит в автозагрузке:

Systemd: маскировка юнитов

В моей практике встречались «вредные» сервисы, которые после удаления их из автозагрузки, все равно там оставались и запускались после рестарта ОС. Чтобы решить этот вопрос, можно замаскировать сервис:

systemctl mask nginx.service

И после этого, он вообще не будет запускаться, ни вручную, ни после перезагрузки ОС:

Снять маску можно командой:

Если после маскировки сервиса, вы проверите юнит-файлы, то увидите, что сервис помечен как замаскированный (состояние masked):

systemctl mask маскировка сервиса

Таким нехитрым способом, можно избавить себя от удаления сервиса, даже если он не удаляется из автозагрузки systemd.

Автозапуска скриптов и сервисов с помощью rc.local

Для запуска различных скриптов при загрузке Linux чаще всего используется rc.local.

Но помимо скриптов, через rc.local так же можно и запускать сервисы, даже те, которые запускаются через systemd. Не могу ответить на вопрос, для чего использовать в таком случае rc.local, если есть systemd, но пару примеров я приведу.

Начнем с того, что файл /etc/rc.local должен быть исполняемым:

chmod +x /etc/rc.local

Rc.local должен быть добавлен в автозагрузку systemd:

systemctl enable rc-local

И на примере того же nginx, мы можем добавить в rc.local команду запуска веб-сервера:

service nginx start

rc.local - автозапуск команда в libux centos

Но я редко использую rc.local для запуска сервисов. Чаще rc.local используется, когда нужно запустить скрипт, либо выполнить разово какую-то команду.

К примеру, я создал скрипт /root/test.sh который выполняет некоторые действия, и хочу запустить его сразу после запуска системы. Добавляем в файл rc.local строку:

rc.local запуск sh скрипта

Начиная с CentOS 7, разработчики указывают на то, что rc.local устаревший демон и осуществлять автозапуск скриптов или сервисов через него, это прошлый век. Но пока он работает, я пользуюсь им, так как он очень прост в эксплуатации.

Создание собственного демона и добавление его в systemd

Вы можете создать собственный демон, которым можно будет управлять через systemd.

Например, нам нужно запускать все тот же скрипт /root/test.sh после перезагрузки системы. Начнем с создания файла нашей будущей службы:

touch /etc/systemd/system/test-script.service
chmod 664 /etc/systemd/system/test-script.service
nano /etc/systemd/system/test-script.service

Содержимое файла будет следующее:

User – пользователь под которым будет запускаться демон

Type=oneshot — процесс будет завершен до запуска дальнейших юнитов

Если вас устроило то, как работает сервис, добавьте его в автозагрузку:

Таким образом, вы можете добавить любой ваш скрипт в автозагрузку через systemd.

Автозапуск через cron

Если вам с какой-то периодичностью нужно запускать скрипт или команду, вы можете воспользоваться cron-ом:

crontab -e — открыть терминал для написания задания cron

И добавьте туда нужное вам задание, например:

* * * * * /root/test.sh — запускать скрипт каждую минуту.

Можно написать скрипт watch-dog, который по заданию будет проверять, например, статус какого-либо сервиса и, если он не работает, запускать его. На нескольких своих проектах я использую подобную схему.

Чтобы вывести список всех заданий в крон, нужно выполнить команду:

Допустимые значения для времени запуска заданий cron по порядку:

  • Минуты от 0 до 59
  • Часы от 0 до 59
  • День месяца от 1 до 31
  • Месяц от 1 до 12
  • День недели от 0 до 7 (0 или 7 это воскресение)

В нашем задании скрипт запускается каждую минуту, поэтому там стоят «*».

Так же вы можете разместить нужный вам скрипт в директориях cron:

Скрипты в указанных директория будут запускаться согласно автоматически подготовленного расписания.

.bashrc: автозапуск скриптов при запуске терминала

Если вам требуется выполнять какие-то действия при запуске терминала ssh, вы можете добавить любую команду или выполнение скрипта в .bash_profile или .bashrc. Теоретически, вы можете добавить какое-либо действие в любой из этих файлов, оно выполнится в любом случае. Обычно все необходимое добавляется в .bashrc, а сам .bashrc запускают из .bash_profile.

Я добавил в файл .bashrc команду на рестарт веб-сервиса nginx:

service nginx restart

.bash_profile - запуск скрипта при старте сессии

После этого сохранил файл и перезапустил терминал:

пример автозапуска скрипта через сессию

Как видите, при запуске терминала, веб-сервер был перезапущен. Какие действия можно выполнять при запуске терминала? Вероятно, запускать какие-то вспомогательные утилиты, например, проверка uptime сервера:

показывать uptime при входе

Или вы хотите, чтобы при запуске терминала, вы сразу попадали в нужную вам директорию и запускали mc, добавьте в .bashrc


Надеюсь эта статья по управлению автозапуском сервисов и скриптов в LInux (статья писалась для CentOS) оказалась полезной для вас. Наверняка тем, кто только познает азы системного администрирования Linux, это информация будет кстати.

Всех приветствую!

Сегодняшний вопрос (насчет автозагрузки приложений) весьма популярен, причем, как при работе в Windows, так и Linux. Разумеется, в Linux он имеет свои особенности.

Наверное, для начала сразу же следует сказать, что в Linux несколько уровней (режимов) автозагрузки. Например, есть автозагрузка на уровне ядра, на уровне скриптов (rc.local), bash, и пр. малопонятные для начинающего пользователя аббревиатуры.

Если в процессе настройки вам понадобиться указать программу вручную (которую требуется авто-загружать) — ищите исполняемый файл в каталоге: /usr/bin (для отдельных приложений, запускаемых от имени админа: /usr/sbin ).

ускорение ПК

Примеры настройки автозагрузки

Вариант 1

Примечание : в некоторых системах Linux подобная опция в настройках приложения может ничего не дать. (т.е. приложение не будет запускаться при загрузке ОС).

Настройки конкретного приложения

Настройки конкретного приложения / параметры запуска

Вариант 2

Теперь пару слов о панелях управления тех дистрибутивов Linux, которые я рекомендовал.

Linux Mint

Сначала необходимо открыть меню ПУСК/параметры системы и перейти во вкладку "Автозагрузка" .

Параметры системы - автозагрузка (Linux Mint)

Параметры системы - автозагрузка (Linux Mint)

После кликнуть по "плюсику" и выбрать нужное приложение из списка. Это всё. ✌

Добавляем нужно приложение (Linux Mint)

Добавляем нужно приложение (Linux Mint)

Elementary OS

Здесь все делается практически аналогично, как в Linux Mint.

Сначала необходимо открыть параметры системы и перейти во вкладку "Приложения" .

Параметры системы - приложения (Elementary OS)

Параметры системы - приложения (Elementary OS)

После раскрыть меню "Автозапуск" , нажать на "плюс" и выбрать нужное приложение.

Автозапуск — выбор нужного приложения (Elementary OS)

Автозапуск — выбор нужного приложения (Elementary OS)

Теперь приложение для мониторинга будет запускаться при старте Linux

Теперь приложение для мониторинга будет запускаться при старте Linux

Ubuntu

В Ubuntu также есть специальное ПО для решения этой задачи: необходимо перейти во вкладку "Система → Параметры → Запускаемые приложения" .

Ubuntu — добавить программу

Ubuntu — добавить программу

Находим нужное приложение в каталоге

Находим нужное приложение в каталоге

Deepin

Этот дистрибутив (на мой взгляд) в плане простоты работы выигрывает у предыдущих!

Как вам. (так просто даже в Windows не сделаешь!)

Как добавить ярлык на раб. стол или программу в автозагрузку

Как добавить ярлык на раб. стол или программу в автозагрузку

Разумеется, для исключения приложения из автозагрузки — нужно проделать обратную операцию: также кликнуть ПКМ по значку.

Теперь на приложении спец. значок — оно будет стартовать вместе с системой (Deepin)

Теперь на приложении спец. значок — оно будет стартовать вместе с системой (Deepin)

У каждого пользователя есть набор программ, которые он запускает ежедневно. Чтобы избавить себя от необходимости проделывать это вручную, оные приложения можно добавить в автозагрузку. В Windows это можно сделать, закинув ярлык программы в каталог автозагрузки, прописав ее в соответствующем ключе реестра или добавив в Планировщик заданий. А как с этим дела обстоят в Linux? В операционной системе Linux также имеется автозагрузка, но работает она несколько иначе.

За автозагрузку в Linux отвечает специальный процесс, именуемый системой инициализации. Этот процесс запускает все остальные процессы после того, как ядро операционной системы передаст ему дальнейшее управление. Также в Linux имеется несколько уровней или режимов автозагрузки. Например, автозагрузка на уровне ядра позволяет заменить систему инициализации любой другой программой. Есть уровни автозагрузки специально для скриптов (rc.local и Xinitrc) , есть автозагрузка bash , позволяющая автоматически выполнять команды в открытом терминале и есть автозагрузка окружения рабочего стола.

Этот последний уровень для начинающих осваивать Linux пользователей является наиболее удобным. Добавим для примера в автозагрузки Ubuntu браузер Firefox .

Откройте поиск и начинайте вводить «автоматически запускаемые приложения», а когда в списке приложений появится одноименная утилита, запустите ее.

Ubuntu поиск

Добавить

И укажите в открывшемся окошке название добавляемого в автозагрузку приложения и путь к его исполняемому файлу.

Bin

Исполняемые файлы пользовательских приложений в Linux копируются в папку /usr/bin , а если программа запускается с правами администратора, то в папку /usr/sbin . Если вы не нашли в них своей программы, поищите ее в папке /usr/opt , иногда разработчики прописывают в программе этот путь установки.

Добавить программу

Поле «Описание» заполнять необязательно.

Настройки запуска приложений

Всё, жмем «Добавить» и программа окажется в автозагрузке.

Второй способ добавить программу в автозагрузку — создать в папке

/.config/autostart конфигурационный файл desktop . Вот как, к примеру, выглядит содержимое файла автозапуска только что добавленной нами в автозагрузку Firefox.

Autostart

Папка «.config» располагается в каталоге Home и является скрытой, чтобы ее показать, нажмите Ctrl + H . В папке autostart создайте пустой документ.

Пустой документ

Откройте его текстовым редактором и вставьте в него набор команд, указанный на скриншоте.

Набор команд

Это минимальный набор параметров.

В нашем примере в автозагрузку добавляется текстовый редактор leafpad , его название мы указываем в параметрах Name и Exec. Осталось только переименовать файл в name.desktop , где name — название программы.

Файл leafpad

По сути, данный способ равнозначен первому способу, но при этом вы не используете утилиту настройки запуска приложений. Кстати, если вы откроете эту утилиту, то найдете в списке добавленную посредством ручного создания конфигурационного файла программу.

Программы, запускаемые при старте

Как видите, добавлять программы в автозагрузку Linux не так уже и трудно.

Конечно, есть здесь и свои нюансы, Linux вообще очень гибкая система, но для начала этих знаний вам будет вполне достаточно, чтобы автоматически запускать любые пользовательские приложения.

Читайте также: