Автозагрузка в ubuntu
Содержание:
Автозагрузка проложений
Как мы уже поняли в каталогах /etc/rc.d/* лежат символьные ссылки на скрипты. Где цифры от это уровень загрузки у inittab или systemd. Мы можем менять руками порядок запуска, убирать и добавлять. По сути systemd пробежится по всем файлам и попытается их инициализировать при старте системы. Теперь разберем управление через команды: chkconfig — нужна для просмотра сервисов(программ). Поддерживает режим изменения для любого уровня загрузки.
update-rc.d — служит для запуска/остановки скриптов, при старте/выключении системы. Собственно через нее мы и будем менять автозапуск графической оболочки KDE(kdm). Так уж получилось, что у меня запуск окружения KDE включен для 2-5 уровней по умолчанию.
При старте системы я отключаю 2-4 уровень загрузки и проверяю что у меня стоит 3-й уровень загрузки

Перезагружаюсь и вижу приглашение консоли tty. profit
На самом деле, это чуть больше чем консоль. Мы можем переключаться между вкладками. CTRL+ALT+(F1-F6)
команда startx запустит графику KDE.
Вывод: Тут должен быть вывод, но вместо него я вставлю кота

Всем спасибо, кто дочитал.
Список используемой литературы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.
В этой статье мы рассмотрим как работает автозагрузка Linux, как добавить программы автозагрузки, куда их будет более правильно добавить, а также какие виды автозагрузки бывают в этой операционной системы.
Отсрочка автозапуска программ в Ubuntu
Если программ в автозагрузке Убунту очень много, их необходимо подгружать в определенном порядке или запускать спустя какое-то время после загрузки системы — поможет функция отсрочки. Для ее активации используется unix-утилита sleep. Воспользоваться возможностями этого инструмента можно в уже знакомой программе «Автоматически запускаемые приложения». Для этого нужно:
- Открыть окно параметров запускаемых приложений.
- Выделить курсором программу, автозапуск которой необходимо отсрочить, и воспользоваться кнопкой «Изменить».
- В строке «Команда» перед имеющеюся записью внести:
где цифра после слова «спать» равна количеству секунд, которое приложение бездействует сразу после старта системы, перед тем как запуститься. Между данной формулой, в конце которой обязательна точка с запятой, и командой на запуск приложения, должен быть пробел.
В приведенном примере отложенной автозагрузки программ в Ubuntu приложение остается в состоянии «сна» 2 минуты, прежде чем открыться. Например, запуск через полчаса после старта ОС будет выглядеть как sleep 3h «имя программы». Пример, в котором Transmission запускается через 1 час:
Аналогичным образом можно добавить в автозагрузку в Linux отсроченное выполнение пользовательского скрипта или запуск медиафайла.
АВТОЗАГРУЗКА В 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

Готово, и самое интересное, что если вы откроете приложение автозагрузки. То там тоже появится этот пункт. Это такой способ настройки без графического интерфейса.
Debian/Ubuntu
update-rc.d
Вывести список сервисов и их состояние
# 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
Чуть подробнее.
В Linux у нас определенное количество уровней выполнения (runlevel)
К примеру MySQL и Apache у нас загружаются на 3 уровне.
И скорее всего вы хотите, чтобы MySQL стартовал перед Apache, а при перезагрузке сначала должен быть остановлен Apache, а потом MySQL.
Для этого нам нужно установить start (S) и kill (K) приоритеты.
Для MySQL нужно поставить приоритет на стадии загрузки, а для Apache приоритет на shutdown\reboot’е.
При старте (S), чем меньше значение приоритета, тем раньше сервис будет запущен.
Сервис со start приоритетом равным 10 будет запущен раньше сервиса с приоритетом равным 20.
При остановке (K) всё наоборот. Сервис с большим приоритетом будет остановлен раньше, чем сервис с меньшим приоритетом.
Небольшой пример.
Устанавливаем приоритет start и kill сервису Apache
Синтаксис следующий
update-rc.d apache2 defaults
Итак, сделаем так, чтобы сначала стартовал 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
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка 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

Код программы
Для проекта потребуется 2 скетча:
-
Reading and displaying the output frequency on the serial monitor
. In this part you need to write down the frequency values when you place different colors in front of the sensor. -
Distinguish between different colors
. In this section you’ll insert the frequency values picked previously on your code, so that your sensor can distinguish between different colors. We’ll detect red, green and blue colors.
1. Чтение выходной частоты
Загрузите следующий код в плату Arduino.
Откройте монитор серийного порта, скорость порта 9600.
Place a blue object in front of the sensor at different distances. You should save two measurements: when the object is placed far from the sensor and when the object is close to it.
Автозагрузка скриптов в 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
В параметрах мы передаем утилите адрес файла скрипта. Исполняемость — это обязательный параметр для всех способов.
Enable /etc/rc.local on Systemd
If you type the following command in terminal:
sudo systemctl status rc-local
You may get this output:
● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since Thu 2015-11-26 23:54:58 CST; 59s ago Process: 1001 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE) Nov 26 23:54:57 vivid rc.local: File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 920, in require Nov 26 23:54:57 vivid rc.local: needed = self.resolve(parse_requirements(requirements)) Nov 26 23:54:57 vivid rc.local: File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 807, in resolve Nov 26 23:54:57 vivid rc.local: raise DistributionNotFound(req) Nov 26 23:54:57 vivid rc.local: pkg_resources.DistributionNotFound: shadowsocks==2.8.2 Nov 26 23:54:58 vivid sudo: pam_unix(sudo:session): session closed for user root Nov 26 23:54:58 vivid systemd: rc-local.service: control process exited, code=exited status=1 Nov 26 23:54:58 vivid systemd: Failed to start /etc/rc.local Compatibility. Nov 26 23:54:58 vivid systemd: Unit rc-local.service entered failed state. Nov 26 23:54:58 vivid systemd: rc-local.service failed.
And if you try to enable /etc/rc.local to run on system boot with the command:
sudo systemctl enable rc-local
You may get:
The unit files have no section. They are not meant to be enabled using systemctl. Possible reasons for having this kind of units are: 1) A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. 2) A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. 3) A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...).
Как работает сенсор цвета TCS3200?
The TCS3200 has an array of photodiodes with 4 different filters. A photodiode is simply a semiconductor device that converts light into current. The sensor has:
- 16 photodiodes with red filter – sensitive to red wavelength
- 16 photodiodes with green filter – sensitive to green wavelength
- 16 photodiodes with blue filter – sensitive to blue wavelength
- 16 photodiodes without filter
If you take a closer look at the TCS3200 chip you can see the different filters.
By selectively choosing the photodiode filter’s readings, you’re able to detect the intensity of the different colors. The sensor has a current-to-frequency converter that converts the photodiodes’ readings into a square wave with a frequency that is proportional to the light intensity of the chosen color. This frequency is then, read by the Arduino – this is shown in the figure below.
The solution
As you can see from above, The unit file have no section. As such Systemd can not enable it. First we need to create a file:
sudo nano /etc/systemd/system/rc-local.service
Then add the following content to it.
Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 WantedBy=multi-user.target
Save and close the file. To save a file in Nano text editor, press , then press Enter to confirm. To exit the file, Press . Next, run the following command to make sure file is executable.
sudo chmod +x /etc/rc.local
Note: Starting with 16.10, Ubuntu doesn’t ship with file anymore. You can create the file by executing this command.
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
Then add execute permission to file.
sudo chmod +x /etc/rc.local
After that, enable the service on system boot:
sudo systemctl enable rc-local
Output:
Created symlink from /etc/systemd/system/multi-user.target.wants/rc-local.service to /etc/systemd/system/rc-local.service.
Now start the service and check its status:
sudo systemctl start rc-local.service sudo systemctl status rc-local.service
Output:
● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2015-11-27 00:32:56 CST; 14min ago Process: 879 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) Main PID: 880 (watch) CGroup: /system.slice/rc-local.service
Немного более сложный способ
Позволяет задать последовательность загрузки и поведение скрипта при разных 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 .
В любом случае на скрипт должны быть установлены права, разрешающие выполнение, иначе он не сможет запуститься.
TCS3200 color sensor – shown in the figure below – uses a TAOS TCS3200 RGB sensor chip to detect color. It also contains four white LEDs that light up the object in front of it.
Спецификация
Спецификация сенсора:
- Напряжение питания: от 2.7 В до 5.5 В
- Размеры: 28,4 x 28,4 мм (1.12 x 1.12″)
- Интерфейс: цифровой, сигнал TTL
- Высокое разрешение конветирования слабоинтенсивного цветового диапазона
- Программируемый цвето- и полносканируемая выходная частота
- Соединяется напрямую к микроконтроллеру
Boot vs. startup
Understanding the Linux boot and startup process is important for configuring Linux and resolving startup issues. In reality, there are two sequences of events that are required to boot a Linux computer and make it usable: boot and startup. The boot sequence starts when the computer is turned on and finishes when the kernel is initialized and is launched. The startup process then takes over and finishes the task of getting the Linux computer into an operational state.
Overall, the Linux boot and startup process is fairly simple to understand. It is comprised of the following steps, which will be described later in more detail:
- BIOS Power-On Self-Test (POST)
- Boot loader (GRUB2)
- Kernel
For a much more detailed description of both the boot and startup sequences, refer to my article, An introduction to the Linux boot and startup processes.
Как работает автозагрузка?
Чтобы понять как работает автозагрузка, сначала нужно вспомнить, что происходит во время процесса загрузки Linux. Как только ядро завершит свою инициализацию и будет готово к дальнейшей работе, оно передаст управление системе инициализации. Система инициализации — это основной процесс, именно он запускает все другие процессы в системе.
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
- Автозагрузка на уровне ядра — вы можете указать любую программу, которая будет запускаться после старта ядра вместо системы инициализации;
- Автозагрузка системы инициализации — запуск основных системных сервисов, дополнительных сервисов, а также ваших скриптов на этапе инициализации системы;
- Автозагрузка rc.local — устаревший метод загрузки скриптов, выполняется перед запуском графического окружения;
- Автозагрузка менеджера входа — вы можете выполнять свои скрипты или команды после запуска менеджера входа, но перед запуском окружения;
- Автозагрузка X сервера — запуск нужных программ или скрпитов сразу после старта X сервера;
- Автозагрузка окружения — большинство окружений поддерживают автозагрузку программ, там даже можно настроить отложенный запуск и другие параметры;
- Автозагрузка bash — самый последний вариант — это автозагрузка на уровне отдельной командной оболочки, вы можете выполнять нужные команды автоматически, как только будет запущен терминал.
Дальше мы рассмотрим более подробно как использовать каждый из пунктов для автозагрузки программ, скриптов или выполнения команд в Linux.
Запуск майнеров и скриптов с правами sudo без ввода пароля
Майнеры и служебные программы для майнинга, как правило, должны запускаться с правами sudo. Для этого при их запуске вручную нужно вводить пароль. Для майнинг-ригов это не очень удобно, так как они должны работать в круглосуточном режиме. Поэтому нужно автоматизировать процесс запуска майнеров, их «обвязки», а также обеспечить автономную безопасную и продуктивную работу майнинг ферм.
Чтобы постоянно не вводить пароль при запуске майнеров и программ разгона с привилегиями sudo, можно отменить запрос пароля для скриптов, в которых содержится эта команда.
Чтобы сконфигурировать систему таким образом, выполняют команду:
Кроме того, для предотвращения ошибок с доступом к майнеру/скрипту, нужно удостовериться, что они принадлежат пользователю/группе, которые имеет право их запускать и редактировать.
Проще всего пользователю, который входит в систему, предоставить права владения и разрешения на чтение, запуск и редактирование скрипта запуска/программы для майнинга командами:
sudo chown имя_user:имя_user wolfamdctrl.sh sudo chmod a=rwx wolfamdctrl.sh
Проверить имеющиеся права у файла можно командой: ls -l выполненной в терминале с папкой, где он находится.
Если нужно запустить скрипт с задержкой, то можно использовать команду:
, где 10 — время задержки в секундах.
Например, для запуска с задержкой в 15 секунд утилиты amdmemtweak можно использовать такой скрипт:
#!/bin/bash sleep 15 ./amdmemtweak --i 0,1,2,3,4 --REF 30
ВЫВОДЫ

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