Xubuntu как добавить программу в автозагрузку. Как настроить автозапуск приложений и сервисов в Ubuntu.

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

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

Некоторые шаблоны содержат несколько примеров, чтобы показать их использование. Структура таблицы создается при вводе данных. При добавлении нового столбца в таблицу определяется новое поле. Если вы не хотите вводить данные в таблице 1 в этот момент, нажмите «Закрыть». Нажмите «Да», чтобы сохранить изменения, нажмите «Не отклонять их» или нажмите «Отмена», чтобы открыть таблицу. Каждый контент, который он содержит, наследуется от всех новых пустых баз данных.

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


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

Организация автозагрузки в 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 может потребоваться запускать/останавливать сервисы в определенном порядке. Этот момент решается специальным именованием файлов в каталогах уровней запуска. Файлы имеют следующие имена: NN[имя], где - это один символ («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 .

Создать пустую базу данных

Введите, вставьте или импортируйте данные в таблицу, созданную при создании новой базы данных, и повторите процесс с помощью новых таблиц, созданных с помощью команды «Таблица» на вкладке «Создать». Импортируйте данные из других источников и создайте новые таблицы. . Если вы не хотите вводить информацию прямо сейчас в таблице 1, нажмите «Закрыть». Нажмите «Да», чтобы сохранить изменения в «Нет», чтобы отменить их или «Отменить», чтобы оставить таблицу открытой. Вы можете добавить новую таблицу в существующую базу данных, используя команды в таблице «Таблицы» на вкладке «Создать».

Эта команда добавит новый скрипт «myscript» во все уровни загрузки. Будет выполнен запуск сервиса на уровнях со 2 по 5 с приоритетом 99 (в последнюю очередь) и остановка сервиса на 0, 1 и 6 уровнях с приоритетом 01 (самым первым).
Чтобы удалить скрипт из автозагрузки, воспользуйтесь командой:
sudo update-rc.d -f myscript remove

Рассмотрим пример настройки автозагрузки.
Задача: настроить автоматический запуск виртуальной машины, работающей под управлением VirtualBox, которая должна запускаться спустя две минуты после запуска операционной системы Ubuntu Server. При выключении или перезагрузке Ubuntu Server виртуальная машина должна корректно завершать свою работу.
Предположим, что на Ubuntu Server установлен VirtualBox и существует виртуальная машина с именем «Slave», операционная система которой поддерживает возможность корректного завершения работы при нажатии кнопки выключения компьютера (поддержка ACPI).

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

При необходимости вы можете добавлять или удалять поля, чтобы таблица соответствовала вашим потребностям. Присвоение свойств поля режиму проектирования Независимо от того, как вы создаете свою таблицу, рекомендуется рассмотреть и установить свойства поля. Это можно сделать только в режиме разработки. Чтобы перейти в режим «Дизайн», щелкните правой кнопкой мыши таблицу в области навигации и выберите «Режим проектирования». Чтобы увидеть свойства поля, щелкните поле в проектной сети. Свойства отображаются в разделе «Проектная сеть» в разделе «Свойства поля».

Для начала напишем скрипт, который будет располагаться в каталоге /etc/init.d:
sudo cp /etc/init.d/skeleton /etc/init.d/slave && sudo vi /etc/init.d/slave

Отредактировав скрипт и оставив лишь минимально необходимое, получаем файл со следующим содержимым:
#!/bin/sh ### BEGIN INIT INFO # Provides: slave # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: ability for starting and saving execution state of VBox virtual machines # Description: This script is used for starting and saving execution state of VBox virtual machines by using System-V on Ubuntu Server. This file should be placed in /etc/init.d ### END INIT INFO # Author: Fuks Alexander . /lib/lsb/init-functions # Perform start of Slave"s virtual machine with delay 2 minutes perform_start() { log_daemon_msg «Starting Vbox Slave machine» sleep 120 && su -l -c «VboxHeadless –startvm Slave &» kungfux log_end_msg 0 return 0 } # Send POWEROFF ACPI signal for Slave"s virtual machine perform_save() { log_daemon_msg «Sending ACPI POWER OFF signal for Vbox Slave machine» su -l -c «VboxManage controlvm Slave acpipowerbutton» kungfux log_end_msg 0 return 0 } case “$1” in start) perform_start ;; stop) perform_save ;; *) echo “Usage: /etc/init.d/slave {start|stop}” exit 3 ;; esac:

Копирование данных из другого источника в таблицу доступа

Чтобы просмотреть описание каждого свойства поля, щелкните свойство и прочитайте описание в поле рядом со списком свойств в поле Свойства поля. В следующей таблице описаны некоторые свойства полей, которые часто исправляются. Используйте следующую процедуру. Вы также можете переименовать поля, перейдя в проектный вид и отредактировав там имена полей. Чтобы перейти к представлению «Дизайн», щелкните правой кнопкой мыши таблицу в области переходов и выберите «Режим проектирования».

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

Kungfux@itworks:~$ sudo update-rc.d slave start 99 2 3 4 5 . stop 01 0 1 6 . Adding system startup for /etc/init.d/slave ... /etc/rc0.d/K01slave -> ../init.d/slave /etc/rc1.d/K01slave -> ../init.d/slave /etc/rc6.d/K01slave -> ../init.d/slave /etc/rc2.d/S99slave -> ../init.d/slave /etc/rc3.d/S99slave -> ../init.d/slave /etc/rc4.d/S99slave -> ../init.d/slave /etc/rc5.d/S99slave -> ../init.d/slave

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

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

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


Если вы решите добавить данные в существующую таблицу, данные будут добавлены в эту таблицу. Если вы не можете найти базу данных, которую хотите открыть.

Создать пустой шаблон пользователя

В диалоговом окне «Открыть» выберите «Мой компьютер» или «Мой компьютер» в раскрывающемся списке «Поиск в списке». В списке дисков щелкните правой кнопкой мыши устройство, которое, по вашему мнению, может содержать базу данных, а затем нажмите «Поиск». Введите критерии поиска в диалоговом окне «Результаты поиска» и нажмите «Поиск» для поиска в базе данных. Затем закройте диалоговое окно «Результаты поиска».

  • Если база данных найдена, дважды щелкните ее, чтобы открыть ее.
  • Чтобы открыть базу данных, нажмите «Обновить» в диалоговом окне «Открыть».
Если вы хотите иметь другие объекты в любой новой базе данных, которую вы создаете, например, формы, отчеты, макросы или дополнительные таблицы, вы можете создать собственный пустой шаблон, содержащий эти объекты.

Kungfux@itworks:~$ cat /var/log/boot.log fsck from util-linux-ng 2.17.2 /dev/sda1: clean, 92526/4751360 files, 2565789/18975488 blocks * Starting Jenkins Continuous Integration Server jenkins * Starting No-IP.com dynamic address update noip2 * Not starting internet superserver: no services enabled * Starting Postfix Mail Transport Agent postfix * Starting bittorrent daemon transmission-daemon * Starting VirtualBox kernel modules * Starting NTP server ntpd * Starting ftp server proftpd * Starting web server apache2 * Starting Vbox Slave machine

В последней строке присутствует текст, который был выведен скриптом «slave».
Более того, написанными скриптами для init.d можно пользоваться из терминала в любой момент времени. Например, для запуска виртуальной машины выполним команду:
kungfux@itworks:~$ /etc/init.d/slave start

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

Как изменить формат файла по умолчанию? Чтобы создать пустой шаблон, выполните одно из следующих действий. Создайте новую базу данных, а затем импортируйте или создайте объекты, которые вы хотите включить в шаблон. Сделайте копию существующей базы данных, которая уже содержит нужные объекты в шаблоне, а затем удалите ненужные объекты. После того как вы включили нужные объекты в шаблон, вам необходимо сохранить его в определенном месте.

Как видно из примера, операционная система Ubuntu предоставляет богатые возможности для управления запуском/остановкой сервисов/программ. В скриптах автозагрузки можно описывать зависимости запускаемых/останавливаемых служб от других служб с помощью секций «Required-Start/Required-Stop», да и сам скрипт может быть любой сложности, что позволяет организовать даже самую «тонкую» автозагрузку.

Данный материал написан для «Первого конкурса русскоязычных статей для ОС Ubuntu 2011 года» (konkurs.ubuntu.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 .

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