Скрипт в linux в автозагрузку: Страница не найдена | Losst

Содержание

Как добавить свой скрипт в автозагрузку Linux?

Очень часто администратору linux приходится писать скрипты по выполнению каких либо операций. Обычно такие скрипты включаются в задания по расписанию, но а если нужно запускать скрипт при загрузке системы?

Мы можем добавить его в файл /etc/rc.local, но в таком случае он запуститься последним. А если надо, чтобы он запустился не последним, или нужно, что бы скрипт запустился перед выключением системы, тогда Вам пригодится мой пример:

#!/bin/bash

#

# chkconfig: 35 99 01

# description: Oracle Business Intelligence Publisher

# Get function from functions library

. /etc/init.d/functions

# Start the service XMLP

start() {

        initlog -c «echo -n Starting XMLP server: «

        su xmlp -c /xmlp/start_xmlp.sh

}

stop() {

        su xmlp -c /xmlp/stop_xmlp.sh

}

### main logic ###

case «$1» in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        stop

        start

        ;;

  *)

        echo $»Usage: $0 {start|stop|restart}»

        exit 1

esac

exit 0

Скрипт ложим в каталог /etc/init.d/ у меня скрипт будет называться xmlp, предоставляем права на запуск.

Далее выполняем:

chkconfig —add xmlp

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

service xmlp stop/start/restart

Вторая запись в скрипте означает уровень, порядок запуска и остановки скрипта:

chkconfig: 35 99 01

35 — Означает, что скрипт выполнится на 3ем и 5ом уровне, т.е.:

xmlp 0:off 1:off 2:off 3:on 4:off 5:on 6:off

/etc/rc3.d/S99xmlp — S означает start, т.е. порядок запуска чем больше значение тем позже будет выполнен запуск скрипта.

/etc/rc3.d/K06xmlp -K означает kill, т.е. определяет когда скрипт будет остановлен.

Python скрипт на linux и автозапуск по пути boot



Я сделал сценарий в Python, и он работает без проблем. С тех пор как я добавил конфигурационный файл (я использовал парсер), он перестал начинаться с boot (он есть у меня в файле rc.local с его абсолютным путем).

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

Мне нравится, когда он работает, просто проверяя папку, в которой находится файл сценария.

Я имею в виду:

если мой script.py находится в домашней папке, я бы хотел, чтобы он проверил наличие своего конфигурационного файла в той же папке… Если он находится в /home/user, я бы хотел, чтобы он зарегистрировался в /home/user.

Как я могу добиться этого, имея в виду, что rc.local запускается пользователем root с некоторыми переменными ENV, которые отличаются от моих обычных пользователей?

python bash
Поделиться Источник Pitto     16 января 2013 в 08:39

2 ответа


  • Linux python считывание выходных данных из запущенного сценария python

    У меня есть скрипт python, работающий как сервис в linux (также как автозапуск), и он делает много выходных данных! Как я могу прочитать этот вывод, когда программа уже запущена? Может быть, я мог бы записать все выходные данные в файл, но тогда мне пришлось бы открывать и обновлять файл все…

  • php скрипт не выполняется на linux boot

    Мне нужны некоторые уведомления всякий раз, когда я boot моя машина (Linux). Итак, я создал скрипт php, у него есть некоторая логика, и я хочу видеть вывод скрипта в браузере всякий раз, когда я вхожу в свою машину. Я добавил свой файл php в /etc/rc.local, но мой браузер не открывается после boot….



5

Основывайте путь на переменной __file__ :

import os.path
scriptpath = os.path.abspath(os.path.dirname(__file__))

configfile = os.path.join(scriptpath, configfilename)

Поделиться Martijn Pieters     16 января 2013 в 08:43



1

В качестве альтернативы приведенному выше ответу Мартийна вы можете просто изменить свой файл rc.local, чтобы изменить текущий рабочий каталог на каталог вашего скрипта, а затем запустить его без абсолютного пути. Это не требует от вас изменения самого скрипта Python.

Другими словами, измените свой rc.local с:

python /home/user/your_script.py

к

pushd /home/user
python your_script.py
popd

Поделиться faucamp     16 января 2013 в 09:48


Похожие вопросы:


преобразование / сопоставление ссылочного пути linux без изменения файла?

В настоящее время мой клиент работает над проектом, в котором путь к справочному файлу должен оставаться в формате linux. Например A.ma , referencing objects from —> //linux/project/scene/B.ma…


как работает автозапуск в linux

я узнал, что самозваные функции существуют в системах на основе linux, действительно ли это возможно ! используя программу C, как я могу имплицировать это в программу C, есть ли какая-либо функция в…


Python — как запустить скрипт python в определенном tty, в Linux?

В проекте я должен boot перейти в консольный режим Linux (init 3), а затем запустить скрипт python с использованием библиотеки curses (с консолью UI) в определенном tty. Например, OS загружается в…


Linux python считывание выходных данных из запущенного сценария python

У меня есть скрипт python, работающий как сервис в linux (также как автозапуск), и он делает много выходных данных! Как я могу прочитать этот вывод, когда программа уже запущена? Может быть, я мог…


php скрипт не выполняется на linux boot

Мне нужны некоторые уведомления всякий раз, когда я boot моя машина (Linux). Итак, я создал скрипт php, у него есть некоторая логика, и я хочу видеть вывод скрипта в браузере всякий раз, когда я…


Запустите Скрипт Linux Shell На Boot

У меня есть сценарий Shell, который я хочу запустить на boot. Каждый раз, когда я запускаю устройство, оно запускает сценарий в фоновом режиме. Скрипт содержит цикл while true и должен работать…


android приемник BroadcastReceiver автозапуск на boot до

Мой AndroidManifest.xml содержит: <uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED /> и <receiver android:name=.MyBroadcastReceiver android:enabled=true…


Доступ к файловой системе с Python по boot-up cron

Пожалуйста, рассмотрите следующую проблему: У меня есть скрипт Python, который работает на машине linux (Raspberry pi 3, работает Rasbian Jessie) на boot. Этот скрипт был добавлен в sudo crontab -e…


выполнить скрипт с параметрами на linux boot

Я работаю с Debian на основе Linux . Есть сценарий, который должен быть выполнен на boot. Нашел эти инструкции, описывающие, как он должен быть один . Мое единственное отличие заключается в том, что…


Как запустить скрипт boot на windows EC2?

Мой вопрос заключается в том, как вы запускаете скрипт boot на windows EC2 (аналогично этому вопросу, но для windows, а не для linux) Кроме того, считается ли перезапускаемый экземпляр ‘stopped’ как…

Автозапуск скрипта в CentOS 7 с помощью systemd

главная — Статьи — Linux, FreeBSD

Теги: Linux systemd

Для запуска скрипта при загрузке раньше использовался /etc/rc.d/rc.local. В CentOS 7 в этом файле стоит прямое указание, что это — прошлый день и данный метод оставлен для обратной совместимости. Продвинутые же парни должны создавать свои собственные «сервисы» systemd. Попробуем и мы пойти в ногу со временем.

Задача: запускать скрипт /root/routing.sh при каждой загрузке в CentOS 7 с помощью systemd.

Создаем файл нашей службы:

# touch /etc/systemd/system/routing-settings.service
# chmod 664 /etc/systemd/system/routing-settings.service

с таким содержимым:

[Unit]
Description=Routing Settings Service
After=network.target

[Service]
Type=oneshot
User=root
ExecStart=/root/routing.sh

[Install]
WantedBy=multi-user.target

User=root — запуск от имени root! Указывайте (или не указывайте) того пользователя, от имени которого должен выполняться ваш скрипт. Мой скрипт должен выполняться от root. Я не могу сказать, что это меня радует, т.к. возникает необходимость жестко контролировать размещение скрипта и права доступа к нему.

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

Проверяем:

# systemctl start routing-settings

Если после выполнения скрипта мы увидели ожидаемый результат, то разрешим этот «сервис» для автозапуска:

# systemctl enable routing-settings

Пробуем перезагрузиться. Должно работать.

Посмотрим, когда наша служба была запущена:

# systemctl status routing-settings

В выводе мы увидим, какую команду, когда выполнили и другие подробности.

Полезная информация по теме:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/sect-Virtual_Networking-Dynamically_changing_a_host_physical_machine_or_a_network_bridge_that_is_attached_to_a_virtual_NIC.html

https://wiki.archlinux.org/index.php/Systemd_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29

Авторизуйтесь для добавления комментариев!

Как настроить автозапуск приложений и сервисов в ubuntu

Как добавить приложение в автозагрузку в Ubuntu 14.04 LTS/15.04/16.04 LTS? Если вы задавались этим вопросом, ознакомьтесь с материалом ниже где все по пунктам описано

Многие наверное задумывались как добавить свое приложение в автозагрузку в дистрибутиве Ubuntu 16.04/15.04/15.10/14.10/14.04/13.10/13.04.

Первым делом, что нам нужно чтобы добавить приложение в автозагрузку? Перейдем на боковую панель меню(лаунчер), и выберем первую иконку для открытия шторки в Dash и воспользуемся поиском чтобы найти ярлык приложения — Автоматически запускаемые приложения.

  • Далее запустим приложение — Автоматически запускаемые приложения(startup applications).

  • Чтобы добавить новое приложение в автозагрузку, нажмем на кнопку добавить, далее мы увидим поля(имя, команда и описание) в поле имя мы просто добавляем имя приложения для автозагрузки как пример, я добавил в автозагрузку приложение Cairo-Dock.

Да, именно так, все просто и ничего лишнего:

  • Поле имя — здесь можно добавить либо какое имя с большой или маленькой буквы разницы нет
  • Поле команда — в данном поле нужно написать название программы с маленькой буквы, как пример — cairo-dock
  • Поле описание — в данном поле пишем любое описание приложения, но можно и ничего не писать так как поле не обязательное.

Да
Нет

Статья оказалась полезной для 0 человек

Порядок вывода комментариев:

По умолчанию
Сначала новые
Сначала старые

Источник: https://Blogas.info/autorun-linux

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

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

В этой статье мы поговорим о том, как работает автозагрузка в Ubuntu, какие существуют способы автозагрузки в этой системе и как добавить туда программы.

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

Первым делом нужно сказать, что в Ubuntu существует несколько уровней автозагрузки. Я не буду говорить здесь про systemd и автозагрузку сервисов, так как уже рассматривал это в одной из первых статей. Программу или скрипт можно добавить в автозагрузку такими путями:

  • Утилита «Автоматически запускаемые приложения»;
  • Папка «Автозапуск»;
  • Файл rc.local;
  • Файл Xinitrc;

Мы рассмотрим первые два способа, поскольку два последние более рассчитаны на скрипты, а не программы. Сначала автозагрузка в Ubuntu с помощью стандартной утилиты.

  • Откройте меню системы и наберите «Авто» и откройте программу, которая будет первой в списке, Автоматически запускаемые приложения:
  • Здесь будут перечислены все приложения, которые сейчас запускаются автоматически. Чтобы добавить в автозагрузку ubuntu еще одно приложение, нажмите кнопку «Добавить»:
  • Здесь нужно ввести имя нового пункта, а также команду запуска приложения. Вы можете выбрать приложение в файловой системе, если не помните путь, нажав кнопку «Обзор»:

В команде можно указывать параметры, если это нужно. Еще можно заполнить поле «Описание», но это уже необязательно. Если вам нужна определенная программа из главного меню, но вы не знаете где ее найти и как пишется ее команда, можно посмотреть ее в том же меню. Но для этого нам нужно сначала установить утилиту «Главное меню» из центра приложений:

  1. Дальше запустите утилиту и найдите в ней нужное приложение. Затем нажмите «Свойства»:
  2. Здесь вам нужно обратить внимание на строку «Команда», скопируйте ее и можете использовать для автозагрузки.

Следующий способ — это папка автозагрузки. Она находится по адресу ~/.config/autostart. По сути, это тот же самый способ, только он может выполняться без графического интерфейса. Когда вы настраиваете автозагрузку через приложение, то в этой папке создаются файлы настроек с именем desktop. Вот, например:

Напоминаю, что для того, чтобы посмотреть скрытые файлы нужно нажать сочетание клавиш Ctrl+H. Теперь попытаемся создать новый конфигурационный файл для еще одной программы. Вот таким будет его синтаксис:

[Desktop Entry]
Type=Application
Name=имя_нового_пункта
Exec=команда
Icon=полный_путь_к_иконке
Comment=комментарий
X-GNOME-Autostart-enabled=true

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

vi ~/.config/autostart/vlc.desktop

  • [Desktop Entry]
    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 и сейчас выглядят практически одинаково.

Если у вас остались, вопросы, спрашивайте в х!

(8

Источник: https://losst.ru/avtozagruzka-v-ubuntu

Управление автозагрузкой сервисов и скриптов в Linux

В данной статье мы рассмотрим основы управлением автозагрузкой сервисов и скриптов в 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

  1. Список unit-файлов можно получить командой:
  2. systemctl list-unit-files
  3. Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).
  4. Чтобы вывести список активных сервисов и их состояние, выполните:
  5. # systemctl list-units -t service

Следующая команда выведет список юнитов, которые загрузил или пытался загрузить systemd. Так как после запуска некоторые юниты могут стать неактивными, с помощью флага —all вы получите полный список.

# systemctl list-units —all

UNIT LOAD ACTIVE SUB DESCRIPTION
proc-sys-fs-binfmt_misc.automount loaded active waiting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
● exim.service not-found inactive dead exim.service
firewalld.service loaded active running firewalld — dynamic firewall daemon
[email protected] loaded active running Getty on tty1
● ip6tables.service not-found inactive dead ip6tables.service
● ipset.service not-found inactive dead ipset.service
● iptables.service not-found inactive dead iptables.service
Bring up/down networking
● NetworkManager-wait-online.service not-found inactive dead

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

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

  • —state — используется для определения состояния демона Load, Active, Sub
  • —type — позволяет фильтровать юниты по их типу.
  • Примеры:
  • systemctl list-units —all —state=active — выведет список только активных юнитов
  • systemctl list-units —type=service — выведет список юнитов, которые являются сервисом.

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

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

  1. systemctl enable nginx.service – команда добавит в автозагрузку веб-сервер nginx
  2. Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.
  3. # systemctl enable nginx.service

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service

  • Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:
  • systemctl status nginx.service
  • При выводе нужно обратить внимание на строку:

Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)

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

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

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

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

  2. systemctl disable нужный_сервис
  3. Например, чтобы удалить из автозагрузки nginx, выполните:
  4. # systemctl disable nginx.service

Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.

service

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

# systemctl is-enabled sshd

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

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

Created symlink from /etc/systemd/system/nginx.service to /dev/null.

# service nginx restart

Redirecting to /bin/systemctl restart nginx.service
Failed to restart nginx.service: Unit is masked.

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

# systemctl unmask nginx.service

Removed symlink /etc/systemd/system/nginx.service.

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

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

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

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

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

  1. Начнем с того, что файл /etc/rc.local должен быть исполняемым:
  2. chmod +x /etc/rc.local
  3. Rc.local должен быть добавлен в автозагрузку systemd:
  4. systemctl enable rc-local
  5. И на примере того же nginx, мы можем добавить в rc.local команду запуска веб-сервера:
  6. service nginx start

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

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

sh /root/test.sh

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

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

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

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

touch /etc/systemd/system/test-script.servicechmod 664 /etc/systemd/system/test-script.service

  • nano /etc/systemd/system/test-script.service
  • Содержимое файла будет следующее:

[Unit]
Description=Template Settings Service
After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/root/test.sh
[Install]
WantedBy=multi-user.target

  1. Основные параметры:
  2. User – пользователь под которым будет запускаться демон
  3. Type=oneshot — процесс будет завершен до запуска дальнейших юнитов
  4. Проверяем и перезапускаем:# systemctl daemon-reload# systemctl start test-script.service
  5. # systemctl status test-script.service

● test-script.service — Test
Loaded: loaded (/etc/systemd/system/test-script.service; disabled; vendor preset: disabled)
Active: active (running)

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

# systemctl enable test-script.service

Created symlink from /etc/systemd/system/multi-user.target.wants/test-script.service to /etc/systemd/system/test-script.service.

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

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

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

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

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

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

# crontab -l

* * * * * /root/test.sh

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

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

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

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

  • /cron.daily – выполнение скрипта ежедневно
  • /cron.hourly – выполнение скрипта ежечасно
  • /cron.monthly — выполнение скрипта ежемесячно
  • /cron.weekly — выполнение скрипта еженедельно

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

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

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

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

bash_profile.

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

service nginx restart

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

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

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

cd /var/mc

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

Источник: http://winitpro.ru/index.php/2019/10/11/avtozagruzka-servisov-i-skriptov-v-linux/

Ubuntu автозагрузка: как убрать и добавить программу в автозапуск

В Убунту есть 2 основных уровня автозапуска — в системе инициализации systemd и в рабочем окружении. Для пользовательского софта автозагрузка в Ubuntu может быть настроена в удобной графической утилите. Добавить в автозапуск можно программу или собственный скрипт.

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

Актуальная Ubuntu 18.04 по умолчанию в качестве рабочего окружения использует GnomeShell. Для настройки автозапуска в этой версии ОС нужно:

  1. Нажать на кнопку «Обзор» в левом верхнем углу экрана.
  2. Начать вводить в строку поиска «Автоматически запускаемые приложения» и запустить найденную утилиту.
  3. Далее кликнуть по кнопке «Добавить», чтобы внести желаемое приложение в автозагрузку.
  4. Заполнить поля «Имя» (название программы — как удобно) и «Команда» (та, которую вводят в консоли для запуска этого софта). Поле «описание» необязательное, сюда разрешено вписать любой комментарий. Пример добавления Transmission в автозагрузку в Линукс показан на скриншоте:
  5. Нажать кнопку «Добавить».

Совет! Чтобы не ошибиться с правильностью команды, нужно установить утилиту «Главное меню» из UbuntuSoftwareCenter.

В ней выбрать интересующий пункт и открыть его свойства. Правильная команда копируется из одноименной строки.

Запуск приложений в Ubuntu, присутствующих в списке и помеченных галочкой, будет происходить при каждом старте ОС.

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

В предыдущих версиях операционной системы с графической оболочкой Unity утилита для настройки автозагрузки также ищется поиском по меню Dash или открывается с помощью команды в терминале:

gnome-session-properties.

Как добавить скрипт в автозагрузку Ubuntu

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

  1. Сделать скрипт исполняемым с помощью команды:

    sudochmodugo+x /home/user/script.sh

    (где user — имя пользователя, а script — название скрипта, но путь до вашего файла .sh может отличаться: его нужно прописать полностью, иначе скрипт не запустится).

  2. Открыть «Автоматически запускаемые приложения» и нажать «Добавить».
  3. Ввести имя скрипта, а в качестве команды — полное название с путем до файла, например, /home/user/script.sh.
  4. Кликнуть по «Добавить».

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

  1. Открыть терминал и выполнить команду:

    sudonano /etc/rc.local

  2. Над строкой exit 0 прописать название и путь до скрипта.
  3. Сохранить изменение с помощью сочетания клавиш Ctrl+O, подтвердить клавишей Enter.

Этот способ подойдет и для автозагрузки на UbuntuServer, где нет графики.

Отсрочка автозапуска программ в Ubuntu

Если программ в автозагрузке Убунту очень много, их необходимо подгружать в определенном порядке или запускать спустя какое-то время после загрузки системы — поможет функция отсрочки. Для ее активации используется unix-утилита sleep. Воспользоваться возможностями этого инструмента можно в уже знакомой программе «Автоматически запускаемые приложения». Для этого нужно:

  1. Открыть окно параметров запускаемых приложений.
  2. Выделить курсором программу, автозапуск которой необходимо отсрочить, и воспользоваться кнопкой «Изменить».
  3. В строке «Команда» перед имеющеюся записью внести:

    sleep 120,

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

В приведенном примере отложенной автозагрузки программ в 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 практичнее в повседневных задачах.

Источник: https://iwsm.ru/operatsionnye-sistemy/linux/avtozagruzka-v-ubuntu

Автозагрузка сервисов в Linux [RTFM.WIKI]

linux:autostart

Вывести список всех сервисов

# systemctl list-unit-files —type=service

Проверить статус httpd

# systemctl status httpd

Добавить сервис в автозагрузку (аналог chkconfig on)

# systemctl enable httpd

Убрать сервис из автозагрузки

# systemctl disable httpd

Проверить добавлен ли httpd в автозагрузку

# systemctl is-enabled httpd

Проверить какие сервисы не смогли запуститься при старте системы

# systemctl —failed
UNIT LOAD ACTIVE SUB DESCRIPTION
ip6tables.service loaded failed failed IPv6 firewall with ip6tables

LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.

Более подробный список доступных команд

Ниже представлены основные команды systemctl:

Команда Описание
systemctl start name.service запуск сервиса
systemctl stop name.service остановка сервиса
systemctl restart name.service перезапуск сервиса
systemctl try-restart name.service перезапуск сервиса только, если он запущен
systemctl reload name.service перезагрузка конфигурации сервиса
systemctl status name.service проверка, запущен ли сервис с детальным выводом состояния сервиса
systemctl is-active name.service проверка, запущен ли сервис с простым ответом: active или inactive
systemctl list-units –type service –all отображение статуса всех сервисов
systemctl enable name.service активирует сервис (позволяет стартовать во время запуска системы)
systemctl disable name.service деактивирует сервис
systemctl reenable name.service деактивирует сервис и сразу активирует его
systemctl is–enabled name.service проверяет, активирован ли сервис
systemctl list-unit-files –type service отображает все сервисы и проверяет, какие из них активированы
systemctl mask name.service заменяет файл сервиса симлинком на /dev/null, делая юнит недоступным для systemd
systemctl unmask name.service возвращает файл сервиса, делая юнит доступным для systemd

Вывести список всех сервисов

# chkconfig —list
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ipset 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off
munin-node 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
portreserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
vnstat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
xinetd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

Показать информацию по сервису httpd

# chkconfig —list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Добавить сервис в автозагрузку

# chkconfig httpd on
или
# chkconfig —level 345 httpd on

Чтобы отключить

# chkconfig httpd off

Также можно воспользоваться утилитой ntsysv

# yum install ntsysv
# ntsysv —level 345

Вывести список сервисов и их состояние

# service —status-all
[ + ] acpid
[ — ] anacron
[ + ] atd
[ + ] avahi-daemon
[ — ] bootlogs
[ ? ] bootmisc.sh
[ ? ] checkfs.sh
[ ? ] checkroot-bootclean.sh
[ — ] checkroot.sh
[ — ] console-setup
[ + ] cron
[ + ] dbus
[ + ] exim4
[ ? ] hdparm
[ — ] hostname.sh
[ ? ] hwclock.sh
[ — ] kbd
[ — ] keyboard-setup
[ — ] keymap.sh
[ ? ] killprocs
[ ? ] kmod
[ — ] motd
[ ? ] mountall-bootclean.sh
[ ? ] mountall.sh
[ ? ] mountdevsubfs.sh
[ ? ] mountkernfs.sh
[ ? ] mountnfs-bootclean.sh
[ ? ] mountnfs.sh
[ ? ] mtab.sh
[ ? ] mysql
[ ? ] networking
[ + ] nginx
[ + ] php5-fpm
[ — ] procps
[ ? ] rc.local
[ — ] rmnologin
[ — ] rsync
[ + ] rsyslog
[ ? ] sendsigs
[ + ] ssh
[ — ] sudo
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ — ] urandom

  • [ + ] — сервис работает в настоящее время [ — ] — сервис в настоящее время не работает
  • [ ? ] — вывод статуса для сервиса не предусмотрен
  • Перевод man доступен здесь
  • Добавить apache2 в автозагрузку

# update-rc.d apache2 defaults
update-rc.d: using dependency based boot sequencing

Удалить apache2 из автозагрузки

# update-rc.d -f apache2 remove
update-rc.d: using dependency based boot sequencing

  1. Чуть подробнее.
  2. В Linux у нас определенное количество уровней выполнения (runlevel)
  3. К примеру MySQL и Apache у нас загружаются на 3 уровне.
  4. И скорее всего вы хотите, чтобы MySQL стартовал перед Apache, а при перезагрузке сначала должен быть остановлен Apache, а потом MySQL.
  5. Для этого нам нужно установить start (S) и kill (K) приоритеты.
  6. Для MySQL нужно поставить приоритет на стадии загрузки, а для Apache приоритет на shutdown
    eboot’е.

При старте (S), чем меньше значение приоритета, тем раньше сервис будет запущен.
Сервис со start приоритетом равным 10 будет запущен раньше сервиса с приоритетом равным 20.

При остановке (K) всё наоборот. Сервис с большим приоритетом будет остановлен раньше, чем сервис с меньшим приоритетом.

  • Небольшой пример.
  • Устанавливаем приоритет start и kill сервису Apache
  • Синтаксис следующий

update-rc.d apache2 defaults [START] [KILL]

Итак, сделаем так, чтобы сначала стартовал MySQL, а потом Apache. А при рестарте сначала останавливался Apache, а потом MySQL.

# update-rc.d apache2 defaults 90 90
# update-rc.d mysql defaults 10 10

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

# update-rc.d apache2 defaults 90
# update-rc.d mysql defaults 10
# apt-get install sysv-rc-conf
# sysv-rc-conf

via https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/ru

Команда sysvinit Команда systemd Комментарий
service frobozz startsystemctl start frobozz.serviceИспользуется для разового запуска службы.
service frobozz stopsystemctl stop frobozz.serviceИспользуется для разовой остановки службы.
service frobozz restartsystemctl restart frobozz.serviceИспользуется для разового перезапуска службы.
service frobozz reloadsystemctl reload frobozz.serviceЕсли такая возможность поддерживается службой, перезагружает конфигурационный файл, не прерывая процесса.
service frobozz condrestartsystemctl condrestart frobozz.serviceПерезапускает службу, если она запущена.
service frobozz statussystemctl status frobozz.serviceСообщает, запущена ли служба.
ls /etc/rc.d/init.d/ls /lib/systemd/system/*.service /etc/systemd/system/*.serviceИспользуется для получения списка служб, которые могут быть запущены или остановлены.
chkconfig frobozz onsystemctl enable frobozz.serviceВключает запуск службы после перезагрузки.
chkconfig frobozz offsystemctl disable frobozz.serviceОтключает запуск службы после перезагрузки.
chkconfig frobozzsystemctl is-enabled frobozz.serviceИспользуется для проверки, будет ли служба запущена после перезагрузки.
chkconfig frobozz –listls /etc/systemd/system/*.wants/frobozz.serviceВыдает список уровней загрузки(целей), при которых данная служба будет запущена автоматически.
chkconfig frobozz –addНе используется, нет аналога.

Бонус к бонусу — шпаргалка в pdf, svg, dvi, tex | PDF версия, зеркало rtfm.wiki

linux/autostart.txt · Последние изменения: 2017/03/08 00:13 (внешнее изменение)

Источник: https://rtfm.wiki/linux/autostart

Автозагрузка приложений при запуске Ubuntu

Что такое демон? И чем демоны отличаются от сервисов services (служб, процессов)? Ответ — ничем не отличаются.

Демон (Daemon) — UNIX-служба или просто программа, работающая в фоновом режиме без прямого общения с пользователем. Демоны обычно запускаются во время загрузки системы. В техническом смысле демоном считается процесс, который не имеет управляющего терминала. Чаще всего (но не обязательно) предком демона является init — корневой процесс UNIX.

Исторически, демоны пошли из UNIX-подобных систем. А в ОС семейства Windows — это так называемые службы (Windows services), те самые, которые мы видим в диспетчере задач Windows. Иногда их неофициально называют демонами. Впрочем, и наоборот тоже.

Программа rcconf позволяет настроить запуск демонов: демоны, которые должны стартовать при загрузке системы и демоны, которые должны сидеть и ждать. Это самый простой способ добавлять/удалять службы с автозапуска в Linux.

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

  • Необходимые для загрузки программы нужно отметить «звёздочкой» с помощью пробела.
  • Установка и запуск rcconf:
  • sudo apt-get install rcconf
  • sudo rcconf
  • В некоторых системах при запуске rcconf имела место ошибка

rcconf needs dialog or whiptail.

Разработчики не указали в зависимостях не одну из библиотек, чтобы пользователь сам мог выбрать подходящую. Если у вас возникла такая ошибка, ставим любую из библиотек dialog или whiptail:

sudo apt-get install dialog

Запускаем rcconf

sudo rcconf

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

Как запускать и останавливать службы в Linux?

Представлены 2 самых простых и правильных варианта запуска и остановки служб в linux. Можно использовать любой из них, какой больше нравится. Рассмотрим на примере демона memcached. Естественно, вместо memached может быть имя любой другой службы:

  1. Вариант 1 запуска memcached:
  2. sudo service memcached start
  3. Вариант 2 запуска memcached:
  4. sudo /etc/init.d/memcached start

Для остановки демонов используются те же самые команды, только вместо start пишем stop. Для большинства демонов применимы команды: start, stop, restart.

Источник: https://jeka.by/post/1017/autoload-ubuntu-rcconf/

Ubuntu, CentOS: Автозагрузка — Убрать/Добавить Сервис в Linux

  • Очень часто возникает необходимость убрать или добавить какой-то сервис в автозагрузку в Linux.
  • Существую разные init системы, но в Ubuntu и CentOS самыми распространенными являются SysV, Upstart и systemd.
  • В зависимости от дистрибутива Linux, поведение сервиса во время загрузки системы может быть настроено с помощью команд systemctl или chkconfig.
  • В этом руководстве показано как убрать или добавить сервис в автозагрузку в самых популярных Linux дистрибутивах — Ubuntu и CentOS.

Дельный Совет: Хотите стать DevOps инженером? Тогда вы обязаны знать Git! Это статья поможет реально быстро освоить основы Git! Читать далее →

Ubuntu-18.04

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

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

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

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

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

$ systemctl is-enabled SERVICE

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

$ sudo systemctl disable SERVICE

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

$ sudo systemctl enable SERVICE

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.

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

$ initctl show-config SERVICE

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

$ echo manual | sudo tee /etc/init/SERVICE.override

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

$ sudo rm /etc/init/SERVICE.override

CentOS-7

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

  1. В CentOS-7, он заменяет Upstart в качестве init системы по умолчанию.
  2. systemd поставляется с командной утилитой systemctl, которая является центральной управляющей программной для systemd, которая, помимо всего прочего, умеет включать и выключать сервисы во время загрузки системы.
  3. Дельный Совет: Узнайте как выключить SELinux временно или на постоянной основе! Читать далее →
  4. Узнать стоит ли сервис в автозагрузке:

$ systemctl is-enabled SERVICE

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

$ systemctl disable SERVICE

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

$ systemctl enable SERVICE

CentOS-6

Дельный Совет: Узнайте как выключить iptables в CentOS-6! Читать далее →

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

$ chkconfig —list | grep SERVICE

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

$ chkconfig SERVICE off

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

$ chkconfig SERVICE on

Источник: https://www.shellhacks.com/ru/ubuntu-centos-enable-disable-service-autostart-linux/

LiveStreet

Целью данной статьи является ознакомление с принципами автозагрузки в операционной системе Ubuntu на примере Ubuntu Server 10.

04 LTS, а также демонстрация настройки автозагрузки виртуальной машины, работающей под управлением VirtualBox, и корректное завершение работы последней в автоматическом режиме при выключении Ubuntu Server.

Внимание! Описанный ниже пример не может быть применим к настройке автозагрузки графических приложений для конкретного пользователя системы в настольных версиях Ubuntu. Для этого используйте пункт «Запускаемые приложения» из главного меню Ubuntu.

Что такое автозагрузка?

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

Организация автозагрузки в Ubuntu Server.

Разумеется, для того, чтобы правильно запустить/остановить сервис, необходимо описать сценарий с командами для запуска/остановки. Взгляните на содержимое каталога /etc/init.d: он содержит скрипты, которые управляют загрузками/остановками сервисов на вашей машине. Итак, первый, но не последний пункт успешной настройки — это наличие скрипта в /etc/init.d. В скрипте не описывается, когда должен выполняться тот или иной сценарий. Он лишь может принимать параметры start, stop, restart и так далее. Откуда же Ubuntu знает, когда необходимо вызвать скрипт? Ответ кроется в каталогах /etc/rcN.d, где N – это цифра от 0 до 6. В этих каталогах хранятся символические ссылки на скрипты из /etc/init.d. Рассмотрим, что означает каждый каталог, и всё сразу станет понятно: — rc0.d – выполнение скрипта при выключении системы; — rc1.d – выполнение скрипта при запуске системы в однопользовательском режиме; — rc2.d – выполнение скрипта при запуске системы в многопользовательском режиме; — rc3.d – rc5.d – зарезервировано; — rc6.d – выполнение скрипта при перезагрузке системы. Например, если происходит перезагрузка, то будут выполнены все скрипты из каталога /etc/rc6.d, при выключении — из /etc/rc0.d и так далее. Цифра в названии каталога называется уровнем запуска. То есть каталог /etc/rc0.d будет называться нулевым уровнем запуска и так далее. Есть еще один немаловажный момент, который необходимо знать — это очередность выполнения скриптов из каталогов rcN.d. Ведь для правильной организации запуска/остановки работы Ubuntu может потребоваться запускать/останавливать сервисы в определенном порядке. Этот момент решается специальным именованием файлов в каталогах уровней запуска. Файлы имеют следующие имена: [S|K]NN[имя], где [S|K] — это один символ («S» означает, что скрипт запускает сервис, «K» – останавливает), NN – порядковый номер, [имя] – имя файла. Символ «S» или «K» самостоятельно выбирать не придется, так как все скрипты в каталогах rc1.d-rc5.d должны начинаться с символа «S», а в каталогах rc0.d и rc6.d – с символа «K». Число «NN» определяет очередность запуска скриптов, который производится от меньшего к большему. Чем меньше число у скрипта для запуска, тем раньше он будет запущен при старте системы; чем больше число у скрипта остановки сервиса, тем позже он будет выполнен.

При необходимости запуска какой-либо службы или приложения до или после конкретного существующего сервиса просто подсмотрите его порядковый номер в соответствующей директории rcN.d и учитывайте при выборе порядкового номера для своего скрипта.

Ну что ж, где хранить скрипты и как их называть понятно, а вот как его написать?

В каталоге /etc/init.d находится пример скрипта для управления запуском/остановкой сервисов. Это файл /etc/init.d/skeleton, а в примере ниже он будет упрощен. Для создания нового скрипта необходимо сделать копию примера и отредактировать его под свои нужды. Воспользуемся следующей командой: sudo cp /etc/init.d/skeleton /etc/init.d/myscript && vi /etc/init.d/myscript

При создании нового скрипта не забывайте давать ему права на выполнение. Чтобы добавить права на выполнение скрипту, используйте команду sudo chmod +x /etc/init.d/myscript

Скрипт готов. Что дальше?

В некоторых источниках встречаются рекомендации по созданию символических ссылок вручную при помощи команды ln, не смотря на существование специальных утилит. Перед добавлением скрипта утилита проверяет его на валидность, а команда ln создаст ссылку даже при наличие ошибок. Лучше отдать предпочтение специализированным утилитам, таким как update-rc.d, которая поставляется в комплекте с Ubuntu. С её помощью можно добавить новый скрипт в любой уровень загрузки, удалить существующий и так далее. Вот пример использования:sudo update-rc.d myscript start 99 2 3 4 5 . stop 01 0 1 6 . Эта команда добавит новый скрипт «myscript» во все уровни загрузки. Будет выполнен запуск сервиса на уровнях со 2 по 5 с приоритетом 99 (в последнюю очередь) и остановка сервиса на 0, 1 и 6 уровнях с приоритетом 01 (самым первым). Чтобы удалить скрипт из автозагрузки, воспользуйтесь командой:sudo update-rc.d -f myscript remove

Рассмотрим пример настройки автозагрузки.

Задача:

Источник: http://open-life.org/blog/1862.html

ARMBIAN Linux Ubuntu 16.04 помещаем скрипты в автозапуск

Мы написали скрипт управления Умным Домом для Orange Pi. Теперь необходимо этот скрипт поставить в очередь автозагрузки. Для примера, настроим автозапуск скрипта, управляющего светодиодами на плате Orange Pi PC2.

Создайте в папке /usr/local/sbin скрипт cputled следующего содержания:

#!/bin/bash
ledr="orangepi:red:status"
ledg="orangepi:green:pwr"

Y=10
while [ "$Y" != "0" ]; do
  echo 1 > /sys/class/leds/$ledg/brightness
  echo 0 > /sys/class/leds/$ledr/brightness
  sleep 0.4
  echo 0 > /sys/class/leds/$ledg/brightness
  echo 1 > /sys/class/leds/$ledr/brightness
  sleep 0.4
  Y=`expr $Y - 1`
done

while true
do
  temp=`cat /sys/class/thermal/thermal_zone0/temp`
  echo 0 > /sys/class/leds/$ledg/brightness
  echo 0 > /sys/class/leds/$ledr/brightness
  if [[ $temp -gt 40000 ]]; then
      echo 1 > /sys/class/leds/$ledg/brightness
  fi
  if [[ $temp -gt 55000 ]]; then
      echo 1 > /sys/class/leds/$ledr/brightness
      echo 0 > /sys/class/leds/$ledg/brightness
  fi
  if [[ $temp -gt 65000 ]]; then
      echo 1 > /sys/class/leds/$ledg/brightness
  fi
#  clear
#  echo "CPU t="`expr $temp / 1000`
  sleep 1
done

Этот скрипт будет автоматически загружаться при старте системы Linux Ubuntu и с помощью двух светодиодов на плате Orange Pi PC 2 информировать нас о температуре процессора. Скрипт дает нам информацию о четырех диапазонах температур:

  • Температура ниже 40 Cº – светодиоды не горят
  • Температура в диапазоне от 40 Cº до 55 Cº – горит зеленый светодиод
  • Температура в диапазоне от 55 Cº до 65 Cº – горит красный светодиод
  • Температура выше 65 Cº – горят оба светодиода

Кроме того, скрипт /usr/local/sbin/cputled информирует о том что он успешно загружен перемигиванием красного и зеленого светодиодов в течении 8 секунд. Если этот скрипт будет запущен на на Уровне 3 автозапуска служб Linux, то по миганию светодиодов мы можем определить что Ubuntu сервер загружен и готов к работе.

Создайте в папке /etc/init.d скрипт cputled следующего содержания:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          cputled
# Required-Start:    $network
# Required-Stop:
# Default-Start:     3
# Default-Stop:      0 1 6
# Short-Description: CPU overheating flashing on-Board LEDs
### END INIT INFO

# Source function library
# /etc/init.d/cputled

start() {
  /usr/local/sbin/cputled &
  echo
}

stop() {
  echo 1 > /sys/class/leds/orangepi:green:pwr/brightness
  pkill cputled
  echo
}

case "$1" in
   start)
         start
         ;;
    stop)
         stop
         ;;
    *)
         echo $"Usage: $0 {start|stop}"
         exit 1
esac

exit 0

Этот скрипт поможет нам запускать и останавливать предыдущий скрипт.

Запустим скрипт измерения температуры процессора на плате Orange Pi вручную:

systemctl daemon-reload
service cputled start

Остановим скрипт измерения температуры процессора на плате Orange Pi вручную:

service cputled stop

Поместим скрипт измерения температуры процессора на плате Orange Pi в автозагрузку:

update-rc.d cputled defaults

Перезагрузим микрокомпьютер Orange Pi:

reboot

Добавление команды в автозагрузку linux. Настройка автозапуска в Ubuntu. Добавление программ в автозагрузку в Linux

А главное, полностью бесплатная операционная система, построенная на ядре Linux . Поэтому всё больше обладателей компьютеров становятся её пользователями. Если в их число попали и вы, то вам стоит, нет, не научиться — учиться там нечему — всего лишь понять и освоить основы управления. Например, как настроить автозапуск приложений и сервисов в Ubuntu.

Автозагрузка в Ubuntu — такой же процесс, как и на других ОС. Вы, должно быть, помните и представляете, как на Windows при включении ПК сразу же запускались Skype , uTorrent и ещё ряд программ. На Убунту есть несколько программ, которые аналогичным образом включаются вместе с компьютером. Их список можно изменить, как вам удобно: удалить лишние или добавить ещё несколько.

Добавление процессов

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


Добавлять таким образом можно не только утилиты, но и просто сервисы. Только в верхней строчке нужно выбрать подходящий тип, если он есть, а также вписать нужную команду. Главное — знать её.

Отсрочка

В Убунту есть также прекрасная возможность делать отсрочку включения — прямо как на современных духовых шкафах или мультиварках. Она делается с помощью введения небольшого дополнения к тексту команды. Которое выглядит следующим образом: «sleep 20;» (без кавычек). Вместо 20 можно вписать любое число, которое будет означать количество секунд, которые процесс «спит» перед тем, как запуститься. Таким образом вы можете дать системе время полностью загрузиться, после чего уже начнут включаться определённые сервисы или программы.

Удаление

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

  1. Снова заходим в утилиту управления автозагрузкой.
  2. Находим те процессы, которые нам не нужны.
  3. Выделяем их, жмём «Удалить».

Теперь лишние процессы будут убраны из автозапуска Ubuntu. Лучше иметь там только самое необходимое.

Стоит понимать, что если добавить много приложений в автозагрузку Ubuntu, ОС будет загружаться гораздо медленнее . Поэтому лучше не перебарщивайте и правильно регулируйте настройки автоматического запуска. Функция действительно очень удобная и вместе с отсрочкой запуска даёт хороший инструмент для автоматического регулирования действий системы.

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

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

Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /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 сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл ~/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:

exec путь_к_скрипту &

Если файла ~/.xinitrc еще не существует, то его нужно создать:

cp /etc/X11/xinit/xinitrc ~/.xinitrc

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

exec /usr/bin/firefox &

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

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

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

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

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

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

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

Похожие записи:


Выпуск WordPress 5.3 улучшает и расширяет представленный в WordPress 5.0 редактор блоков новым блоком, более интуитивным взаимодействием и улучшенной доступностью. Новые функции в редакторе […]

После девяти месяцев разработки доступен мультимедиа-пакет FFmpeg 4.2, включающий набор приложений и коллекцию библиотек для операций над различными мультимедиа-форматами (запись, преобразование и […]

  • Новые функции в Linux Mint 19.2 Cinnamon

    Linux Mint 19.2 является выпуском с долгосрочной поддержкой, который будет поддерживаться до 2023 года. Он поставляется с обновленным программным обеспечением и содержит доработки и множество новых […]

  • Вышел дистрибутив Linux Mint 19.2

    Представлен релиз дистрибутива Linux Mint 19.2, второго обновления ветки Linux Mint 19.x, формируемой на пакетной базе Ubuntu 18.04 LTS и поддерживаемой до 2023 года. Дистрибутив полностью совместим […]

  • Доступны новые сервисные релизы BIND, которые содержат исправления ошибок и улучшения функций. Новые выпуски могут быть скачано со страницы загрузок на сайте разработчика: […]

    Exim — агент передачи сообщений (MTA), разработанный в Кембриджском университете для использования в системах Unix, подключенных к Интернету. Он находится в свободном доступе в соответствии с […]

    После почти двух лет разработки представлен релиз ZFS on Linux 0.8.0, реализации файловой системы ZFS, оформленной в виде модуля для ядра Linux. Работа модуля проверена с ядрами Linux c 2.6.32 по […]

  • В WordPress 5.1.1 устранена уязвимость, позволяющая получить контроль над сайтом
  • Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, завершил формирование RFC для протокола ACME (Automatic Certificate Management Environment) […]

    Некоммерческий удостоверяющий центр Let’s Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, подвёл итоги прошедшего года и рассказал о планах на 2019 год. […]

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

    В этой статье мы рассмотрим как работает автозагрузка 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 программа называется «Запускаемые автоматически приложения» . Вы можете запустить ее из главного меню системы:

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

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

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

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

    Как установить в автозапуск python-скрипт используя systemd – Блог админа

    Иногда требуется какой-то скрипт или программу запускать как системный сервис. Это можно легко провернуть, если в вашем дистрибутиве используется система инициализации и управления демонами — systemd.

    Для примера, я создам простейший python-скрипт который будет слушать 9988 порт и добавлю его в автозагрузку при старте операционной системы.

    1. Простой python-scrypt

    sudo nano /usr/bin/dummy_service.py

    Код скрипта:

    #!/usr/bin/python3
     
    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(("localhost", 9988))
    s.listen(1)
     
    while True:
        conn, addr = s.accept()
        data = conn.recv(1024)
        conn.close()
        my_function_that_handles_data(data)

    2. Создание файла сервиса.

    Теперь создадим файл сервиса для с помощью которого расскажем systemd что нам требуется. Файл должен иметь расширение .service и находиться в директории /lib/systemd/system/

    sudo nano /lib/systemd/system/dummy.service

    Добавим информацию о нашем сервисе (можете изменить местоположение скрипта и описание сервиса):

    [Unit]
    Description=Dummy Service
    After=multi-user.target
    [email protected]
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py
    StandardInput=tty-force
    
    [Install]
    WantedBy=multi-user.target

    Мне кажется из содержимого всё и так понятно — какая строка и за что отвечает.

    3. Включение нового добавленного сервиса.

    Вы добавили, наконец-то, ваш сервис в систему. теперь необходимо перезапустить демон systemctl чтобы он прочел новый файл. Каждый раз как вы вносите изменения в .service файлы вам нужно перезапустить демон.

    sudo systemctl daemon-reload

    Теперь включим запуск сервиса при загрузке системы, и запустим сам сервис.

    sudo systemctl enable dummy.service
    sudo systemctl start  dummy.service

    4. Запуск/Остановка/Статус сервиса

    В конце проверим статус нашего нового сервиса:

    sudo systemctl status dummy.service

    Проверим что наш python-скрипт слушает нужный нам порт:

    sudo lsof -i | grep 9988

    Команды для запуска, остановки и перезапуска сервиса:

    sudo systemctl stop dummy.service          #Для остановки сервиса 
    sudo systemctl start dummy.service         #Для запуска сервиса
    sudo systemctl restart dummy.service       #Для перезапуска сервиса

     

    raspbian — Выполнить скрипт при запуске

    Автозапуск приложений xorg

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

    В качестве альтернативы вы можете настроить таргетинг на конкретную среду рабочего стола, как описано на https://wiki.archlinux.org/index.php/autostarting.

    Запуск сценария как службы systemd

    Если ваш сценарий соответствует описанию демона или «службы», и ваша система работает под управлением systemd, что характерно для raspbian и большинства современных Linux, то вы можете настроить свой сценарий для работы в качестве службы systemd — это обеспечивает детальный контроль. в течение жизненного цикла и среды выполнения, а также предварительные условия для (повторного) запуска сценария, такие как запуск и работа сети.Также можно настроить перезапуск службы в случае сбоя ( Restart = всегда , а задержка между перезапусками, например, RestartSec = 10 ).

    Для общесистемного использования создайте файл модуля systemd в каталоге / etc / systemd / system , например с vim /etc/systemd/system/autossh.service :

      [Единица]
    Описание = Демон поддержки активности Autossh
    ## убедитесь, что мы запускаем службу только после того, как сеть заработала
    Хочет = network-online.target
    После = сеть.цель
    
    [Служба]
    ## используйте 'Type = forking', если сама служба работает в фоновом режиме
    ## другие значения: Type = simple (по умолчанию) и Type = oneshot
    Тип = разветвление
    ## здесь мы можем установить пользовательские переменные среды
    Среда = AUTOSSH_GATETIME = 0
    Среда = AUTOSSH_PORT = 0
    ExecStart = / usr / local / bin / ssh-keep-alive.sh
    ExecStop = / usr / bin / killall -9 autossh
    ### ПРИМЕЧАНИЕ: у вас может быть несколько строк `ExecStop`
    ExecStop = / usr / bin / killall ssh
    # не используйте none, если вашему скрипту нужен доступ к пользовательским файлам
    # (если пользователь не установлен, служба будет работать как root)
    # Пользователь = никто
    
    # Полезно при отладке; удалите его, когда служба заработает
    StandardOutput = консоль
    
    [Установить]
    WantedBy = многопользовательский.цель
      

    См. Также:

    Теперь мы готовы протестировать сервис:

      systemctl start autossh
      

    Проверка статуса услуги:

      systemctl status autossh
      

    Остановка службы:

      systemctl stop autossh
      

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

      systemctl включить autossh
      

    ПРИМЕЧАНИЕ. В целях безопасности systemd будет запускать сценарий в ограниченной среде, аналогично тому, как запускаются сценарии crontab , поэтому не делайте никаких предположений о ранее существовавших системных переменных.Используйте ключи Environment , если вашему сценарию нужно определить определенные переменные. Добавление set -x вверху вашего сценария bash и последующий запуск systemctl status my_service может помочь определить, почему ваш сценарий не работает. Как правило, всегда используйте абсолютные пути для всего, включая echo и cat , или явно определяйте свой $ PATH.

    Как выполнить команду или сценарий при перезагрузке или запуске

    Известные службы в Linux могут быть добавлены во время загрузки без каких-либо проблем, потому что большинство из них поставляется со своими собственными сценариями, которые выполняются с помощью команд ‘chkconfig’ и ‘systemctl’ .

    Например, чтобы добавить службу ‘Apache httpd’ при загрузке , выполните одну из следующих команд в зависимости от вашего системного менеджера. Точно так же вы можете добавить любую хорошо известную службу при запуске.

    Для системы инициализации Sys V:

     # chkconfig --level 35 httpd на 

    Для системы systemd:

     # systemctl включить httpd 

    Иногда может потребоваться добавить собственный сценарий, команду или службу при запуске / загрузке. Если так, то как ты это делаешь?

    В этой статье давайте разберемся, как использовать следующие три метода для его реализации:

    • Использование / etc / rc.Файл d / rc.local
    • Использование файла crontab
    • Модуль службы systemd

    Метод 1: Использование файла /etc/rc.d/rc.local

    Файл «/etc/rc.local» традиционно запускается после запуска всех обычных компьютерных служб в конце процесса переключения на многопользовательский уровень запуска.

    Этот метод также работает в системе systemd, и вам необходимо добавить местоположение вашего скрипта в файл ‘/etc/rc.d/rc.local’ для запуска при загрузке.

    Убедитесь, что у файла есть разрешение на запуск исполняемого файла.

     # chmod + x /etc/rc.d/rc.local 

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

     # vi /opt/scripts/run-script-on-boot.sh
    
    #! / bin / bash
    дата> /root/on-boot-output.txt
    имя хоста> /root/on-boot-output.txt 

    Когда скрипт будет готов, установите разрешение для исполняемого файла, как показано ниже:

     # chmod + x / opt / scripts / run-script-on-boot.ш 

    Наконец, добавьте скрипт в конец файла:

     # vi /etc/rc.d/rc.local
    
    /opt/scripts/run-script-on-boot.sh 

    Перезагрузите систему , чтобы убедиться в этом:

     # перезагрузка 

    Метод 2: Использование файла crontab

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

    Это легко сделать с помощью специальной строки с именем «@reboot» с cron job .

    @reboot — это специальная строка, которая позволяет пользователю запускать любую команду или сценарий при запуске (во время загрузки).

    В этом примере запускается файл ‘/opt/scripts/run-script-on-boot.sh’ при перезапуске системы.

    Мы будем использовать тот же сценарий, который был создан в приведенном выше примере. Для этого просто добавьте следующую запись в файл crontab:

     # crontab -e
    
    @reboot /opt/scripts/run-script-on-boot.sh 

    Перезагрузите систему, чтобы проверить это:

     # перезагрузка 

    Метод-3: Использование служебного модуля systemd

    Этот метод работает только в системе systemd и очень прост.

    Для этого вам необходимо создать сценарий запуска systemd и поместить его в каталог «/ etc / systemd / system /» .

    Это наш пример сценария модуля запуска systemd:

     # vi пример-при-загрузке-скрипт.service
    
    [Единица измерения]
    Описание = Запускать пользовательский сценарий при запуске
    После = default.target
    
    [Служба]
    ExecStart = / opt / scripts / run-script-on-boot.sh
    
    [Установить]
    WantedBy = default.target 

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

     # systemctl демон-перезагрузка
    # systemctl enable sample-on-boot-script.сервис 

    Перезагрузите систему, чтобы проверить это:

     # перезагрузка 

    Бонусных советов:

    Если вы хотите запустить сценарий в фоновом режиме, вам нужно добавить в конце символ амперсанда "&" .

     / Путь / К / My_Script и 

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

     su - $ USER -c / Путь / К / My_Script 

    Заключение

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

    Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

    Выполнение команд и сценариев при перезагрузке и запуске в Linux

    Может возникнуть необходимость выполнять команду или сценарии при перезагрузке или каждый раз, когда мы запускаем нашу систему. Итак, как мы можем это сделать, в этом уроке мы собираемся обсудить именно это. Мы обсудим, как заставить наши системы CentOS / RHEL и Ubuntu выполнять команду или сценарии при перезагрузке или при запуске системы, используя два разных метода.Оба метода протестированы и работают нормально,

    ( Рекомендуемое чтение: установка Grafana и интеграция с Prometheus для полного мониторинга)

    (также прочтите: Руководство по установке DNS на CentOS 8 / RHEL 8)

    Метод 1. Использование rc.local

    В этом методе мы будем использовать файл ‘rc.local’, расположенный в ‘/ etc /’, для выполнения наших сценариев и команд при запуске. Мы сделаем запись для выполнения сценария в файле, и каждый раз, когда наша система запускается, сценарий будет выполняться.

    Но сначала мы предоставим разрешения, чтобы сделать файл /etc/rc.local исполняемым,

    $ sudo chmod + x /etc/rc.local

    Далее мы добавим скрипт для выполнения в файл

    $ sudo vi /etc/rc.local

    и в конце файла добавьте запись

    sh /root/script.sh и

    Теперь сохраните файл и выйдите. Точно так же мы можем выполнить команду, используя файл rc.local, но нам нужно убедиться, что мы указали полный путь к команде.Чтобы найти полный путь к команде, запустите

    $ команда

    Например,

    $ который ставня

    / usr / bin / шторка

    Для CentOS мы используем файл /etc/rc.d/rc.local вместо /etc/rc.local. Нам также необходимо сделать этот файл исполняемым перед добавлением в файл любого сценария или команды.

    Примечание: — При выполнении сценария при запуске убедитесь, что сценарий заканчивается на «exit 0».

    Метод 2 — метод Crontab

    Этот метод является самым простым из двух.Мы создадим задание cron, которое будет ждать 90 секунд после запуска системы, а затем выполнит команду или сценарий в системе.

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

    $ crontab -e

    и введите следующую строку:

    @reboot (сон 90; sh /location/script.sh)

    , где /location/script.sh — это расположение сценария, который нужно выполнить.

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

    Связанные

    startup — Как запускать скрипты при запуске?

    Чтобы запустить (кратковременную) команду 1 при запуске с использованием systemd , вы можете использовать модуль systemd типа OneShot . Например, создайте /etc/systemd/system/foo.service , содержащий:

      [Единица]
    Описание = задание, которое запускает ваш пользовательский скрипт
    
    [Служба]
    ExecStart = / некоторые / команда
    Тип = oneshot
    RemainAfterExit = да
    
    [Установить]
    WantedBy = многопользовательский.цель
      

    Затем запустите:

      sudo systemctl демон-перезагрузка
    sudo systemctl включить foo.service
      

    По сути, это просто преобразование типичного задания Upstart в задание systemd (см. Systemd для пользователей Upstart).

    Вы можете запускать несколько команд из одного служебного файла, используя несколько строк ExecStart :

      [Сервис]
    ExecStart = / некоторые / команда
    ExecStart = / another / command несколько аргументов
    ExecStart = - / a / third / command ignore failure
      

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

    Актуально:


    Для пользовательских сеансов вместо этого вы можете создать модуль systemd в ~ / .config / systemd . Это должно работать с 16.04 и новее, но не с более ранними выпусками Ubuntu с systemd (так как они все еще использовали Upstart для пользовательских сеансов). Модулями пользовательских сеансов можно управлять с помощью тех же команд, что и с системными службами, но с добавленной опцией --user :

      systemctl --user daemon-reload
    systemctl --user status foo.служба
      

    Синтаксис оболочки

    Обратите внимание, что, в отличие от Upstart, systemd не запускает команды Exec * через оболочку. Он сам выполняет некоторое ограниченное расширение переменных и несколько команд (разделенных ; ), но это все, что касается синтаксиса, подобного оболочке. Для чего-то более сложного, например перенаправления или каналов, заключите команду в sh -c '...' или bash -c '...' .


    1 В отличие от долгоживущих демонов.

    скриптов — Как я могу запустить /etc/rc.local при запуске?

    скриптов — Как заставить /etc/rc.local запускаться при запуске? — Спросите Ubuntu
    Сеть обмена стеков

    Сеть Stack Exchange состоит из 176 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

    Посетить Stack Exchange
    1. 0
    2. +0
    3. Авторизоваться Подписаться

    Ask Ubuntu — это сайт вопросов и ответов для пользователей и разработчиков Ubuntu.Регистрация займет всего минуту.

    Зарегистрируйтесь, чтобы присоединиться к этому сообществу

    Кто угодно может задать вопрос

    Кто угодно может ответить

    Лучшие ответы голосуются и поднимаются наверх

    Спросил

    Просмотрено 451k раз

    У меня есть сценарий, который я хотел бы запустить при запуске моей системы, и я поместил его в / etc / rc.local , но он не работает. Как я могу включить его запуск при запуске?

    Создан 27 окт.

    Pedroopedroo

    1,95511 золотых знаков99 серебряных знаков88 бронзовых знаков

    5

    Можете ли вы запустить свой сценарий вручную; в противном случае проблема с этим скриптом, в противном случае посмотрите rc.местный . Если этот сценарий должен запускаться как root , необходимо использовать sudo для его запуска вручную.

    Обновлено: 16.03.2021 — 01:27

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *