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

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

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

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

Автозагрузка с помощью стандартной утилиты Ubuntu

Создайте скрипт в удобном месте и сделайте его выполняемым:

sudo chmod ugo+x /путь_к_скрипту/имя_скрипта

Запустите утилиту Приложения запускаемые автоматически в меню Dash:

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

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

Создание скрипта в init.d

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

sudo chmod ugo+x /etc/init.d/имя_скрипта

Теперь добавите его в автозагрузку:

sudo rc-update add имя_скрипта defaults

Скрипт запуститься во время инициализации системы.

Загрузка с помощью rc.local

Создайте скрипт где вам удобно и сделайте его исполняемым как в первом способе. Откройте файл rc.local командой:

sudo nano /etc/rc.local

Пропишите ваш скрипт перед строчкой exit 0 и сохраните файл. Скрипт выполниться после загрузки системы.

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

Оцените статью:

Загрузка…

losst.ru

Создание своего скрипта автозапуска при загрузке компьютера

Создаём пустой файл.

Первой строкой пишем:

#!/bin/sh

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

Сохраним его под оригинальным названием (чтоб не совпадал с уже существующими) в каталоге /usr/sbin/.

Чтобы скрипт запускался при загрузке, необходимо прописать его в файле /etc/rc.local до строчки exit 0. Если у вас не существует данного файла, создайте его и вставьте в него следующее содержимое:

#!/bin/sh -e
#Здесь вставляем строку с указанием вашего скрипта.
/usr/sbin/mescripts
exit 0

Немного более сложный способ

Позволяет задать последовательность загрузки и поведение скрипта при разных runlevel’ах.

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

В этих директориях лежат скрипты остановки сервисов:

/etc/rc0.d/ /etc/rc1.d/  /etc/rc6.d/  

в этих — скрипты запуска сервисов:

/etc/rc2.d/  /etc/rc3.d/  /etc/rc4.d/ /etc/rc5.d/

Изучаем их на предмет последовательности (чем меньше первая цифра в начале скрипта, тем раньше запускается/останавливается приложение). Это может быть критично, если ваше приложение будет зависит от каких-то сервисов.

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

sudo update-rc.d my_script start 70 2 3 4 5 . stop 20 0 1 6 .

Здесь я определил, что мой скриптик должен запускаться попозже остальных(70), и останавливаться пораньше(20). Цифры 2 3 4 5 0 1 6 означают уровни загрузки.

Если что-то не понравилось — все можно удалить

sudo update-rc.d -f my_script remove

Подробности в man update-rc.d.

Есть директория /etc/network/ с поддиректориями if-down.d, if-pre-up.d, if-post-down.d, if-up.d. Если разместить скрипт в одной из этих поддиректорий, то он будет выполняться соответственно при выключении, перед включением, после выключения или при включении сети.

Другой способ — указать в файле /etc/network/interfaces

одну из следующих директив: up, pre-up, post-up, down, pre-down, post-down. Например, строка

post-up /path/to/script.sh

после включения сети выполнит скрипт script.sh. Подробнее можно почитать в man interfaces.

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

help.ubuntu.ru

Автозапуск пользовательских скриптов при инициализации системы – oss-it

Иногда пользователи могут столкнуться с необходимостью добавления каких-то сервисов или событий в автозагрузку Linux системы (Ubuntu, Debian, CentOS, Gentoo, Alpine Linux и так далее), но не всегда удается сделать это встроенным в графическую среду средствами (например Startup Applications в Ubuntu). То, как сделать простой скрипт и добавить его запуск при инициализации системы будет рассказано ниже.

Опишем это на простом примере: opendchub – это сервис dc-хаба, который может запускаться только под супер-пользователем (то есть он запускается вручную только командой sudo opendchub или непосредственно под root’ом).

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

sudo nano /etc/init.d/odchub

В текстовом редакторе введите три строки будущего скрипта:

#!/bin/bash
echo "Opendchub starting..."
opendchub

Сохраните изменения (Ctrl+O) и выйдите из текстового редактора nano (Ctrl+X)
В первой строке этого скрипта указывается интерпретатор (если вы не знакомы с этим понятием, то лучше оставить именно такой как указан выше).
Во второй строке, командой echo обеспечивается простой вывод на экран текста – в принципе эта строка необязательна, она лишь будет информировать пользователя о том, какое действие происходит в данный момент.
Третьей строкой собственно указывается команда запуска (в нашем примере – это сервис

opendchub) – пишется тут всё точно также, как вы выполняли необходимую команду в терминале, за исключением того, что не надо добавлять ‘sudo‘ – так как этот скрипт будет выполняться при инициализации системы, то есть уже сразу под суперпользователем.

После того как файл создан, сделаем его исполняемым:

sudo chmod +x /etc/init.d/odchub

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

Если вывод команды:

ps -p 1 -o comm=

в вашем дистрибутиве покажет “systemd”, то рекомендуем создать systemd unit, в других случаях стоит прибегнуть ко второму описаному решению, init.

Systemd и init – это разные системы инициализации, используемые в Linux. Изначально массово использовалась init, но последние годы во всё большем количестве дистрибутивов используется systemd. Стоить добавить, что это не единственные системы инициализации, но как правило большинство из них поддерживают синтаксис init.


Systemd

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

sudo nano /etc/systemd/system/odchub.service

В текстовом редакторе скопируйте следующие строки в этот файл:

[Unit]
Description=Opendchub service
After=network.target
[Service]
ExecStart=/etc/init.d/odchub
[Install]
WantedBy=multi-user.target

Сохраните изменения (Ctrl+O) и выйдите из текстового редактора nano (Ctrl+X).
Description – заполняентся произвольно, это просто описание юнита.
After=network.target – означает, что эта служба сможет быть запущена только после поднятия сетвых сервисов.
ExecStart – путь к исполняемому файлу, будет выполнять при старте службы.
WantedBy=multi-user.target – означает, что будущий сервис будет запускаться после активации цели multi-user.target (примерно тоже самое что runlevel 3 в init).

Более подробно о возможностях systemd можно прочесть здесь или здесь.

После сохранения файла юнита вы можете использовать созданную службу odchub, например, стартовать (единократно выполнить написанный нами скрипт):

sudo systemctl start odchub

А этой командой вы “включите”, то есть добавите в автозагрузку системы:

sudo systemctl enable odchub

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

sudo systemctl disable odchub
sudo rm /etc/systemd/system/odchub.service


Init

После того как создан исполняемый скрипт в соответствующей директории (в нашем случае /etc/init.d/odchub), для включения его при загрузках системы, достаточно выполнить команду:

sudo update-rc.d odchub defaults 90

Числовое значение после слова defaults указывает на приоритет для старта этого скрипта.

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

sudo update-rc.d -f odchub remove


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

oss-it.ru

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

Может кому пригодится мини-заметка о том каким образом можно сделать какой либо скрипт автозагружаемым. Существуют несколько способов сделать автозапуск программ в Linux. За автозагрузку отвечает файл /etc/rc.local как раз название говорит о само за себя, имеется ввиду локальный файл для администратора что бы не лезть в глубь системы, это более простой и унивирсальный способ. Чаще всего его вполне достаточно и не нужно изобретать велосипед.

Файлик смело можно редактировать и вписывать свои скрипты, например в каком либо текстовом редакторе, есть одно НО вписывать команды можно до exit 0.

Пример для debian && centos

root@ ~ # cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will «exit 0» on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /usr/local/ispmgr/sbin/eximquota /usr/local/ispmgr/sbin/ihttpd ip 1500 /root/antiddos/restorefw.sh exit 0root@ ~ #

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

root@ ~ # cat /etc/rc.local

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will «exit 0» on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.

/usr/local/ispmgr/sbin/eximquota

/usr/local/ispmgr/sbin/ihttpd ip 1500

/root/antiddos/restorefw.sh

exit 0root@ ~ #

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

С аналогичном успехом можно посмотреть на второй более специфический вариант:

Запуск программ при старте Debian:

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

# update-rc.d имя_в_initd defaults

# update-rc.d имя_в_initd defaults

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

# update-rc.d -f имя_в_initd remove

# update-rc.d -f имя_в_initd remove

Запуск программ при старте Centos:

chkconfig –-levels 234 демон on

chkconfig –-levels 234 демон on

linuxguru.ru

Создание своего скрипта автозапуска при загрузке компьютера.

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

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

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

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

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

Отсрочка

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

Удаление

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

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

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

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


Softovick

Вдохновившись статьей , я решил немного развить тему и настроить автозагрузку сервера Domino при загрузке системы.
Ничего особо нового не придумаю, потому просто опишу кратко, что нужно сделать, чтобы сервер Lotus Domino запускался автоматически при загрузке системы в screen-сессии. Итак, начнем:
1 шаг: сделаем скрипт автозапуска, как в теме ;
sudo nano /etc/init.d/autostart.script
2 шаг: вставим в него следующие строки
#!/bin/bash
screen -A -m -d -S domino su — notes -c «cd ~ && /opt/ibm/lotus/bin/server»
Данный скрипт запустит из-под рута сессию screen под названием «domino», зайдет по пользователем «notes» и выполнит запуск сервера.
3 шаг: сделаем исполняеемым файл скрипта и добавим его в автозагрузку

Вуаля, как говорят французы.
В итоге мы получаем ситуацию, при которой при загрузке системы автоматически запустится сервер. Сессия screen при этом запустится от имени рута, потому чтобы посмотреть результат запуска (там будет консоль сервера), то следует набрать команду sudo screen -r
P.S.: если кто подскажет, как правильно запустить сессию screen от имени локального пользователя, то буду благодарен.
Доб. 09.08.2009 г.
В результате опытной эксплуатации удалось выявить, что данный способ работает отлично в Ubuntu, но не срабатывает в OpenSUSE 10. В первую очередь из-за отсутствия утилиты update-rc, во-вторую — из-за несколько другого механизма автозагрузки. Итак, если у кого нужно сделать автозагрузку сервер Domino в OpenSUSE, то для Вас шаг № 3 будет выглядеть так: su
chmod +x /etc/init.d/autostart.script
ln -s /etc/init.d/autostart.script /etc/init.d/rc5.d/S95autostart.script/etc/init.d/ .
В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки:

#!/bin/bash

2. Нужно разрешить файлу выполняться:

Sudo chmod +x /etc/init.d/autostart.script

3. Рассказываем системе что этот файл нужно исполнять при старте системы:

Sudo update-rc.d autostart.script defaults 95

Где 95 это порядок в очереди исполнения. Подробнее можно узнать из

Man update-rc.d

Перезапускаем систему и радуемся результату 🙂

P.S.
Для удаления из автостарта нужно выполнить:

Sudo update-rc.d autostart.script remove

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

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


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

Организация автозагрузки в Ubuntu Server.
Разумеется, для того, чтобы правильно запустить/остановить сервис, необходимо описать сценарий с командами для запуска/остановки. Взгляните

comuedu.ru

Добавление команд в автозагрузку Linux

15 марта 2016 г. 2:19

Чтобы команды запускались автоматически при старте Линукс, нужно создать файл /etc/init.d/local

sudo nano /etc/init.d/local

Затем добавляем свои команды или скрипты, например:

#! /bin/sh
/usr/local/sbin/nginx
/etc/init.d/bind9 start  # добавляет bind9 в автозапуск
service elasticsearch start  # добавляет elasticsearch в автозапуск

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

sudo chmod +x /etc/init.d/local # делаем файл исполняемым
sudo update-rc.d local defaults 80 # добавляем скрипт /etc/init.d/local в автозагрузку

Этого достаточно, чтобы запускать команды и сервисы автоматически при загрузки системы.

Оцените статью

1 из 5 (всего 3 оценки)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

После нажатия кнопки «Отправить» ваше сообщение будет доставлено мне на почту.

Мальцев Артём

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/it/add-comands-to-autorun-linux/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="https://vivazzi.pro/it/add-comands-to-autorun-linux/">https://vivazzi.pro/it/add-comands-to-autorun-linux/</a>

Подробнее: Правила использования сайта

Похожие статьи:

vivazzi.pro

Настройка автозапуска скриптов в Linux Ubuntu/Mint

Здесь рассматриваются способы настройки автозапуска скриптов в Ubuntu/Mint только в консольном режиме.

Создание скрипта в init.d для запуска во время инициализации системы

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

$sudo chmod +x /etc/init.d/имя_скрипта

Теперь необходимо добавить его в автозагрузку:

$sudo update-rc.d имя_скрипта defaults

Скрипт запуститься во время инициализации системы.

Удалить из автозагрузки можно так:

$sudo update-rc.d -f имя_скрипта remove

Загрузка с помощью rc.local после загрузки системы

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

$sudo chmod +x /etc/init.d/имя_скрипта

Затем подправить файл rc.local любым редактором текста, например nano:

$sudo nano /etc/rc.local

Изначально скрипт rc.local пустой и содержит только:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

Пропишите полный путь скрипта перед строчкой exit 0 и сохраните файл.

Как сказано в комментариях в эталонном rc.local делаем его исполняемым (хотя во многих дистрибутивах он изначально исполняемый):

$sudo chmod +x /etc/rc.local

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

Однако в последних версиях Ubuntu (например в Ubuntu 18.04) в директории /etc нет файла rc.local и его необходимо создать и сделать исполняемым:

$ sudo touch /etc/rc.local
$ sudo chmod +x /etc/rc.local

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

www.oslogic.ru

Обновлено: 04.02.2019 — 04:39

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

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