Методы автозапуска программ | windows
Программы в операционных системах могут автоматически запускаться множеством способов, что активно используется вирусами.
1. Папка Автозагрузка (%USERPROFILE% \ Start Menu \ Programs \ Startup \, %ALLUSERSPROFILE% \ Start Menu \ Programs \ Startup\). Частенько использовалась вирусами. Кроме проводника, можно просмотреть и отредактировать программой msconfig.exe.
2. Ветка реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run. Тоже частенько используется вирусами. Кроме regedit, можно просмотреть и отредактировать программой msconfig.exe. Ещё могут быть записи в ..\RunOnce и ..\RunOnceEx.
3. Ветка реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts \ Startup \.
4. Ветки HKEY_CURRENT_USER \ Software \ Policies \ Microsoft \ Windows \ System \ Scripts, HKEY_USERS \ S-1-5-21-1864085942-2410699049-2459454283-1003 \ Software \ Policies \ Microsoft \ Windows \ System \ Scripts, где безумное число S-1-5-21-1864085942-2410699049-2459454283-1003 представляет из себя идентификатор пользователя. Эти записи тоже появляются с помощью редактора объектов групповой политики, но не в “Конфигурации компьютера”, а в “Конфигурации пользователя”. Внесенные изменения вступают в силу немедленно (перезагрузка не требуется). Эта автозагрузка срабатывает сразу после успешного логона пользователя. Можно, кстати, настроить автозапуск и на время завершения сеанса (тем же редактором объектов групповой политики).
5. Планировщиками — либо консольной командой AT, либо через Панель управления \ Назначенные задания.
6. Автоза пуск в W2003 Server (и в W2k?) кроме всех стандартных известных способов, может происходить ещё из ветки реестра
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
7. С помощью Browser Helper Objects (BHO) — позволяет запускать программы при старте Internet Explorer и событий, происходящих в нем. Частенько используется вирусами и spyware.
8. Для систем NT/XP ключ реестра HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Winlogon\ Shell указывает на запускаемую оболочку (по умолчанию там прописано Explorer.exe). Для Windows 9x используется в раздел [boot] файла system.ini, строка shell=explorer.exe.
9. При запу ске интерпретатора cmd.exe могут запускаться приложения, настроенные на ветки реестра
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
и
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
См. подсказку к cmd.exe (выдается при запуске с опцией /?).
Автозапуск программ Windows
Посмотрим, как добавить свою программу (или bat-файл) в автозагрузку Windows 7?
Есть несколько путей.
Используем стандартные средства Windows для обычных пользователей для добавления в автозагрузку
“Кнопка Пуск” -> “Все программы” -> в списке находим папку “Автозагрузка”
Если просто кликнуть по папке “Автозагрузка” – то развернется список программ (для данного пользователя), которые автоматически запускаются при входе пользователя в систему.
Для добавления своих вариантов автозагрузки нужен клик ПРАВОЙ клавишей мыши.
“Открыть” – откроется папка автозапуска программ для текущего пользователя – в данном случае Home. Добавляем сюда ярлык к нужной программе для автозапуска.
“Открыть общее для всех меню” – откроется папка для автозапуска для всех пользователей.
Тоже самое – только теперь для всех пользователей. Делаем ярлык к нужной программе (клик правой клавишей мышки).
Ярлык добавляем стандартно – клик правой клавишей мыши – “Создать” – “Ярлык”. Выбираем название (свое) и добавляем нужный файл с диска (через “Обзор”). В данном случае – добавляем bat-файл для старта виртуальной машины Windows XP для печати на старом принтере.
Читаем статьи:
Запуск VirtualBox в скрытом режиме
и
Печать на принтере Windows XP
Можно также добавить программы в автозапуск через правку реестра Windows – для опытных пользователей.
Добавление программ в автозагрузку через внесение изменений в реестр.
“Меню Пуск” – ищем regedit.exe – запускаем.
Можно отметить, что внеся изменения в реестр, мы можем творить всё что угодно.
Например, сменить расположение папки автозагрузки 🙂
Этот путь прописан в следующих разделах:«Common Startup»=«%ProgramData%MicrosoftWindowsStart MenuProgramsStartup»‐ для всех пользователей системы.
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders]
Например:
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders]“Startup”=”c:mystart” ‐ система загрузит все программы, ярлыки которых находятся в папке c:mystart, при этом папка “Автозагрузка” все так же будет отображаться в меню “Пуск”, а если у пользователя в ней ничего не было, то он и не заметит подмены.
Собственно автозагрузка хранится в следующих ветках реестра.
Для всех пользователей:
- [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun] ‐ программы, запускаемые при входе в систему. Запуск происходит для всех пользователей в системе.
- [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce]‐ программы, запускаемые только один раз при входе пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра.
Для текущего пользователя аналогично:
- [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun]‐ программы, которые запускаются при входе текущего пользователя в систему
- [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce]‐ программы, которые запускаются только один раз при входе текущего пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра.
Использование групповой политики для автозапуска.
“Меню Пуск” – ищем gpedit.msc – запускаем.
“Конфигурация компьютера ‐ Административные шаблоны ‐ Система” – переходим на пункт «Вход в систему». При этом в системном реестре в разделе
ВАЖНО: Данный пункт политики доступен в Конфигурации компьютера (для всех пользователей) и Конфигурации пользователя (для текущего пользователя – в реестре ключ будет в разделе HKEY_CURRENT_USER
ВАЖНО: Программы из этого списка не отображаются в списке программ, доступных для отключения в msconfig.exe, а также определяются не всеми менеджерами автозагрузки.
И да – там же в политиках – можно всё это дело отключить 🙂
Настраивается с помощью групповой политики: “Конфигурация компьютера ‐ Административные шаблоны ‐ Система – Вход в систему ‐ Не обрабатывать список однократного запуска программ».
В реестре создается следующий ключ:[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorer] “DisableLocalMachineRunOnce”=dword:00000001
Так же настраивается политика для текущих пользователей: “Конфигурация пользователя ‐ Административные шаблоны ‐ Система – Вход в систему ‐ Не обрабатывать список однократного запуска программ»
В реестре создается следующий ключ[HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorer] “DisableLocalUserRunOnce”=dword:00000001
Как посмотреть список программ, которые загружаются автоматически
Встроенные средства Windows:
- “Сведения о системе” (откройте “Пуск ‐ Все программы ‐ Стандартные ‐ Служебные ‐ Сведения о системе” или наберите msinfo32. exe в командной строке) и перейдя в пункт “Программная среда ‐ Автоматически загружаемые программы”. Программа “Свойства системы” отображает группы автозагрузки из реестра и папок “Автозагрузка”
- “Настройка системы” (для запуска наберите msconfig.exe из командной строки). Эта программа кроме просмотра списка автозагрузки предоставляет возможность отключения всех пунктов автозагрузки (вкладка “Общие”) или выборочных программ (вкладка “Автозагрузка”).
Внешние программы:
Есть хорошая старая программа Starter, скан ниже
Программа разработчиками уже не поддерживается, но все может (по крайней мере работает в Windows XP и Windows 7):
- показывает практически все
- можно легко добавлять автозапуск в различные ключи реестра
Сайт программы Starter. Скачать можно на просторах интернета.
Известная программа CCleaner
Добавлять свои программы нельзя – но можно выключить ранее установленную автозагрузку других программ.
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла
Почитать в разделе: Windows 7
- Всего статей в разделе: 16
- Показано статей в списке: 15
- Сортировка: название по алфавиту
Classic Shell
Крайне полезная бесплатная утилита, позволяющая настроить часть Windows 7 как Windows XP. Скачать можно на сайте разработчика www.classicshell.net Установка стандартная, ненужное (пункты IE9 & Update) можно отключить в меню при установке. После установки в папке Classc Shell мы увидим два основных файла для настройки Настройка «Проводника» выбираем «Показать все параметры» все настройки можно сохранить в отдельном файле итого — скан с сайта… (Читать полностью…)XPmode
XPmode — это такой хитрый костыль от MS в виде усеченной Windows XP SP3 для ее запуска в виртуальной машине Virtual PC (тоже усеченной) в среде Windows 7. Это дает возможность запускать внутри XPmode приложения для Windows XP и пользоваться этими приложениями из среды Windows 7. Т.е. программы, установленные внутри XPmode, видны из меню «Пуск» Windows 7 (за счет глубокой интеграции Virtual PC в Windows 7) Большой минус — перехват порта USB со стороны XPmode возможен в автоматическом режиме, если только есть драйвера устройства и для основной и для гостевой системы. Если нам необходимо, например, запустить принтер, который умеет работать только в Windows XP — переключение портов… (Читать полностью…)
Автоматическое завершение всех программ при выключении
При наличии работающих программ Windows не может завершить работу. Многие видели это сообщение. Пользователю предлагается вручную принудительно завершить работающие программы. Так сделано по умолчанию, что обезопасить пользователя от потери данных. Но это можно изменить! Идем в реестр regedit.exe Компьютер -> HKEY_CURRENT_USER -> Conrol Panel -> Desktop Необходимо добавить (если его там нет) строковый параметр AutoEndTasks и установить его значение в 1. Теперь Windows будет самостоятельно завершать все открытые программы перед выключением. Задержка перед автоматическим завершением программ в Windows 7 установлена на уровне 10000 миллисекунд. И это… (Читать полностью…)
Базовые установки Windows 7
Сразу после установки Windows 7 пользоваться можно — но неудобно. Необходимо настроить часть функций, что бы они работали так, как удобно пользователю, а не разработчика. Доступ ко всем базовым настройкам можно получить через GodMode. Включается достаточно просто — это просто папка со специальным служебным названием. Создаем папку и присваиваем ей название GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} Теперь по клику по этой папке Вы получаете весь список настроек. Можно создать такие папки (со специальными названиями) для отдельных настроек: Сводка Панели управления {ED7BA470-8E54-465E-825C-99712043E01C} Выбор расположения по… (Читать полностью…)
Вход без пароля Windows 7
Вход без пароля Windows 7. Некоторые пользователи не сразу поймут, что это. Они и так в систему заходят без логина и пароля (при установке одного пользователя). На самом деле вопрос звучит полностью так: «Настройка общего доступа без пароля Windows 7». В отличии от Windows XP, где было достаточно разрешить общий доступ к ресурсу, в Windows 7 настройки локальной сети запрещают подключение к общему ресурсу без установленного пароля. Пройдемся по этапам. Разрешение общего доступа к ресурсу Windows 7. — свойства — доступ — общий доступ даем всем Настройка параметров локальной сети Windows 7 Далее нужно открыть «Центр управления сетями и общим доступом»… (Читать полностью…)
Как отключить быструю смену пользователей?
Есть два пункта — «Смена пользователя» и «Выход из системы». Первый пункт позволяет при смене пользователя отставить предыдущего пользователя в «замороженном» состоянии. Да, быстро и удобно — но занимает ресурсы ПК. Хочется оставить только «Выйти из системы» Для чего это нужно? Экономим ресурсы системы, но не это главное. Есть часть программ, которые работают с одними и теми же данными для разных пользователей. Если мы оставили пользователя в «замороженном» виде, то попытка другого пользователя работать с этими же данными будет неудачной. Например, Запуск VirtualBox для нескольких пользователей В Windows XP все было просто: «Панель… (Читать полностью…)
Как перенести Windows 7 на другой диск
Существуют два основных варианта перенести установленную систему Windows 7 со всеми программами и настройками. 1-й способ. Правильный и медленный способ перенести Windows 7 на другой диск Идем на сайт MicroSoft и все делаем по инструкции. Вот здесь. 2-й способ. Неправильный и быстрый. Windows 7 находится на диске в двух первичных разделах: System Recovery — без буквы/с буквой — активный (там и находится загрузчик ОС) System — буква C: — собственно сама операционная система Используем любую программу, которая умеет копировать разделы — AOMEI / Paragon / Acronic и т.д. Далее по этапам. Этап 1 копируем посекторно (именно по секторам) два нужных нам раздела на другой… (Читать полностью…)
Как скрыть диск в Проводнике в Windows 7
Будем прятать диск от пользователя Прячем диск от всех пользователей Через любую программу управления разделами убираем букву у диска Так, собственно, сделано для раздела диска System Recovery, где находится загрузчик Прячем диск через редактор групповой политики Запускаем gpedit. msc (доступен в редакциях «Профессиональная» и выше) «Конфигурация пользователя — Административные шаблоны — Компоненты Windows — Проводник Windows» Включаем параметр «Скрыть выбранные диски из окна «Мой компьютер», выбираем диск. Готово. Прячем диск через редактирование… (Читать полностью…)
Как скрыть пользователя в системе?
В базовом функционале Windows 7 пользователя можно только удалить, возможности скрыть нет. Вот создали пользователя Super — и мы можем его только удалить. На самом деле просто в графическом интерфейсе этого нет, а само скрытие пользователя предусмотрено. Будем редактировать реестр. Идем в HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon и создаем внутри 2 новых раздела (правая кнопка мыши). В качестве имени раздела указываем SpecialAccounts, затем внутри этого раздела создаем раздел UserList. Создаем Параметр DWORD в названии которого указываем имя учетной записи «ненужного» пользователя (в нашем случае Super). Все — теперь пользователя… (Читать полностью…)
Как соотнести аудиоустройство и программу в Windows 7?
На самом деле жесткий вопрос. Если у нас только одно аудиоустройство «по умолчанию» — то проблем нет, любая программа будем им пользоваться. А если у нас есть еще и наушники? Если у нас Windows 10 — то не сложно — возможность привязать аудиоустройство к программе есть в базовых настройках. А вот для Windows 7? Практически стандартная ситуация: есть ноутбук с динамиками и микрофоном и есть внешние наушники (например через USB). Простая хотелка = весь основной аудипоток идет через динамики, а например послушать музыку или поговорить через мессенджер — нужны наушники. Простой вариант 1. У программы есть возможность выбрать аудиоустройство в своих… (Читать полностью…)
Как удалить Skype из панели задач Windows 7?
При работе в Windows 7 программа Skype всегда остается на панели задач. Закрыть ее крестиком или сочетанием Alt+F4 невозможно. Как от этого избавиться? И зачем это сделано? На второй вопрос нет ответа. Для решения первого вопроса есть два варианта. В настройках Skype убираем лишнюю галочку (выделено красным) Или заходим в свойства ярлыка Skype на рабочем столе и выбираем режим совместимости с Windows XP (тоже выделено красными цветом) И всё — как и положено, Skype будет тихо сидеть в… (Читать полностью…)
Мультизагрузка Windows
Есть возможность использовать две базовые схемы мультизагрузки : зависимая мультизагрузка (загрузка всех систем зависит от одного загрузчика) независимая мультизагрузка (все системы и их загрузчики изолированы друг от друга) Зависимая схема загрузки ОС Windows Тут всё просто — устанавливаем все системы подряд, начиная от младшей — к старшей Windows XP Windows 7 Windows 8 Windows 10 Помним, что в MBR могут быть только 4 первичных раздела (или три первичных и один расширенный, где можно создавать логические диски). Поэтому крайне желательно устанавливать операционные системы на разные диски (тем более что первичных разделов не хватит). Почему так… (Читать полностью…)
Процесс svchost.exe в Windows 7 грузит систему
Процесс svchost.exe в Wiundows 7 грузит систему (забирает или память или ресурсы процессора) Смотрим в диспетчере задач (галочка «показать процессы всех пользователей») Действительно, нехорошо, 1,5 Гига просто так забрано и 25% работы процессора. Это Windows 7 пытается типа ускорить работу системы с помощью функции Prefetch (папка с таким названием есть в Windows). Если ее удалить и перезагрузиться — все придет в норму, но не надолго. Что такое папка Prefetch Папка Prefetch расположена в системной папке Windows и используется для ускорения загрузки операционной системы и запуска программ. При запуске компьютера Windows отслеживает процесс загрузки. После этого полученная… (Читать полностью…)
Центр обновления Windows
Знакомая картинка после установки Windows — отключаем центр обновления 🙂 Тем не менее — некоторые важные обновления безопасности поставить надо. Для ручной установки обновлений их необходимо скачать с сервера MS и проверить, чтобы была включена служба Центра обновлений (после окончания процедуры её можно выключить). Все текущие установленные обновления можно увидеть в разделе «Программы и компоненты» Защищаем ПК от шифровальщика WannaCry (ВАЖНО!) Обновление от 15 мая 2017… (Читать полностью…)
Экран при загрузке Windows 7 смещен влево
Есть такая проблема — экран при загрузке Windows 7 смещен влево скан ниже: — при POST все нормально (при старте BIOS), — при передаче загрузки Windows 7 экран смещается влево — после подключения драйверов видеокарты все становится нормальным Обычно это случается при: — использовании видеокарты AMD — монитора 3:4 Если внимательно посмотреть на предыдущие пункты, то отпадает проблема в BIOS и в драйверах. Ответ очевиден — это ошибка BIOS видеокарты, причем AMD. Что можно сделать: Вариант 1 — установить фирменный драйвер на монитор (что бы он сообщил видекарте о своих параметрах) — иногда на старые мониторы есть только для XP Вариант 2 — отключить в настройках… (Читать полностью…)
Приветствую читателя! В сегодняшнем материале разберем такой момент, как отключение автозапуска программ в операционной системе Windows 7. В ней настройка автоматической загрузки программ имеет привычный и простой вид.
Для чего необходимо отключать программы в автозапуске? Дело в том, что многие программы и службы стартуют вместе с включением компьютера. Одни из них являются неотъемлемой частью работы системы, другие включаются в фоновом режиме. Обнаружить их можно в правом нижнем углу монитора, где расположены часы.
И все бы ничего, но чем больше программ попадают в режим автозагрузки, тем больше уходит времени на запуск системы. Это, в свою очередь, влияет на быстродействие. Со временем компьютер начинает тормозить. Лишние программы можно отключать, или вовсе нужно удалить.
Помните, при отключении программ нужно точно знать, что именно вы хотите убрать. Влияет ли отключаемая программа на работу системы? В противном случае можно отменить службу, без которой система не сможет стабильно работать.
Как отключать автозапуск программ на Windows 7?
Самый комфортный и популярный способ отключения Автозапуска программ в «семерке» – это вход через кнопку «Пуск» в меню «Автозагрузка». Там в папке отображаются установленные программы, которые стартуют вместе с операционной системой.
Если вы там обнаружили ярлыки программ, запуск которых, не столь необходим, то они просто удаляются традиционным способом в корзину. Наоборот — поместили ярлык в эту папку — теперь программа стартует с Windows. На мой взгляд удобно.
Второй вариант – можно вызвать специальную утилиту windows MSConfig. Запускается она через командную строку, можно через меню «Пуск»
Как убрать автозапуск программ на Windows 7 через командную строку?
Вызвать этот настройщик можно следующим образом. Нажимаем кнопку «Пуск» и в строке «поиск» вводим команду msconfig. Сочетание клавиш Win+R вызывает тоже меню «Выполнить»:
Нажимаем клавишу «Enter» и запустится сама утилита, в которой необходимо выбрать вкладку «Автозагрузка»:
В открывшемся окне ставим галочки на все программы, которые по нашему мнению не нужны. После нажимаем ОК. Компьютер предложит перезагрузиться. Выполняем. Всё, программы изъяты из автозагрузки, при этом мы их не удаляем. Можно вернуть на место все при случае.
В одной из статей уже было подробнее рассказано, как ускорить запуск и работу компьютера в том числе с помощью msconfig. Однако данная утилита не совсем наглядна, а потому для управлением автозагрузкой еще дополнительно используется различный сторонний софт.
Программы для управления автозагрузкой
Существует множество самых различных программ. Но здесь мне хотелось бы выделить две. Первая специально предназначена для работы с системой и называется Autoruns. Находим русскую версию и скачиваем. Она не является установочной. Открыв программу увидим следующее окно:
В этом окне необходима вкладка «Все», где показаны именно все программы. Остальные вкладки показывают тоже самое, но по категориям. Убираем галочку с ненужных программ и все. Они отключены.
Как видите, все достаточно просто, подробно и наглядно. Можно отключать ненужное. Вторая программа – бесплатная утилита Ccleaner. Она предназначена не только для чистки реестра, но и для некоторых других операций. При установке программы не торопитесь — вам будут предлагать установить Avast антивирус, который потом бывает трудно удалить. Не забудьте снять галочку!
В частности, войдя в программу и выбрав меню «Сервис», а далее «Автозагрузка», мы попадем во вкладку, где будут перечислены программы, которые стартуют с Windows.
Как видите, все достаточно просто. Можно включать и выключать нужные программы.
Эти простые способы вам обязательно помогут. Удачи!
Главная » Уроки и статьи » Windows
Надоело каждый раз после включения компьютера запускать одни и те же программы? В этой статье я подробно покажу и расскажу, как сделать так, чтобы нужные Вам утилиты запускались автоматически после загрузки операционной системы. А для этого нужно добавить их в автозагрузку Windows.
Добавление программы в автозапуск Windows 7, Vista и XP
1. Откройте меню «Пуск».
2. Нажмите «Все программы».
3. В открывшемся списке ярлыков и папок найдите папку с названием «Автозагрузка», щелкните по ней правой кнопкой мыши и выберите «Открыть».
4. Далее, чтобы добавить программы в автозапуск Windows нужно скопировать ярлыки выбранных Вами программ и вставить в эту папку.
Добавление программ в автозагрузку Windows 8 и 10
1. Скопируйте и вставьте ниже представленный путь в проводник или перейдите по этому пути вручную.
Примечание: В моем примере «LINCHAKIN» это имя пользователя компьютера. Вы должны заменить его своим.
C:UsersLINCHAKINAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
Примечание: Если Вы решили пойти по пути выше вручную, и не видите папки AppData, то Вам нужно включить отображение скрытых файлов и папок. Также, некоторые папки могут называться по-русски.
Также окно автозагрузки можно открыть, нажав сочетание клавишWin+R и в появившемся окне, в поле открыть, введя:
shell:startup
Затем нажмите ОК.
2. После того как окно автозагрузки будет открыто, найдите ярлык нужной программы и скопируйте его в эту папку. И Ваша программа будет добавлена в автозапуск.
На этом все, теперь Ваши программы будут запускаться сразу же после загрузки Windows.
Совет: Не рекомендуем добавлять больше одной-двух программ в автозагрузку, если у Вас слабый компьютер. Так как он станет еще дольше «собираться с мыслями» после включения.
Дата: 22.09.2015Автор/Переводчик: Linchak
Используемые источники:
- https://comphome.ru/windows-7/kak-dobavit-programmu-v-avtozagruzku-windows-7.html
- https://fast-wolker.ru/kak-ubrat-avtozapusk-programm-v-windows-7-pri-vklyuchenii-kompyutera.html
- https://linchakin.com/posts/post/287/
Автоматический запуск раздачи Wi-Fi при включении ноутбука
Эта статья будет полезна всем, кто раздает Wi-Fi со своих ноутбуков, или стационарных компьютеров. Если вы запускаете виртуальную сеть командой через командную строку, то наверное знаете, что после каждой перезагрузки ноутбука (выключения и включения), нужно заново заходить в командную строку, и выполнять соответствующую команду. Только после этого, ноутбук начинает раздавать Wi-Fi.
Даже, если вы настроили точку доступа через какую-то программу, то все ровно нужно запускать эту программу, и затем запускать виртуальную сеть. Это не всегда удобно. Особенно, если вы часто пользуетесь этой функцией. Намного удобнее, когда точка доступа будет запускаться автоматически, сразу после запуска Windows. Как это сделать, я сейчас покажу и все подробно объясню.
В одной из статей по настройке точки доступа Wi-Fi на ноутбуке, я рассказывал о том, как создать .bat файлы для запуска и остановки виртуальной Wi-Fi сети. Так вот, мы точно так же создадим .bat с командой запуска сети, и просто добавим его в автозагрузку. При включении компьютера, он автоматически будет запускаться, и выполнять команду. После чего, ноутбук будет раздавать интернет без вашего участия. Задача понятна, поехали!
Обновление: способ, который описан в этой статье подходит только для запуска точки доступа через командную строку. Если вы пользуетесь функций Мобильный хот-спот в Windows 10, то настроить автозапуск хот-спот можно по этой инструкции.Создаем .bat файл для запуска точки доступа Wi-Fi на ноутбуке
Этот способ подойдет для Windows 10, Windows 8 (8.1), и Windows 7.
Перед тем, как создавать такой файл, у вас должна быть настроена точка доступа. Как это сделать, я писал в инструкциях:
Только после того, как все получится запустить вручную, и компьютер будет раздавать интернет, есть смысл создавать файл для автозагрузки.
На рабочем столе, нажмите правой кнопкой мыши на пустую область, и выберите пункт «Создать» – «Текстовый документ».
Переименуйте файл в start_wifi.bat. Название может быть любым (английскими буквами), главное, что бы расширение было .bat. После переименования, файл должен стать другим.
Если не получается, возможно, у вас отключено отображение расширения файлов. Как это исправить, читайте здесь.После этого, нажмите на файл правой кнопкой мыши, и выберите «Изменить».
Откроется обычный блокнот. Вставьте в него команду:
netsh wlan start hostednetwork
Нажмите на пункт «Файл» – «Сохранить», или просто закройте файл и подтвердите сохранение изменений.
Все, наш файл готов. Теперь, если его запустить, запустится виртуальная Wi-Fi сеть. Что бы этот файл автоматически запускался при включении компьютера, нам нужно добавить его в автозагрузку. Что мы сейчас и сделаем.
Если нужно, можете создать такой же файл для остановки раздачи Wi-Fi. Все точно так же, только команда будет другая: netsh wlan stop hostednetwork.
Добавляем .bat файл в автозагрузку Windows 10 для автоматического запуска виртуальной Wi-Fi сети
Нам нужно сам .bat файл скопировать в папку автозагрузки. Что бы быстро открыть эту папку в Windows 10, нажмите сочетание клавиш Win+R, введите в окне «Выполнить» команду shell:startup, и нажмите Ok.
Откроется папка автозагрузки, в которую нам нужно скопировать наш .bat файл.
Перезагружаем компьютера, и наслаждаемся результатом. Сразу после загрузки Windows, вы заметите как появится, и быстро исчезнет окно командной строки. Это значит, что точка доступа запущена.
Автоматический запуск точки доступа в Windows 7
В Windows 7, папку «Автозагрузка» (Startup) можно найти в меню «Пуск» – «Все программы».
Открываем папку, и копируем в нее наш .bat файл.
Все готово. Что бы убрать файл из автозагрузки, просто удалите его.
Автозапуск QUIK | Автоматизация
Написал Иван, 21 Сентябрь, 2009Не все знают, что QUIK умеет восстанавливать связь автоматически при обрыве соединения. А ведь это, возможно, самая необходимая функция терминала. Особенно, когда за вас торгует механическая торговая система, а вас нет рядом.
Данная возможность включается через меню Связь -> Доступные соединения. Ничего сложного нет. Ставим галочки и терминал будет поддерживать связь с сервером автоматически, целый день.
Важным остаётся вопрос автозапуска самого терминала QUIK.
К сожалению, невозможно запустить терминал из командной строки с параметрами типа -login, -password. Задача сводилась бы к созданию простого ярлыка и помещению его в Автозапуск или Шедулер, чтобы первый запуск состоялся без нашей помощи.
Всё ещё кто-то должен вводить Логин и Пароль.
На счастье автоматизаторов существует утилита AutoHotkey, способная запускать приложения и эмулировать нажатия клавиш. А это как раз то, что нам всем нужно.
Идём на официальный сайт (здесь по-русски), скачиваем программу, устанавливаем и начинаем писать скрипт автозапуска терминала QUIK.
Для начала создадим файл с расширением .ahk, например quik.ahk.
Запишем и сохраним несколько строк.
Что делаем.
1. Запускаем окно командной строки cmd.exe, путь с нашим терминалом QUIK.
2. Ждем 3 секунды. Можно не ждать. Чисто для визуализации процесса.
3. Запускаем терминал QUIK. Точнее сказать, утилита сама наберёт в командной строке info.exe и нажмет Enter.
Эти три строки, как будто бы, можно заменить всего одной:
Run, «C:\quik\info.exe»
Но лично у меня Квик в этом случае загружается нулевой, т.е. без всех таблиц и загруженных до этого роботов. Не знаю с чем это связано, поэтому запускаю терминал из командной строки.
4. Ждем 60 секунд пока загружается Квик.
5. Активируем окно для ввода Логина и Пароля. Вдруг оно стало неактивным во время загрузки.
6. Вводим Логин (Имя пользователя), жмём Tab (перескакиваем на следующую строку).
7. Вводим Пароль, жмём Enter.
Понятно, что пункты 6 и 7 можно объединить в один:
Send Login{Tab}Password{Enter}
Теперь при запуске этого скрипта будет происходить запуск терминала QUIK и ввод Логина/Пароля без вашего участия.
Если вы способны самостоятельно запустить терминал, то первые три строки вообще не нужны. Программе просто останется ввести за вас Логин и Пароль.
Теперь осталось поместить наш скрипт в Шедулер (Scheduler Tasks, Диспетчер задач), чтобы он запускался в необходимое для нас время перед открытием рынка. Как это сделать можно поискать в сети.
Есть два пути запуска скрипта.
Первый — скомпилировать в исполняемый exe-файл с помощью программки Ahk2Exe.exe (находится в папке Compiler).
Второй — создать ярлык и запускать его.
Вот и все телодвижения для создания автоматизированного запуска терминала QUIK.
Скачать скрипт автозапуска QUIK.
Всем бесперебойной работы!
я хочу узнать из-за этой програмы я не могу установить игру почему? | |
Файл командной строки Windows. Располагается, как правило в %windir%\system32\cmd.exe. 65 | |
очень сильно загружает процессор…:( alexey | |
знаю одно, мешает работать и заваливает флешки не нужными папками, просто чушь какая-то Владимир | |
постоянно выскакивает на рабочий стол Михаил | |
загружает процессор до 100% | |
около ста процессов cmd.exe грузит процессор. | |
если процес cmd.exe сильно грузмт процесор попоробуйте убить процес и обратите внимание не появляеться ли после остановки процеса cmd.exe процесы типа ntv.exe или dtv.exe, если они есть — это очень не хороший вирус.. в силу того что я лентяй лечить даже не пытался — переустановил систему и прошерстил бесплатным авастом — всё гуд:) Yaan | |
очень загружает процессор. при отключении проц разгружается, на работе компьютера отключение никак не отражается Эдвард | |
знаю одно точно он убивает процесор Руслан | |
можно остановить процес в диспетчере задач но при другом включении снова появится руслан | |
При вкл.компьютера открывается окно с ошибкой загрузки этого файла. Сергей | |
Если у вас появился вирус, маскирующийся под процесс командной строки (cmd.exe), попробуйте скачать программу CCleaner (ТОЛЬКО бесплатную версию и ТОЛЬКО с официального сайта piriform.com), слева пункт «сервис», в нём подпункт «автозагрузка». Удаляете все подозрительные пункты типа cmd.exe (не рекомендую удалять ctfmon.exe, т.к. он отвечает за языковую панель и всё, что связано с языковыми настройками), потом проверяете им же на наличие ошибок. После этого перезагружаете компьютер. Если не поможет, то попробуйте установить программу unlocker, найдите в проводнике этот файл и с помощью этой программы удалите, а после скачайте оригинальную версию программы cmd.exe (командной строки) и сохраните в ту же самую папку, откуда только что удалили и снова перезагрузите компьютер. Если вместо вируса теперь открывается командная строка, то всё в порядке (она закрывается крестиком в верхнем правом углу 🙂 ), если же вирус продолжает вам надоедать, то тут уж только переустановка windows или восстановление реестра… k1-801 | |
Народ, тут такое дело. У меня этот же файл загружал от 30 до 70% процессорного времени. Я через msconfig нашел в автозагрузке файл Chew7hall(это активатор Винды), отключил его и после перезагрузки cmd.exe даже не было в диспетчере. Соответственно и нагрузка на процессор упала. Это я все к чему — проверьте свою автозагрузку и удалите из нее всякий ненужный хлам… Ну а если уж это вирус, то соответственные антивирусные приложения вам в помощь. Удачи! Аква | |
Если у вас появился вирус, маскирующийся под процесс командной строки (cmd.exe), попробуйте скачать программу CCleaner (ТОЛЬКО бесплатную версию и ТОЛЬКО с официального сайта piriform.com), слева пункт «сервис», в нём подпункт «автозагрузка». Удаляете все подозрительные пункты типа cmd.exe (не рекомендую удалять ctfmon.exe, т.к. он отвечает за языковую панель и всё, что связано с языковыми настройками), потом проверяете им же на наличие ошибок. После этого перезагружаете компьютер. Если не поможет, то попробуйте установить программу unlocker, найдите в проводнике этот файл и с помощью этой программы удалите, а после скачайте оригинальную версию программы cmd.exe (командной строки) и сохраните в ту же самую папку, откуда только что удалили и снова перезагрузите компьютер. Если вместо вируса теперь открывается командная строка, то всё в порядке (она закрывается крестиком в верхнем правом углу 🙂 ), если же вирус продолжает вам надоедать, то тут уж только переустановка windows или восстановление реестра… k1-801 | |
Народ, тут такое дело. У меня этот же файл загружал от 30 до 70% процессорного времени. Я через msconfig нашел в автозагрузке файл Chew7hall(это активатор Винды), отключил его и после перезагрузки cmd.exe даже не было в диспетчере. Соответственно и нагрузка на процессор упала. Это я все к чему — проверьте свою автозагрузку и удалите из нее всякий ненужный хлам… Ну а если уж это вирус, то соответственные антивирусные приложения вам в помощь. Удачи! Аква | |
При появлении этого вируса, срочно протестировать весь компьютер антивирусом (некоторые утверждают, что можно просто удалить этот вирус, но я им не верю), если не поможет — попробовать переустановить систему. Piga | |
У меня из за нее в контакт не заходит!!!! Рокс | |
После сканирования авастом нашлось множество троянов. После перезагрузки комп просто не запускается полностью, после выбора пользователя он сохраняет данные и готовится к выключению и все по кругу ( когда выкл комп появляется вот эта же ошибка, до сканирования ее не было Дима | |
У меня на компе баннер, я успел его убрать но осталась командная строка с названием C:\Windows\System32\cmd.exe что делать с ним? валерий | |
Chew7hall(это активатор Винды) отключить в диспетчере задач | |
Совершенно верно он появляется при активации не лицензии Михаил | |
Тем у кого cmd.exe жрет ресурсы посвящается. Я Вам ответственно заявляю, у Вас пиратская винда и потому cmd.exe есть следствие деятельности столь же пиратского активатора (он же Chew7). Проблема решается следующим образом: Жмем Пуск — в окне «найти программы и файлы» пишем msconfig — жмем Ввод — вкладка Автозагрузка — снимаем галку с Chew7hallе — Применить — Ок -Перезагружаемся. Проверьте, если все верно, то Диспетчер задач во вкладке Быстродействие более не покажет Вам большой загруженности процессора. Удачи. Вячеслав | |
люди помогите пожалуйста. у меня браузер мозилла файфокс 18.0 и при включении компа вылазит черное окошко cmd.exe в котором написана ссылка на какой то сайт woodportent, окошко само закрывается через пару секунд,а потом автоматически включается браузер и переходит на эту ссылку. это бесит. как убрать? может удалить этот смд? Sky | |
подскажите пожалуста как можно удалить cmd? пробывал разными способами система не даёт Виталий | |
С помощю програмы Auslogics BoostSpeed открить автозагрузку и удалить от туда хост-файл от Microsoft, перезагрузить ПК и наслождаться нормальной роботой ОС (никакие антивируси и скани его необнаружат, даже не теряйте на них время и нервы) Виталий | |
Если у вас появился вирус, маскирующийся под процесс командной строки. Если у вас появился вирус, маскирующийся под процесс командной строки. Если у вас появился вирус, маскирую | |
это обычный интерпритатор командной строки(аналог bash в linux) sova | |
Пуск/Панель задач/Назначиные задачи/Удалить-_-(если есть) леонид | |
Вячеслав! Респект и уважуха! Коротко, ясно и помогло! А остальное все чес Вадим | |
У меня при включении запустился. Не закрывается. Я открыла Chrome, посмотрела в диспетчер задач… а вместо одного процесса chrome.exe *32 их СЕМЬ. Процесса cmd.exe не нашла. Закрыла все эти хромы, запустила браузер заново. Та же история. Антивируса на компьютере нет, никак не удосужимся приобрести. Алина | |
у меня постоянно при установке любой игры вылазит этот cmd.exe и проводит очень долгую проверку файлов которые я устанавливаю! Процессор грузит на 1-20%, но лаги песда( xKoSx | |
расположение cmd.exe — %WinDir%\System32\cmd.exe, %SystemDir\System32\cmd.exe или — C:\Windows\System32\cmd.exe Данил Загребалов | |
у меня после включения компа выходит C windows system32 cmd.exe помогите это убрать азиз турусбаев | |
А если у меня не находит путь к етой програмы и я потому не могу распаковать файл. Что мне делать? kolya | |
У меня пишет. Устройство не готово, возможно, открыта дверца человечек | |
Из-за этого сmd.exe я не могу переустановить ОС. Ксения | |
cmd.exe — это командная строка. Странно, что она у вас стоит в автозагрузке, уберите ее оттуда. В командной строке наберите msconfig.exe, затем идете в закладку Автозагрузка и убирайте галочку напротив cmd.exe. Но еще возможно, что у вас стартует какой-то процесс по планировщику и некорректно отрабатывает и поэтому и остается не закрытым. Проверьте все задания в планировщике. думаю не стоит делать из мухи слона | |
Спасибо Вячеславу огромное. Сделал как он сказал. Все стало норм. Максим | |
Ошибка: Не удается найти процесс «4624». C:\Users\HOME\AppData\Local\Temp (ping 127.0.0.1 -n 2 -w 500 & del /q /f C:\Us ers\HOME\AppData\Local\Temp\AF42TM~1.EXE & if not exist C:\Users\HOME\AppData\ Local\Temp\AF42TM~1.EXE (exit ) ) Обмен пакетами с 127.0.0.1 по с 32 байтами данных: Ответ от 127.0.0.1: число байт=32 время 1мс TTL=128 Александр | |
cmd.exe очень важная программа для Windows он обрабатывает данные нужне для Windows Oleg |
Автозапуск приложений в среде Windows PE и оболочка. | SafeZone
Как уже все заметили при загрузке с образа диска, созданного таким или таким способом, сначала запускается окно командной строки, а затем открывается uVS.Как такое происходит? и Зачем это нужно?
Автозапуск в среде предустановки можно выполнить двумя способами, но оба они неудобны, если мы хотим организовать программную оболочку вроде explorer.
Что это за способы?
***
Первый способ это редактирование файла startnet.cmd на этапе, когда wim-образ уже смонтирован и настроен, но еще не отключен командой:
Dism /Unmount-Wim /MountDir:<Путь к директории со смонтированным образом> /Commit
Подробнее о монтировании образа и его настройке читайте в этой статье.
Данный файл расположен по следующему пути:
<Путь к директории со смонтированным образом>\Windows\system32\
и в чистом виде содержит всего одну обязательную строку:
Команда wpeinit является обязательной поскольку ее назначением является инициализация системы Windows PE при каждой загрузке.
Отредактировав файл startnet.cmd, можно сделать так, чтобы после выполнения инициализации запускалась необходимая нам программа, например:
wpeinit
%SYSTEMDRIVE%\uvs\FAR\Far.exe
здесь будет запущен файловый менеджер Far, входящий в набор uVS_Pack.
При закрытии окна командной строки, произойдет автоматическая перезагрузка компьютера.
***
Второй способ — это редактирование файла Winpeshl.ini, который находится в той же директории, что и файл startnet.cmd. По краткой инструкции — задумка прекрасная, но к сожалению из-за каких-то ошибок она работает не так, как мы это себе представляем. И отличие только в том, что приложения выполняются по очереди, а по закрытию последнего выполняется автоматическая перезагрузка. Поэтому в свое время я написал маленькую программку, задачей, которой является:
- Запуск определенного командного файла, в котором мы можем прописать все приложения, которые будут запускаться в начале загрузки оболочки. В нашем случае это файл, который будет располагаться по следующему пути:
<Путь к директории со смонтированным образом>\explorer\autorun.cmd
и по умолчанию файл должен иметь только одну уже знакомую нам строку: - После окончания выполнения всех команд из файла autorun.cmd (В нем можно прописать практически что угодно, будь то твики реестра или создание директорий), будет запущен файл располагающийся по пути:
<Путь к директории со смонтированным образом>\explorer\explorer.exe
, который и является оболочкой — это может быть BS explorer или Nu2Menu — исполняемый файл должен быть переименован в explorer.exe, а конфигурационные файлы приложения, использующегося в качестве оболочки, должны быть отредактированы. - Затем программа остается висеть в памяти и ждать пока процесс explorer.exe не будет завершен — после чего произойдет все та же автоматическая перезагрузка.
Данная программка написана на языке AutoIt и имеет такой код: Спойлер: Код
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Severnyj
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#NoTrayIcon
[email protected]
$SystemDrive=Stringleft($System32Dir,2)
If FileExists($SystemDrive & "\explorer\autorun.cmd") <> 1 Then
$deadfile = " Отсутствует необходимый файл: " & $SystemDrive & "\explorer\autorun.cmd"
MsgBox(4096, "Внимание!", "Работа программы завершается " & $deadfile)
_END ()
EndIf
If FileExists($SystemDrive & "\explorer\explorer.exe") <> 1 Then
$deadfile = " Отсутствует необходимый файл: " & $SystemDrive & "\explorer\explorer.exe"
MsgBox(4096, "Внимание!", "Работа программы завершается " & $deadfile)
_END ()
EndIf
SplashTextOn("Пожалуйста подождите...", "Инициализация системы...",200,80)
WinActivate("Пожалуйста подождите...", "")
RunWait($SystemDrive & "\explorer\autorun.cmd")
SplashOff()
SplashTextOn("Пожалуйста подождите...", "Запуск оболочки...",200,80)
WinActivate("Пожалуйста подождите...", "")
Run($SystemDrive & "\explorer\explorer.exe")
SplashOff()
ProcessWaitClose("explorer.exe")
_END ()
Func _END ()
Shutdown(2)
Exit
EndFunc
Готовая скомпиллированная версия прикреплена к сообщению.
Запускать мы ее будем в среде предустановки путем автозагрузки редактированием файла WinPeshl.ini:
[LaunchApp]
AppPath = %SYSTEMDRIVE%\<путь>\launcher.exe
[LaunchApps]
Так при запуске Windows PE будет запущен наш автозагрузчик, который выполнит описанные выше операции.
Как запустить приложение при запуске в Linux
Статья обновлена на 29 мар 2021
Подписаться на обновления этой статьи
В этой статье описывается, как автоматически запускать приложение во время или после загрузки компьютера Apalis, Colibri и Verdin на модулях под управлением Embedded Linux.
На TorizonCore приложения упакованы в контейнеры.Контейнеры запускаются движком контейнеров, которым в нашем случае является Docker.
Docker уже настроен на автозапуск, и для запуска ваших приложений при загрузке в TorizonCore вы должны описать, какие контейнеры использовать и как их вызывать. Ознакомьтесь с нашим содержанием о шагах по автоматическому запуску контейнера с помощью TorizonCore в разделе Запуск и управление контейнерами Docker на Torizon.
Для наших справочных изображений для Yocto Project вы можете следовать любой из тем, описанных ниже, чтобы уделить внимание вашему проекту или потребностям варианта использования.
Начиная с версии 2.x нашего Linux BSP, мы используем systemd в качестве нашего инициатора и диспетчера служб.
Systemd — это системный и сервисный менеджер для Linux, также способный заменить традиционную систему инициализации SysV . Вы можете прочитать его руководство здесь.
Конфигурация модуля — это файл, имя которого заканчивается на .service , и он кодирует информацию о процессе, который контролируется и контролируется systemd . Служебные файлы можно найти в / etc / systemd / system /
, а для распространения — в / lib / systemd / system /
.
Вы можете включать, отключать, запускать, останавливать и проверять статус служб с помощью команды systemctl .
Общие элементы конфигурации настраиваются в общих разделах [Unit] и [Install] .
Параметры конфигурации для конкретных служб настраиваются в разделе [Служба] .
Файлы службыдолжны включать раздел [Служба] , в котором содержится информация о службе и процессе, который она контролирует.
Для получения дополнительной информации о возможных вариантах раздела [Сервис] обратитесь к документации.
Процедура
Создайте файл конфигурации устройства, заканчивающийся на .service
Скопируйте файл конфигурации устройства в / etc / systemd / system
и используйте инструмент systemctl для включения и запуска службы.
Использование команды systemctl
Согласно документации SystemD, вам необходимо перезагрузить конфигурацию systemd после добавления или изменения любых файлов модулей:
# systemctl --system daemon-reload
Чтобы проверить статус службы или запустить и остановить службу, которая действует до следующей перезагрузки, вы можете использовать следующие команды:
# systemctl status <имя_службы>.услуга
# systemctl start <имя_службы> .service
# systemctl stop .service
Чтобы добавить службу или удалить ее из списка служб, запускаемых при загрузке. Примечание: Это не запускает и не останавливает службу, но действует только во время следующей загрузки
# systemctl enable <имя_службы> .service
# systemctl disable .service
Вот пример файла конфигурации устройства для автоматического выполнения (гипотетического) приложения mydatalogger при запуске:
mydatalogger.сервис
[Единица] Описание = служба mydatalogger, собирает и регистрирует данные в фоновом режиме После = multi-user.target [Услуга] Тип = простой ExecStart = / usr / bin / mydatalogger [Установить] WantedBy = multi-user.target
/ и т. Д. / Профиль
Каждый раз, когда запускается оболочка входа, выполняется сценарий / etc / profile плюс все сценарии в /etc/profile.d
.
Это делается для входа в систему через консоль с последовательным интерфейсом , через соединение ssh , а также для входа в диспетчер дисплея на графический рабочий стол.
/ etc / profile загружается при входе в систему: он устанавливает среду при входе в систему и параметры приложения, используя источник любого читаемого файла в /etc/profile.d/
.
Использование / etc / profile хорошо подходит для настройки среды или для выполнения некоторых небольших задач.
Обратите внимание, что эти сценарии должны вернуть управление, чтобы продолжить вход в систему.
Удалите файл в /etc/profile.d
или дополнения к / etc / profile , чтобы отменить автоматическое выполнение.
Процедура
Чтобы загружать сценарий оболочки при каждом входе в систему, вам просто нужно добавить файл сценария в /etc/profile.d/
.
Помните, что сценарий оболочки должен иметь расширение * .sh .
Ниже приведен пример файла сценария для удаления резервных записей:
remove_backup.sh
#! / Bin / sh rm / домой / корень / * ~
Weston Desktop
В более поздней версии Toradex Linux BSP 5 использовался графический композитор Weston / Wayland вместо X11, который использовался до нашего BSP 3.0.
Имейте в виду, что Wayland — это протокол, Weston — это графический редактор, который реализует протокол Wayland. Вы можете прочитать об этом на странице Wayland.
Любое графическое приложение, разработанное для X11, также должно работать, поскольку композитор Weston настроен на работу в режиме совместимости XWayleand, который позволяет клиентам X11.
Тем не менее, чтобы вы могли создать графическое приложение, которое автоматически запускается при загрузке системы, это приложение должно запускаться после службы Weston.
Пример графического приложения Wayland, которое автоматически запускается при загрузке, представлен ниже.
wayland-app-launch.service
[Unit] Описание = Запустить приложение Wayland [email protected] [email protected] [Услуга] Перезагрузка = при сбое Тип = разветвление ExecStart = / usr / bin / wayland-app-launch.sh RestartSec = 1 [Установить] WantedBy = multi-user.target
Как видите, эта служба вызывает сценарий для выполнения.Это потому, что необходимо проверить, установлена ли переменная среды XDG_RUNTIME_DIR
, а если нет, мы должны ее установить.
Weston будет использовать XDG_RUNTIME_DIR
для оконного контекста.
Также рекомендуется соответствующим образом экспортировать переменную DISPLAY. См. Ниже:
wayland-app-launch.sh
#! / Bin / sh если тест -z "$ XDG_RUNTIME_DIR"; тогда экспорт XDG_RUNTIME_DIR = / run / user / `id -u` если ! test -d "$ XDG_RUNTIME_DIR"; тогда mkdir --parents $ XDG_RUNTIME_DIR chmod 0700 $ XDG_RUNTIME_DIR фи фи # жди вестона в то время как [ ! -e $ XDG_RUNTIME_DIR / wayland-0]; сплю 0.1; сделано спать 1 экспорт ДИСПЛЕЙ =: 0,0 / путь / к / приложению и
Как со службой, так и со сценарием ваше приложение Wayland будет автоматически запускаться при загрузке.
Yocto Project / OpenEmbedded
Мы подготовили сценарии для автозапуска вашего приложения в Wayland / Weston при запуске прямо из сборки Yocto Project / OpenEmbedded. Это называется wayland-app-launch, а также то, как мы автоматически запускаем Qt Demos на мультимедийном эталонном образе. Ознакомьтесь с данными ссылками, которые содержат примеры того, как вы можете интегрировать это в OE.
X11 Настольный
Вы можете запускать приложения автоматически при входе в Window Manager или Desktop Environment.
С angstrom-lxde-image вы получите следующие параметры. Другие среды рабочего стола предоставляют аналогичные средства.
Менеджер сеансов lxsession может запускать приложения при запуске графической среды.
Этого можно добиться двумя способами:
Особый способ lxsession, в котором записи в файлах / etc / xdg / lxsession / LXDE / autostart и ~ /.config / lxsession / LXDE / autostart анализируются.
Общий способ, поддерживаемый многими диспетчерами сеансов. Файлы в папках / etc / xdg / autostart / и ~ / .config / autostart / , заканчивающиеся на .desktop , анализируются и, если применимо, запускается описанное в них приложение.
Дополнительную информацию можно найти в документации LXSession.
Файл автозапуска LXSession
Чтобы использовать 1-й вариант, вам необходимо отредактировать / etc / xdg / lxsession / LXDE / autostart или ~ /.config / lxsession / LXDE / автозапуск .
Добавьте приложение или командную строку, которую нужно запустить, в новую строку файла.
Если вы хотите, чтобы ваше приложение было перезапущено в случае аварийного завершения, поставьте перед именем приложения символ @. Как, например, lxterminal с @lxterminal в / etc / xdg / lxsession / LXDE / autostart :
/ etc / xdg / lxsession / LXDE / autostart
@lxpanel --profile LXDE @pcmanfm --desktop --profile LXDE @xscreensaver -no-splash @lxterminal
Обратите внимание, что этот файл не является сценарием оболочки, и поэтому такие акробатические действия оболочки, как перенаправление и каналы, не разрешены.
При необходимости это можно сделать, создав собственный сценарий оболочки, который, в свою очередь, может поддерживать полный набор функций оболочки.
Файлы .desktop
В основном, чтобы запустить службу или приложение с этим подходом, необходимо создать файл .desktop и добавить его в автозапуск.
Дополнительную информацию об этом можно найти в документации к файлу .desktop. Примечание: В / usr / share / applications /
уже есть ряд.файлы рабочего стола, которые можно скопировать в папку автозапуска.
Например, если вы хотите автоматически запускать lxterminal при запуске, вы можете сделать следующее:
1. Создайте terminal.desktop в / etc / xdg / autostart /
. Добавьте несколько ключевых записей, например:
- [Desktop Entry] — Должен быть первой строкой каждого файла рабочего стола и заголовком раздела для идентификации блока пар ключ-значение, связанного с рабочим столом. Необходимо, чтобы рабочий стол правильно распознал файл.
- Имя приложения. (Имя группы Desktop Entry — должно быть уникальным в системе)
- Тип заявки. (Возможные значения: «Приложение», «Ссылка» или «Каталог».)
- Exec имя файла приложения плюс необязательные аргументы.
- Терминал (Определяет, должно ли приложение работать в терминале.)
Пример содержимого файла .desktop с записями должно быть следующим:
my_sample.настольный
[Desktop Entry] Имя = LXTerminal Тип = Приложение Exec = lxterminal Терминал = ложь
- После редактирования сохраните .desktop .
Примечание: Графический файловый менеджер будет отображать файлы .desktop не по имени файла, а по значению ключа «Имя». например в примере выше «LXTerminal».
Чтобы отключить автоматический запуск приложения, просто удалите соответствующий файл * .desktop из / etc / xdg / autostart /
и / или .config / autostart /
, либо добавить ключ NotShowIn = LXDE; в файл рабочего стола.
В качестве альтернативы используйте графический интерфейс «Меню LXDE» / «Настройки» / «Настройки сеанса рабочего стола» и снимите флажок «Включено».
X11 с приложением для одного пользователя
Если в вашем сценарии использования требуется запуск X11, вероятно, также потребуется запустить некоторые задачи настройки, такие как отображение клавиатуры, калибровка сенсорного экрана, а затем запустить одно-единственное пользовательское приложение. В этом случае вы можете использовать схему, подобную той, которая используется в angstrom-qt5-x11-image и qt4e-demo-image.
Скрипт, запущенный Systemd
qt4e-demo-image и angstrom-qt5-x11-image (до 2.8b2) используют службу systemd и сценарий домашнего приготовления. Сценарий запускает X-сервер, а затем пользовательское приложение. Интеграция любых задач настройки между запуском X11 и запуском пользовательского приложения в скрипт создает множество проблем, поскольку иногда это останавливает X-сервер и так далее.
Однако для простой системы этого может быть достаточно.
Чтобы запустить приложение X11 вместо демонстрационного приложения, измените сценарий соответствующим образом.
Использование nodm, xinit и пользовательского скрипта
Изображение angstrom-qt5-x11-image (начиная с 2.8b2) использует простой диспетчер отображения nodm от OpenEmbedded для запуска X11. При этом используются данные конфигурации из / etc / X11
, например. Xsession.d , например для запуска сенсорного калибратора. На последнем этапе он ищет скрипт x-window-manager и его источники.
Чтобы запустить приложение X11, переопределите следующие две переменные в рецепте x-window-simple-app, чтобы установить начальный рабочий каталог и указать приложение:
INITIAL_PATH? = "/Usr/share/qtsmarthome-1.0" X_APPLICATION? = "$ {INITIAL_PATH} / smarthome"
/ а | Создает элемент с указанным файлом в качестве вложения. Пример: Если тип элемента не указан, предполагается IPM.Note. Не может использоваться с классами сообщений, не основанными на Outlook. |
/ altvba otmfilename | Открывает программу VBA, указанную в otmfilename, вместо% appdata% \ microsoft \ outlook \ vbaproject.отм. |
/ c класс сообщений | Создает новый элемент указанного класса сообщений (формы Outlook или любую другую допустимую форму MAPI). Примеры:
|
/ checkclient | Запрашивает стандартный менеджер электронной почты, новостей и контактов. |
/ cleanautocompletecache | Удаляет все имена и адреса электронной почты из списка автозаполнения. (Только Outlook 2013, 2016) |
/ чистые категории | Удаляет все созданные вами пользовательские имена категорий.Восстанавливает для категорий имена по умолчанию. |
/ cleanclientrules | Запускает Outlook и удаляет клиентские правила. |
/ cleanconvongoingactions | Удаляет таблицу действий беседы (CAT).Записи CAT для цепочки беседы обычно истекают через 30 дней после бездействия. Переключатель командной строки очищает все правила тегирования, игнорирования и перемещения беседы, немедленно останавливая любые дополнительные действия. (Только Outlook 2013, 2016) |
/ cleandmrecords | Удаляет записи журнала, сохраненные, когда менеджер или делегат отклоняет встречу. |
/ Клинфайндерс | Сбрасывает все папки поиска в почтовом ящике Microsoft Exchange только для первого открытого профиля. |
/ cleanfromaddresses | Удаляет все добавленные вручную из записей из профиля. |
/ cleanmailtipcache | Удаляет все подсказки из кеша. (Только Outlook 2013, 2016) |
/ чистые напоминания | Удаляет и восстанавливает напоминания. |
/ cleanroamedprefs | Все предыдущие перемещаемые настройки удаляются и снова копируются из локальных настроек на компьютере, где используется этот переключатель. Это включает в себя перемещаемые настройки для напоминаний, сетки свободного / занятого времени, рабочего времени, публикации календаря и правил RSS. |
/ чистые правила | Запускает Outlook и удаляет клиентские и серверные правила. Важно Если у вас есть несколько или дополнительных почтовых ящиков в вашем профиле Outlook, запуск переключателя командной строки / cleanrules удаляет правила из всех подключенных почтовых ящиков.Поэтому рекомендуется запускать эту команду только в том случае, если ваш профиль Outlook содержит только один целевой почтовый ящик. |
/ cleanserverrules | Запускает Outlook и удаляет правила на сервере. |
/ cleansharing | Удаляет все подписки RSS, Интернет-календаря и SharePoint из настроек учетной записи, но оставляет все ранее загруженное содержимое на вашем компьютере.Это полезно, если вы не можете удалить одну из этих подписок в Outlook 2013. |
/ cleansniff | Отменяет программную блокировку, определяющую, какой из ваших компьютеров (при одновременном запуске Outlook) обрабатывает элементы собрания. Процесс блокировки помогает предотвратить дублирование сообщений с напоминаниями.Этот переключатель снимает блокировку компьютера, на котором он используется. Это позволяет Outlook обрабатывать элементы собрания. |
/ cleansubscriptions | Удаляет сообщения подписки и свойства для функций подписки. |
/ чистая погода | Удаляет местоположения городов, добавленные на панель погоды. |
/ cleanviews | Восстанавливает виды по умолчанию. Все созданные вами пользовательские представления будут потеряны. |
/ вложение | Используется без параметров командной строки для стандартного совместного создания OLE. |
/ f имя файла сообщения | Открывает указанный файл сообщения (.msg) или сохраненный поиск Microsoft Office (.oss). |
/ поиск | Открывает диалоговое окно расширенного поиска . |
/ holfilename | Открывает указанный файл .hol. |
/ ical icsfilename | Открывает указанный.ics файл. |
/ импортNK2 | Импортирует содержимое файла .nk2, который содержит список псевдонимов, используемый функциями автоматической проверки имени и автозаполнения. |
/ importprf имя_профиля | Запускает Outlook и открывает / импортирует определенный профиль MAPI (*.прф). Если Outlook уже открыт, он ставит профиль в очередь для импорта при следующем чистом запуске. |
/ launchtraininghelp Assetid | Открывает окно справки, в котором отображается раздел справки, указанный в файле Assetid. |
/ м адрес электронной почты | Предоставляет пользователю возможность добавить к элементу имя электронной почты.Работает только вместе с параметром командной строки / c. Примеры: |
/ без расширений | Как собственные, так и управляемые надстройки модели компонентных объектов (COM) отключены. |
/ nopreview | Запускает Outlook с отключенной областью чтения. |
/ p имя файла сообщения | Печатает указанное сообщение (.msg). |
/ профиль имя профиля | Загружает указанный профиль.Если имя вашего профиля содержит пробел, заключите имя профиля в кавычки («»). |
/ профилей | Открывает диалоговое окно «Выбрать профиль » независимо от значения параметра «Параметры » в меню «Инструменты » . |
/ promptimportprf | То же, что и / importprf, за исключением того, что появляется запрос, и пользователь может отменить импорт. |
/ переработка | Запускает Outlook с использованием существующего окна Outlook, если оно существует. Используется в сочетании с / explorer или / folder. |
/ перейти по категориям | Запускает Outlook и запускает следующие команды в почтовом ящике по умолчанию:
Примечание: Это та же команда, что и Обновить до цветовых категорий в каждом диалоговом окне свойств почтового ящика Outlook. |
/ resetfolders | Восстанавливает отсутствующие папки в месте доставки по умолчанию. |
/ resetfoldernames | Сбрасывает имена папок по умолчанию (например, Входящие или Отправленные ) на имена по умолчанию на текущем языке пользовательского интерфейса Office. Например, если вы впервые подключаетесь к своему почтовому ящику в Outlook с помощью русского интерфейса пользователя, русские имена папок по умолчанию не могут быть переименованы. Чтобы изменить имена папок по умолчанию на другой язык, например японский или английский, вы можете использовать этот переключатель для сброса имен папок по умолчанию после изменения языка пользовательского интерфейса или установки другой языковой версии Outlook. |
/ сбросить регионы | Очищает кэш областей формы и повторно загружает определения областей формы из реестра Windows. |
/ resetnavpane | Очищает и восстанавливает панель папок для текущего профиля. |
/ resetquicksteps | Восстанавливает быстрые действия по умолчанию.Все быстрые действия, созданные пользователем, удаляются. |
/ resetsearchcriteria | Сбрасывает все критерии мгновенного поиска, чтобы в каждом модуле отображался набор критериев по умолчанию. |
/ resetharedfolders | Удаляет все общие папки из области папок. |
/ сбросtodobar | Очищает и восстанавливает список задач списка дел для текущего профиля. |
/ восстановление | Пытается открыть тот же профиль и папки, которые были открыты до аварийного завершения работы Outlook.(Только Outlook 2013, 2016) |
/ rpcdiag | Открывает Outlook и отображает диалоговое окно состояния подключения удаленного вызова процедур (RPC). |
/ сейф | Запускает Outlook без настроек области чтения или панели инструментов.Надстройки как собственной, так и управляемой компонентной объектной модели (COM) отключены. |
/ сейф: 1 | Запускает Outlook с отключенной областью чтения. |
/ сейф: 3 | Как собственные, так и управляемые надстройки модели компонентных объектов (COM) отключены. |
/ выберите имя папки | Запускает Outlook и открывает указанную папку в новом окне. Например, чтобы открыть Outlook и отобразить календарь по умолчанию, используйте: «c: \ program files \ microsoft office \ office15 \ outlook.exe» / select outlook: calendar. |
/ поделиться фидом: // URL / имя файла / доля stssync: // URL / share web: // URL / имя файла | Указывает URL-адрес общего доступа для подключения к Outlook.Например, используйте URL-адрес stssync: // для подключения списка SharePoint к Outlook. |
/ нюхать | Запускает Outlook, инициирует обнаружение новых приглашений на собрания в папке «Входящие» , а затем добавляет их в календарь. |
/ т oftfilename | Открывает указанный.oft файл. |
/ v vcffilename | Открывает указанный файл .vcf. |
/ vcal vcsfilename | Открывает указанный.vcs файл. |
Пять способов запустить программу на Raspberry Pi при запуске
Запуск программы на Raspberry Pi при запуске
В этом руководстве мы покажем вам пять способов запустить программу на Raspberry Pi при запуске. Для запуска программы при загрузке доступны пять методов:
Пример программыВы можете использовать любую программу, которую хотите запустить при загрузке; для этого урока мы используем пример программы на Python, которая будет говорить при запуске Raspberry Pi.В этом примере программы будет использоваться пакет Espeak , чтобы Raspberry pi говорил «Добро пожаловать в мир роботов».
Если у вас не установлен пакет Espeak , запустите в терминале для установки следующее:
sudo apt-get install espeak
Чтобы узнать больше о том, как заставить Raspberry Pi говорить, у нас есть руководство.
В каталоге / home / pi откройте файл для редактирования:
sudo nano образец.py
И введите следующий код и сохраните его (нажмите CTRL + X и введите Y).
#! / usr / bin / env питон из вызова импорта подпроцесса call ([‘espeak« Добро пожаловать в мир роботов »2> / dev / null’], shell = True)Метод 1: rc.local
Первый способ запустить программу на Raspberry Pi при запуске — использовать файл rc.local . Чтобы команда или программа выполнялась при загрузке Pi, вы можете добавить команды в rc.локальный файл . Это особенно полезно, если вы хотите включить Pi в автономном режиме (то есть без подключенного монитора) и запустить программу без конфигурации или ручного запуска.
Редактирование rc.localНа вашем Pi отредактируйте файл /etc/rc.local с помощью редактора по вашему выбору. Вы должны отредактировать его с правами root:
судо нано /etc/rc.local
Добавьте команды для выполнения программы python, предпочтительно с использованием абсолютной ссылки на расположение файла (предпочтительно полный путь к файлу).Обязательно оставьте строку exit 0 в конце, затем сохраните файл и выйдите. В nano для выхода нажмите Ctrl-x, а затем Y.
Если ваша программа работает непрерывно (запускает бесконечный цикл) или, скорее всего, не завершится, вы должны обязательно разветвить процесс, добавив амперсанд («&») в конец команды, например:
Судо Питон /home/pi/sample.py и
Pi будет запускать эту программу при загрузке и перед запуском других служб.Если вы не включите амперсанд и ваша программа работает постоянно, Pi не завершит процесс загрузки. Амперсанд позволяет команде запускаться в отдельном процессе и продолжать загрузку с запущенным основным процессом.
Теперь перезагрузите Pi, чтобы проверить его:
sudo перезагрузкаПодсказки
Также не забудьте ссылаться на абсолютные имена файлов, а не относительно вашей домашней папки. Например, используйте `/ home / pi / myscript.py` вместо` myscript.py`.
Если вы добавляете сценарий в /etc/rc.local, он добавляется в последовательность загрузки. Если ваш код застревает, последовательность загрузки не может продолжаться. Поэтому будьте осторожны с тем, какой код вы пытаетесь запустить при загрузке, и проверьте его пару раз. Вы также можете записать вывод скрипта и ошибку в текстовый файл (например, log.txt) и использовать его для отладки.
Судо Питон /home/pi/sample.py &> /home/pi/Desktop/log.txt 2> & 1Метод 2: .bashrc
Второй способ запустить программу на Raspberry Pi при запуске — это изменить .bashrc файл. С методом .bashrc ваша программа python будет запускаться при входе в систему (что происходит автоматически, когда вы загружаетесь и переходите непосредственно на рабочий стол), а также каждый раз, когда открывается новый терминал или когда устанавливается новое соединение SSH. сделал. Поместите свою команду в конец «/home/pi/.bashrc». Программа может быть прервана нажатием «ctrl-c» во время ее работы!
судо нано /home/pi/.bashrc
Перейти к последней строке скрипта и добавить:
echo Работает при загрузке sudo python / home / pi / sample.py
Приведенный выше оператор echo используется, чтобы показать, что команды в файле .bashrc выполняются при загрузке, а также при подключении к консоли bash.
Теперь перезагрузите Pi, чтобы услышать, как Pi говорит при запуске.
sudo перезагрузка
На изображении ниже показано, что команды, добавленные в файл .bashrc, выполняются даже при открытии нового терминала.
Метод 3: каталог init.d
Третий способ запустить программу на Raspberry Pi при запуске — это добавить программу (для запуска при загрузке) в файл / etc / init.d каталог. Этот каталог содержит сценарии, которые запускаются во время процесса загрузки (кроме того, все программы здесь выполняются при завершении работы или перезагрузке системы).
Добавьте программу, запускаемую при запуске, в каталог init.d, используя следующие строки:
судо cp /home/pi/sample.py /etc/init.d/
Перейдите в каталог инициализации и откройте образец сценария
компакт-диск /etc/init.d sudo nano sample.py
Добавьте следующие строки в пример сценария, чтобы сделать его сценарием инициализации Linux Standard Base (LSB) (стандарт для структуры программной системы, включая иерархию файловой системы, используемую в операционной системе Linux ).
# /etc/init.d/sample.py ### НАЧАЛО ИНФОРМАЦИИ # Предоставляет: sample.py # Обязательное начало: $ remote_fs $ syslog # Обязательная остановка: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Краткое описание: запускать демон во время загрузки # Описание: включить службу, предоставляемую демоном. ### КОНЕЦ НАЧАЛЬНОЙ ИНФОРМАЦИИСценарии
init.d требуют, чтобы указанные выше зависимости среды выполнения были задокументированы, чтобы можно было проверить текущий порядок загрузки, порядок загрузки с использованием этих зависимостей и запустить сценарии загрузки параллельно для ускорения процесса загрузки.
Вы можете научиться писать сценарии init.d, следуя руководству здесь.
Сделайте образец сценария в каталоге инициализации исполняемым, изменив его права доступа.
судо chmod + x sample.py
Выполните эту команду:
sudo update-rc.d sample.py по умолчанию
Теперь перезагрузитесь, чтобы услышать, как Pi говорит при запуске.
sudo перезагрузкаМетод 4: SYSTEMD
Четвертый способ запустить программу на Raspberry Pi при запуске — использовать файлы systemd . systemd предоставляет стандартный процесс для управления тем, какие программы запускаются при загрузке системы Linux. Обратите внимание, что systemd доступен только в версиях Jessie Raspbian OS.
Шаг 1. Создание файла объектаОткройте файл образца модуля, используя команду, как показано ниже:
судо нано /lib/systemd/system/sample.service
Добавить в следующий текст:
[Единица] Описание = Мой образец услуги После = многопользовательский.цель [Услуга] Тип = простаивает ExecStart = / usr / bin / python /home/pi/sample.py [Установить] WantedBy = multi-user.target
Вы должны сохранить и выйти из редактора nano.
Это определяет новую службу под названием «Пример службы», и мы просим, чтобы она запускалась, как только многопользовательская среда станет доступной. Параметр «ExecStart» используется для указания команды, которую мы хотим запустить. Для параметра «Тип» установлено значение «бездействие», чтобы команда ExecStart запускалась только тогда, когда все остальное загружено.Обратите внимание, что пути являются абсолютными и определяют полное местоположение Python, а также местоположение нашего скрипта Python.
Чтобы сохранить вывод текста сценария в файле журнала, вы можете изменить строку ExecStart на:
ExecStart = / usr / bin / python /home/pi/sample.py> /home/pi/sample.log 2> & 1
Разрешение на файл модуля должно быть установлено на 644:
sudo chmod 644 /lib/systemd/system/sample.serviceШаг 2 — Настройте systemd
Теперь файл модуля определен, и мы можем сказать systemd запустить его во время загрузки:
sudo systemctl демон-перезагрузка sudo systemctl enable sample.сервис
Перезагрузите Pi, и ваша пользовательская служба должна запустить :
sudo перезагрузкаМетод 5: crontab
Подробное руководство по использованию crontab для запуска программы при загрузке можно найти здесь.
Вы можете использовать любой из этих методов для запуска вашей программы при загрузке, если точка, в которой ваш скрипт Python запускается в последовательности запуска, не важна. Если ваш сценарий полагается на какие-либо системные функции, доступные в этот момент времени, такие как подключенная и доступная сеть, каталог / home / pi смонтирован и готов к использованию или системное время было обновлено NTP, тогда это было бы идеально. использовать systemd или init.d методы. Эти методы контролируют точку загрузки, в которой ваш скрипт выполняется во время загрузки.
Ваше желание — моя команда.
Узнать больше
Хотите создать отличные проекты с Raspberry Pi и роботами? Собери свой собственный автомобиль-робот GoPiGo! Посетите нашу страницу проектов, чтобы увидеть больше примеров забавных проектов робототехники с вашим Raspberry Pi!
ВопросыЕсть вопросы? Нужна помощь? Спросите на нашем форуме!
Узнать больше!
Если вам понравился этот учебник, подумайте о том, чтобы получить Raspberry Pi здесь и SD-карту с Raspbian для роботов здесь, чтобы попробовать себя.
Использование сценариев запуска на виртуальных машинах Linux | Документация по Compute Engine
Linux
Сценарий запуска — это файл, который выполняет задачи во время процесса запуска
экземпляр виртуальной машины (ВМ). Сценарии запуска могут применяться ко всем виртуальным машинам в проекте.
или на одну виртуальную машину. Сценарии запуска, указанные в переопределении метаданных на уровне виртуальной машины
сценарии запуска, указанные в метаданных уровня проекта, и только сценарии запуска
запускать, когда сеть доступна.В этом документе описывается, как использовать автозагрузку
сценарии на экземплярах виртуальных машин Linux. Для получения информации о том, как добавить
сценарий запуска на уровне проекта, см. gcloud compute project-info add-metadata
.
Для сценариев запуска Linux вы можете использовать файл bash или не-bash. Чтобы использовать не-bash
файл, назначьте интерпретатор, добавив #!
в начало файла. Для
Например, чтобы использовать сценарий запуска Python 3, добавьте #! / usr / bin / python3
наверх
файла.
Если вы укажете сценарий запуска с помощью одной из процедур в этом документе, Compute Engine выполняет следующие действия:
Копирует сценарий запуска в виртуальную машину
Устанавливает разрешения на запуск для сценария запуска
Запускает сценарий запуска от имени пользователя root
при загрузке виртуальной машины
Для получения информации о различных задачах, связанных со сценариями запуска, и о том, когда выполнить каждый из них, см. Обзор.
Прежде чем начать
Сценарий запуска передается на виртуальную машину из местоположения, указанного в ключ метаданных. Ключ метаданных указывает, сохраняется ли сценарий запуска. локально, хранится в облачном хранилище или передается непосредственно на виртуальную машину. В Ключ метаданных, который вы используете, также может зависеть от размера сценария запуска.
В следующей таблице показаны ключи метаданных, которые можно использовать для запуска Linux. скрипты и предоставляет информацию о том, какой ключ использовать в зависимости от хранилища расположение и размер сценария запуска.
Ключ метаданных | Используйте для |
---|---|
сценарий запуска | Передача сценария запуска bash или не-bash, который хранится локально или добавляется напрямую и имеет размер до 256 КБ |
URL-адрес сценария запуска | Передача сценария запуска bash или не-bash, который хранится в облачном хранилище и имеет размер более 256 КБ |
Порядок выполнения скриптов запуска Linux
Можно использовать несколько сценариев запуска.Скрипты запуска, хранящиеся локально или добавленные непосредственно выполнять перед запуском скрипты, которые хранятся в Облачное хранилище. В следующей таблице показано, на основе ключа метаданных, порядок выполнения сценариев запуска Linux.
Ключ метаданных | Порядок исполнения |
---|---|
сценарий запуска | Сначала при каждой загрузке после начальной загрузки |
URL-адрес сценария запуска | Секунда при каждой загрузке после начальной загрузки |
Непосредственная передача сценария запуска Linux
Вы можете добавить содержимое сценария запуска непосредственно в виртуальную машину при создании ВМ.Следующие процедуры показывают, как создать виртуальную машину со сценарием запуска. который устанавливает Apache и создает базовую веб-страницу.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине.
Консоль
Передача сценария запуска Linux непосредственно новой виртуальной машине
В Google Cloud Console перейдите на страницу Create an instance .
Перейти к созданию экземпляра
Для загрузочного диска выберите Изменить и выберите Linux , работающий система.
Разверните Сеть, диски, безопасность, управление, единоличное владение раздел и выполните следующее:
- Разверните раздел Management .
В разделе Automation добавьте следующий сценарий запуска:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.html
Сценарий запуска Linux добавлен напрямую.
Щелкните Создать .
Передача сценария запуска Linux непосредственно на существующую виртуальную машину
Щелкните Изменить .
В разделе Пользовательские метаданные укажите следующее:
-
ключ
:сценарий запуска
-
значение
: содержимое сценария запуска
-
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
gcloud
Передача сценария запуска Linux непосредственно новой виртуальной машине
Передать содержимое сценария запуска непосредственно виртуальной машине при ее создании.
с помощью следующих экземпляров вычислений gcloud создайте
команда.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata = startup-script = '#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.htmlСценарий запуска Linux добавлен напрямую.
'
Замените VM_NAME именем виртуальной машины.
Передача сценария запуска Linux непосредственно на существующую виртуальную машину
Добавьте сценарий запуска непосредственно в существующую виртуальную машину, используя следующие gcloud compute instance add-metadata
команда:
gcloud compute instance add-metadata VM_NAME \ --metadata = startup-script = '#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> / var / www / html / index.htmlСценарий запуска Linux добавлен напрямую.
'
Замените VM_NAME именем виртуальной машины.
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт. Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
API
Передача сценария запуска Linux непосредственно новой виртуальной машине
Передайте содержимое сценария запуска непосредственно виртуальной машине при его создании с помощью
с использованием следующих экземпляров.вставка
метод.
POST https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance { ... "networkInterfaces": [ { "accessConfigs": [ { "тип": "ONE_TO_ONE_NAT" } ] } ], "метаданные": { "Предметы": [ { "ключ": "сценарий запуска", "value": "#! / bin / bash \ napt update \ napt -y install apache2 \ ncat << EOF> /var/www/html/index.html\nСценарий запуска Linux добавлено напрямую.
" } ] }, ... }
Заменить следующее:
Передача сценария запуска Linux непосредственно на существующую виртуальную машину
Получить значение
tags.fingerprint
виртуальной машины с помощью экземпляров. Get
метод.ПОЛУЧИТЬ https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME
Заменить следующее:
Передайте сценарий запуска, используя значение отпечатка пальца
вместе с ключ метаданных и значение для сценария запуска при вызове
экземпляра.setMetadata
метод:POST https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME / setMetadata { «отпечаток пальца»: FINGERPRINT , "Предметы": [ { "ключ": "сценарий запуска", "value": "#! / bin / bash \ napt update \ napt -y install apache2 \ ncat << EOF> /var/www/html/index.html\n
Сценарий запуска Linux добавлено напрямую.
" } ], ... }Заменить следующее:
PROJECT_ID : идентификатор проекта
ЗОНА : зона ВМ
VM_NAME : зона виртуальной машины
FINGERPRINT : значение
tags.fingerprint
получено с помощью экземпляров. get
метод
Проверка сценария запуска
После запуска виртуальной машины просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
Передача сценария запуска Linux из локального файла
Вы можете сохранить сценарий запуска в локальном файле на своей рабочей станции и передать local как метаданные для виртуальной машины при ее создании. Вы не можете использовать сохраненные файлы на виртуальных машинах в качестве сценариев запуска.
Перед передачей сценария запуска Linux из локального файла в виртуальную машину выполните следующее:
Создайте локальный файл для хранения сценария запуска.
Обратите внимание на относительный путь от инструмента
gcloud
до сценария запуска.Добавьте в файл следующий сценарий запуска:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
сценарий запуска Linux из локального файла.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине.
gcloud
Передача сценария запуска Linux из локального файла в новую виртуальную машину
Создайте виртуальную машину и передайте содержимое локального файла для использования в качестве
сценарий запуска с использованием экземпляров gcloud compute create
с флагом --metadata-from-file
.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata-from-file = сценарий запуска = FILE_PATH
Заменить следующее:
Передача сценария запуска Linux из локального файла в существующую виртуальную машину
Передайте сценарий запуска существующей виртуальной машине из локального файла, используя следующие gcloud compute instance add-metadata
команда:
gcloud compute instance add-metadata VM_NAME \ --metadata-from-file запуск-скрипт = FILE_PATH
Заменить следующее:
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создан веб-сайт.Возможно, вам придется подождать около 1 минуты для запуска образца сценарий, чтобы закончить.
Передача сценария запуска Linux из облачного хранилища
Вы можете сохранить сценарий запуска в облачном хранилище и передать его виртуальной машине. когда вы его создаете. После добавления сценария запуска в облачное хранилище у вас есть URL-адрес, который можно использовать для ссылки на сценарий запуска при создании виртуальная машина.
Перед добавлением сценария запуска из сегмента Cloud Storage выполните следующее:
Создайте файл для хранения сценария запуска.В этом примере используется bash (
.sh
) файл.Добавьте следующее в файл bash, который устанавливает Apache и создает простая веб-страница:
#! / bin / bash подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
Сценарий запуска Linux из облачного хранилища.
Создайте корзину Cloud Storage.
Добавьте файл в корзину Cloud Storage.
Последствия для безопасности
По умолчанию владельцы и редакторы проектов имеют доступ к Файлы Cloud Storage в том же проекте, если нет явного средства контроля доступа, которые его запрещают.
Если сегмент или объект облачного хранилища менее безопасны, чем метаданные, существует риск повышения привилегий при изменении сценария запуска и ВМ перезагружается. Это связано с тем, что после перезагрузки виртуальной машины сценарий запуска запускается как
root
и затем может использовать разрешения подключенной учетной записи службы для доступ к другим ресурсам.
Разрешения, необходимые для этой задачи
Для выполнения этой задачи у вас должны быть следующие разрешения:
- Все разрешения, необходимые для создания новой виртуальной машины.
-
compute.instances.setMetadata
на виртуальной машине. - Разрешение на доступ к корзине и файлу сценария в облачном хранилище. Проверьте настройки контроля доступа в корзине и файле, чтобы убедиться, что у вас есть разрешение.
Консоль
Передача сценария запуска, хранящегося в облачном хранилище, на новую виртуальную машину
В Google Cloud Console перейдите на страницу Create an instance .
Перейти к созданию экземпляра
Укажите сведения о виртуальной машине.
Для Загрузочного диска выберите Изменить и выберите Linux операционная система.
В разделе Идентификация и доступ к API выберите учетную запись службы, которая имеет средство просмотра объектов хранилища роль (
ролей / storage.objectViewer
).Разверните Сеть, диски, безопасность, управление, единоличное владение раздел, а затем выполните следующее:
- Разверните раздел Management .
В разделе метаданных добавьте следующие значения:
Ключ : ключ метаданных. Установите
URL-адрес сценария запуска
, чтобы добавить сценарий запуска из облачного хранилища.Значение : значение метаданных. Установить в облачное хранилище расположение файла сценария запуска, используя один из следующих форматы:
- URL-адрес, прошедший аутентификацию :
https://storage.googleapis.com/ BUCKET / FILE
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
Заменить следующее:
- BUCKET : название ковша, который содержит файл сценария запуска
- ФАЙЛ : имя сценария запуска файл
- URL-адрес, прошедший аутентификацию :
Чтобы создать виртуальную машину, щелкните Create .
Передача сценария запуска, хранящегося в облачном хранилище, на существующую виртуальную машину
Отредактируйте ВМ, затем в разделе Пользовательские метаданные используйте следующие значения для метаданных:
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт. Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
gcloud
Передача сценария запуска, который хранится в облачном хранилище, на новую виртуальную машину
Передайте сценарий запуска, хранящийся в облачном хранилище, на виртуальную машину, когда вы
создайте его с помощью следующих экземпляров gcloud compute create
команда.По стоимости
флаг --scope
, используйте storage-ro
, чтобы виртуальная машина могла получить доступ
Облачное хранилище.
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --scopes = хранилище-ро \ --metadata = start-script-url = CLOUD_STORAGE_URL
Заменить следующее:
VM_NAME : имя виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных.Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес, прошедший аутентификацию :
https://storage.googleapis.com/ BUCKET / FILE
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес, прошедший аутентификацию :
Передача сценария запуска, хранящегося в облачном хранилище, на существующую виртуальную машину
Передайте сценарий запуска, который хранится в облачном хранилище, в
существующая виртуальная машина с помощью следующих экземпляров gcloud compute add-metadata
команда:
gcloud compute instance add-metadata VM_NAME \ --metadata startup-script-url = CLOUD_STORAGE_URL
Заменить следующее:
VM_NAME : имя виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес, прошедший аутентификацию :
https://storage.googleapis.com/ BUCKET / FILE
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес, прошедший аутентификацию :
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
API
Передача сценария запуска, который хранится в облачном хранилище, на новую виртуальную машину
Передача сценария запуска, который хранится в облачном хранилище, на виртуальную машину.
при его создании с использованием следующих экземпляров .insert
метод. К прицелам
добавьте https://www.googleapis.com/auth/devstorage.read_only
, чтобы виртуальная машина
может получить доступ к облачному хранилищу.
POST https: // compute.googleapis.com/compute/v1/projects/ PROJECT_ID / зонах / ЗОНА / экземпляров { ... "networkInterfaces": [ { "accessConfigs": [ { "тип": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "электронная почта": "по умолчанию", "области": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "метаданные": { "Предметы": [ { "ключ": "URL-адрес сценария запуска", "значение": " CLOUD_STORAGE_URL " } ] }, ... }
Заменить следующее:
PROJECT_ID : идентификатор проекта.
ЗОНА : зона для создания новой виртуальной машины.
CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес, прошедший аутентификацию :
https://storage.googleapis.com/ BUCKET / FILE
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес, прошедший аутентификацию :
Передача сценария запуска, хранящегося в облачном хранилище, на существующую виртуальную машину
Получите теги
.значение отпечатка
виртуальной машины с использованием экземпляров. get
метод.ПОЛУЧИТЬ https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME
Заменить следующее:
Передайте сценарий запуска, используя значение отпечатка пальца
вместе с ключ метаданных и значение для сценария запуска при вызове
instance.setMetadata
метод:POST https: // compute.googleapis.com/compute/v1/projects/ PROJECT_ID / zone / ZONE / instance / VM_NAME / setMetadata { «отпечаток пальца»: FINGERPRINT , "Предметы": [ { "ключ": "URL-адрес сценария запуска", "значение": " CLOUD_STORAGE_URL " } ], ... }
Заменить следующее:
PROJECT_ID : идентификатор проекта.
ЗОНА : зона ВМ.
VM_NAME : зона виртуальной машины.
FINGERPRINT : значение
tags.fingerprint
получено с помощью экземпляров. get
метод.CLOUD_STORAGE_URL : значение метаданных. Установлен в расположение в облачном хранилище файла сценария запуска, используя один следующих форматов:
- URL-адрес, прошедший аутентификацию :
https://storage.googleapis.com/ BUCKET / FILE
- gsutil URI :
gs: // ВЕДРО / ФАЙЛ
- URL-адрес, прошедший аутентификацию :
Проверка сценария запуска
Просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска создал веб-сайт.Возможно, вам придется подождать около 1 минуты для образца сценарий запуска для завершения.
В сценарии запуска вы можете получить доступ к значениям метаданных. Например, вы можете использовать один и тот же сценарий для нескольких виртуальных машин и параметризация каждого сценария индивидуально с помощью передача разных значений метаданных каждой виртуальной машине.
Чтобы получить доступ к настраиваемому значению метаданных из сценария запуска, выполните следующие действия:
Создайте сценарий запуска, который запрашивает значение ключа метаданных. Для Например, следующий файл bash (
.sh
) сценарий запуска запрашивает значение параметраfoo
ключ метаданных.#! / bin / bash METADATA_VALUE = $ (curl http: //metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") подходящее обновление apt -y установить apache2 cat << EOF> /var/www/html/index.html
Доступ к значению метаданных foo: $ METADATA_VALUE
Установите значение ключа метаданных
foo
при создании виртуальной машины с помощью следующиеэкземпляров вычислений gcloud создают
команда.В этом примере сценарий запуска передается виртуальной машине из локального файла.gcloud
Вычислительные экземпляры gcloud создают VM_NAME \ --image-project = debian-cloud \ --image-family = debian-10 \ --metadata-from-file = startup-script = FILE_PATH \ --metadata = foo = bar
Заменить следующее:
Для получения дополнительной информации о том, как указать пару ключ / значение метаданных, см. Установка собственных метаданных.
На локальной рабочей станции просмотрите внешний IP-адрес в веб-браузере, чтобы убедиться, что сценарий запуска выводит значение
foo
.Возможно, вам придется подождать около 1 минута для завершения примера сценария запуска.
Повторный запуск сценария запуска Linux
Перезапустите сценарий запуска, выполнив следующие действия:
Подключение к ВМ.
Выполнение следующей команды:
sudo google_metadata_script_runner запуск
Просмотр вывода сценария запуска Linux
Вы можете просмотреть вывод сценария запуска Linux, выполнив любое из следующее:
Что дальше
Как автоматически запускать команды и сценарии Linux при перезагрузке системы
Автоматический запуск приложений и скриптов при запуске может быть полезен для автоматизации общих задач и событий загрузки.В этой статье будет объяснено несколько методов, которые можно использовать для запуска приложений и скриптов при новой перезагрузке или новом входе в систему.Запуск приложений
Ubuntu и другие дистрибутивы на основе GNOME поставляются с приложением, называемым просто «Startup Applications». Его можно использовать для управления приложениями и скриптами, которые запускаются при новой перезагрузке системы или входе в систему.
Запустите приложение «Запуск приложений» из средства запуска приложений и нажмите кнопку «Добавить», чтобы добавить новую запись.
Заполните поля «Имя» и «Команда» в соответствии с вашими потребностями, а затем нажмите кнопку «Добавить», чтобы завершить создание новой записи.Запись, созданная на скриншоте ниже, будет отправлять напоминание «Сделать резервную копию» в качестве системного уведомления при каждой перезагрузке / входе в систему. Вы можете заменить его своей собственной командой или полным путем к вашему сценарию bash. Вы также можете использовать любую существующую системную команду или исполняемые файлы, обычно расположенные в различных папках bin файловой системы.
Как указано выше, напоминание о резервном копировании отображается при каждой перезагрузке.
Systemd
Systemd - это демон и диспетчер служб, который содержит различные утилиты для управления системными процессами и компонентами ОС.В своей упрощенной форме он обычно используется для запуска и завершения служб в цикле новой загрузки.
Systemd можно использовать для автоматического запуска приложения или запуска сценария при новой загрузке. Чтобы создать такое же уведомление с напоминанием о резервном копировании, как описано выше, сначала вы должны создать необходимые папки и файл, выполнив следующие команды:
$ mkdir -p ~ / .config / systemd / user
$ nano ~ / .config / systemd / user / backup_reminder.service
Замени «nano» на команду вашего любимого текстового редактора.Замените «backup_reminder» любым другим именем, которое вам больше нравится.
Вставьте приведенный ниже код в файл backup_reminder.service, созданный с помощью приведенной выше команды.
[Unit]Описание = Отправляет напоминание о резервном копировании при каждой перезагрузке
PartOf = graphical-session.target
[Служба]
ExecStart = bash -c 'sleep 10; notify-send «Сделать резервную копию» '
Type = oneshot
[Install]
WantedBy = graphical-session.target
Приведенный выше код довольно прост. Он отправляет уведомление «Сделайте резервную копию» через 10 секунд после загрузки графического сеанса (один раз при каждой перезагрузке или входе в систему).
Выполните следующие команды, чтобы включить службу, чтобы она могла автоматически запускаться при каждой перезагрузке.
$ chmod 644 ~ / .config / systemd / user / backup_reminder.service
$ systemctl --user enable backup_reminder.service
$ systemctl --user daemon-reload
$ reboot
Это всего лишь простой пример запуска базовой команды при загрузке с использованием systemd. Вы также можете создавать расширенные службы с несколькими условиями и несколькими командами. Для получения дополнительной информации обратитесь к странице руководства systemd, выполнив следующую команду:
Обратите внимание, что в этом примере объясняется создание новой службы, не требующей root-доступа и подходящей для автозапуска приложений, не требующих прав root.Если вы хотите автоматически запускать скрипты, требующие root-доступа, вам необходимо создать новую службу systemd в каталоге «/ etc / systemd / system» вместо папки «~ / .config / systemd / user» и опустить переключатель «–user». в командах, упомянутых выше.
Работа Cron
Cron - это инструмент, который может периодически запускать запланированные задачи в соответствии с условиями, указанными пользователем. Эти запланированные задания создаются в Crontab в заранее определенном формате. Проще говоря, Crontab сообщает Cron, какие задания запускать в какой момент времени.
Как и systemd, задания crontab можно использовать для запуска приложений и автоматического запуска скриптов при загрузке. Чтобы добавить новое задание cron, выполните команду ниже:
Добавьте следующие строки в конец текстового файла (автоматически запускает терминал GNOME при каждой перезагрузке):
SHELL = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 gnome-terminal
Вы можете использовать свою команду или указать полный путь к сценарию оболочки.
Обратите внимание, что в отличие от systemd, cron не может определить, загружен ли графический сеанс или нет.Вы должны указать примерный период ожидания загрузки X-сервера и идентификатор отображения. Вы можете узнать свой идентификатор дисплея, выполнив команду ниже:
Задержка перед выполнением команды или сценария зависит от конфигурации вашей системы и времени загрузки.
Rc.local
Другой метод запуска сценариев и команд при запуске - использование файла «rc.local». Обратите внимание, что в моем тестировании я не мог отложить выполнение скрипта до запуска графического сеанса. Добавление любой задержки сна приводит к задержке показа самого экрана входа в систему.Из-за этого мне не удалось запустить графические приложения при запуске с использованием файла rc.local. Для редактирования rc.local также требуется root-доступ, в отличие от всех других примеров, описанных выше.
Чтобы добавить команды / сценарии в файл rc.local, выполните следующую команду (создает новый файл rc.local, если он не существует):
$ sudo nano /etc/rc.local
Добавьте свои команды между «#! / bin / bash »и« exit 0 », как показано ниже:
#! / bin / bash
путь / к / my_script.sh
выход 0
Сделайте rc.локальный исполняемый файл, выполнив команду ниже:
$ sudo chmod + x /etc/rc.local
Просто перезагрузитесь, чтобы сценарий запуска вступил в силу.
Заключение
Это несколько методов, которые можно использовать для автоматического запуска скриптов и приложений при запуске. Если вы хотите запускать сценарии, для которых не требуется root-доступ, я бы рекомендовал использовать приложение с графическим интерфейсом «Startup Applications». Если вы хотите запускать приложения и скрипты с корневым доступом, я бы посоветовал вам создать сервис systemd на уровне системы.
Как автоматически запускать программы в Gnome Shell
Автоматическое открытие приложений при входе в Gnome Shell - отличный способ заранее настроить рабочее пространство. Самый простой способ автозапуска программ в Gnome Shell - использовать приложение Tweaks.
В этом руководстве мы рассмотрим, как установить приложение Gnome Tweaks, чтобы легко настроить автоматический запуск программы. Давайте начнем!
Автозапуск программ через графический интерфейс
Приложение Tweaks не установлено по умолчанию ни в одном из дистрибутивов Linux, ориентированных на Gnome Shell, поскольку большинство разработчиков дистрибутивов предпочли бы, чтобы пользователи не изменяли настройки рабочего стола по умолчанию.По этой причине вам необходимо установить приложение, прежде чем продолжить работу с этим руководством.
Установить твики
Установить приложение Tweaks довольно просто в большинстве дистрибутивов Linux. Более того, из-за популярности Gnome среди пользователей Linux, даже в малоизвестных и относительно неизвестных операционных системах он есть в своих репозиториях программного обеспечения. Чтобы он заработал, запустите сеанс терминала, нажав Ctrl + Alt + T на клавиатуре. Оттуда следуйте инструкциям командной строки, которые соответствуют вашей ОС.
Ubuntu
sudo apt установить gnome-tweak-tool
Debian
sudo apt-get install gnome-tweak-tool
Arch Linux
sudo pacman -S инструмент gnome-tweak
Fedora
Fedora Linux - одна из немногих операционных систем Linux, которые поставляются с полной функциональностью Gnome, поэтому вполне вероятно, что приложение Tweaks предустановлено. Тем не менее, если вам нужно заставить его работать, это всего лишь команда Dnf .
sudo dnf установить инструмент gnome-tweak
OpenSUSE
sudo zypper установить gnome-tweak-tool
Общий Linux
Как указывалось ранее, Gnome - одна из наиболее часто используемых окружений рабочего стола Linux, поэтому даже в менее известных дистрибутивах не должно возникнуть проблем с установкой и запуском твиков.Если по какой-то причине у вас возникли проблемы, запустите терминал и выполните поиск по запросу «gnome tweaks». Затем установите его так, как вы обычно устанавливаете программное обеспечение в своей ОС.
Программы запуска
После того, как приложение Tweaks запущено в вашей операционной системе Linux, пора создать загрузочную запись в Gnome Shell. Для этого нажмите на клавиатуре Win . Затем введите «Твики». Щелкните значок с надписью «Настройки», чтобы открыть приложение. Оттуда найдите «Автозагрузку приложений» слева и щелкните по нему мышью.
В области «Запуск приложений» программы Tweaks щелкните значок +. Откроется меню выбора.
Используя меню выбора, просмотрите приложения (запущенные отображаются первыми) и щелкните по нему мышью, чтобы выбрать. Сделав выбор, нажмите кнопку «Добавить», чтобы создать новую запись для запуска программы. Имейте в виду, что вы должны повторить этот процесс для каждого приложения, которое вы хотите автоматически запускать при запуске.
Готово добавить приложения для запуска в Gnome? Закройте настройки, чтобы закончить.
Удаление автоматического запуска программы
Удалить запись запуска в Gnome Shell так же просто, как добавить ее. Для этого убедитесь, что у вас открыто приложение Tweaks. После открытия перейдите в раздел «Запуск приложений».
В области «Запуск приложений» приложения Tweaks найдите в списке приложение, от которого требуется запретить автоматический запуск. Затем нажмите кнопку «удалить», чтобы удалить его из списка. Повторите этот процесс для каждого приложения, которое вы хотите предотвратить от автоматического запуска при входе в систему.
По завершении удаления записей автозагрузки закройте приложение Tweaks. Настройки должны применяться автоматически.
Автозапуск программ через терминал
Приложение Tweaks - не единственный способ создавать записи автозагрузки в Gnome Shell. Если вы предпочитаете терминал, вы можете делать записи в папке «~ / .config / autostart /» с помощью команды cp .
Чтобы создать загрузочную запись из командной строки, вы должны переместить терминал из домашнего каталога (~) в папку «/ usr / share / applications /».
cd / usr / share / applications /
Запустите команду ls и просмотрите список ярлыков приложений в каталоге.
лс
Не можете найти нужную программу в списке файлов на экране? Объедините команду ls с командой grep , чтобы сузить список.
ls | grep 'имя программы'
Возьмите программу, которую вы хотите автоматически запускать, из списка и подключите ее к приведенной ниже команде cp , чтобы создать новую запись для запуска.
mkdir -p ~ / .config / автозапуск / cp имя программы.desktop ~ / .config / autostart /
После создания новой записи запуска в папке автозапуска обновите права доступа к файлу, чтобы Gnome Shell могла правильно с ним взаимодействовать.
sudo chmod + x ~ / .config / autostart / имя_программы.desktop
Повторите этот процесс столько раз, сколько хотите, чтобы создать столько записей автозагрузки, сколько хотите.
Удаление программ автозапуска через терминал
Чтобы удалить запись запуска из терминала в Gnome Shell, переместите командную строку в папку автозапуска, используя команду CD ниже.
cd ~ / .config / autostart
Затем запустите команду ls и посмотрите записи запуска в папке.
лс
Скопируйте имена программ, которые вы хотите предотвратить от автоматического запуска, вставив их в команду rm ниже.
rm имя программы.desktop
Управлять автозагрузкой с помощью systemd | Opensource.com
Недавно настраивая систему Linux, я хотел знать, как обеспечить, чтобы зависимости для служб и других модулей работали и работали до того, как эти зависимые службы и модули будут запущены.В частности, мне требовалось больше знаний о том, как systemd управляет последовательностью запуска, особенно при определении того, какие службы заказа запускаются в том, что по сути является параллельной системой.
Возможно, вы знаете, что SystemV (предшественник systemd, как я объяснял в первой статье этой серии) упорядочивает последовательность запуска, называя сценарии запуска префиксом SXX, где XX - это число от 00 до 99. Затем SystemV использует сортировку упорядочить по имени и последовательно запускает каждый сценарий запуска для желаемого уровня выполнения.
Но systemd использует файлы модулей, которые могут быть созданы или изменены системным администратором, для определения подпрограмм не только для инициализации, но и для обычных операций. В третьей статье этой серии я объяснил, как создать файл модуля монтирования. В этой пятой статье я продемонстрирую, как создать файл модуля другого типа - файл модуля службы, который запускает программу при запуске. Вы также можете изменить определенные параметры конфигурации в файле модуля и использовать журнал systemd для просмотра местоположения ваших изменений в последовательности запуска.
Препарат
Убедитесь, что вы удалили rhgb
и quiet
из строки GRUB_CMDLINE_LINUX =
в файле / etc / default / grub
, как я показал во второй статье этой серии. Это позволяет вам наблюдать поток сообщений запуска Linux, который вам понадобится для некоторых экспериментов в этой статье.
Программа
В этом руководстве вы создадите простую программу, которая позволит вам наблюдать за сообщениями во время запуска на консоли, а затем в журнале systemd.
Создайте программу оболочки /usr/local/bin/hello.sh
и добавьте следующее содержимое. Вы хотите, чтобы результат был виден во время запуска и чтобы вы могли легко найти его, просматривая журнал systemd. Вы будете использовать версию программы «Hello world» с несколькими полосами вокруг нее, чтобы она выделялась. Убедитесь, что файл является исполняемым и принадлежит пользователю и группе root с разрешениями 700 для безопасности:
#! / Usr / bin / bash
# Простая программа для тестирования конфигураций запуска
# с systemd.
# Дэвид Оба
# Лицензия GPL V2
#
echo "#############################"
echo "######### Hello World! ########"
echo "######################## ###### "
Запустите эту программу из командной строки, чтобы убедиться, что она работает правильно:
[root @ testvm1 ~] # hello.sh
##############################
##### #### Привет, мир! ########
##############################
[root @ testvm1 ~] #
Эта программа может быть создана на любом языке сценариев или компилируемом языке.Программа hello.sh
также может быть размещена в других местах на основе иерархической структуры файловой системы (FHS) Linux. Я помещаю его в каталог / usr / local / bin
, чтобы его можно было легко запустить из командной строки, не добавляя путь при вводе команды. Я считаю, что многие из создаваемых мной программ оболочки необходимо запускать из командной строки и другими инструментами, такими как systemd.
Файл служебной единицы
Создайте файл служебной единицы / etc / systemd / system / hello.сервис
со следующим содержанием. Этот файл не обязательно должен быть исполняемым, но для безопасности ему необходимо владение пользователем и группой с правами root и 644 или 640 разрешений:
# Простой служебный файл модуля для тестирования
# конфигураций запуска с помощью systemd.
# Дэвид Оба
# Лицензия GPL V2
#[Unit]
Описание = My hello shell script[Service]
Type = oneshot
ExecStart = / usr / local / bin / hello.sh[Установить ]
WantedBy = многопользовательский.цель
Убедитесь, что файл служебной единицы работает должным образом, просмотрев статус службы. Здесь будут отображаться любые синтаксические ошибки:
[root @ testvm1 ~] # systemctl status hello.service
● hello.service - мой сценарий оболочки hello
Загружено: загружено (/etc/systemd/system/hello.service; отключено; предустановка поставщика: отключено)
Активно: неактивный (мертвый)
[root @ testvm1 ~] #
Вы можете без проблем запускать этот тип службы "oneshot" несколько раз.Тип oneshot предназначен для служб, в которых программа, запускаемая файлом служебного модуля, является основным процессом и должна завершиться до того, как systemd запустит какой-либо зависимый процесс.
Существует семь типов сервисов, и вы можете найти объяснение каждого (вместе с другими частями файла сервисного модуля) на справочной странице systemd.service (5). (Вы также можете найти дополнительную информацию в ресурсах в конце этой статьи.)
Как бы мне ни было любопытно, я хотел посмотреть, как может выглядеть ошибка.Итак, я удалил «o» из строки Type = oneshot
, чтобы она выглядела как Type = neshot
, и снова выполнил команду:
[root @ testvm1 ~] # статус systemctl hello.service
● hello.service - мой сценарий оболочки hello
Загружено: загружено (/etc/systemd/system/hello.service; отключено; предустановка поставщика: отключено)
Активный: неактивный (мертвый)6 мая 08:50:09 testvm1.both.org systemd [1]: /etc/systemd/system/hello.service:12: Не удалось проанализировать тип службы, игнорирование: neshot
[root @ testvm1 ~] #
Эти результаты точно указали мне, где была ошибка, и упростили решение проблемы.
Просто имейте в виду, что даже после восстановления файла hello.service
в исходную форму ошибка не исчезнет. Хотя перезагрузка устранит ошибку, вам не нужно этого делать, поэтому я стал искать способ устранения постоянных ошибок, подобных этой. Я столкнулся с ошибками службы, для которых требуется команда systemctl daemon-reload
для сброса состояния ошибки, но в данном случае это не сработало. Сообщения об ошибках, которые могут быть исправлены с помощью этой команды, всегда содержат соответствующее утверждение, так что вы знаете, что нужно запустить. Однако рекомендуется запускать systemctl daemon-reload
после изменения файла модуля или создания нового. Это уведомляет systemd о внесенных изменениях и может предотвратить определенные типы проблем с управлением измененными службами или модулями. Вперед и запустите эту команду.
После исправления орфографической ошибки в файле служебной единицы простой systemctl restart hello.service
устранил ошибку. Поэкспериментируйте, добавив некоторые другие ошибки в сообщение hello.service
, чтобы узнать, какие результаты вы получите.
Запустить службу
Теперь вы готовы запустить новую службу и проверить статус, чтобы увидеть результат. Хотя вы, вероятно, выполнили перезапуск в предыдущем разделе, вы можете запускать или перезапускать службу onehot столько раз, сколько захотите, поскольку она запускается один раз, а затем завершается.
Запустите службу (как показано ниже), а затем проверьте состояние. В зависимости от того, сколько вы экспериментировали с ошибками, ваши результаты могут отличаться от моих:
[root @ testvm1 ~] # systemctl start привет.служба
[root @ testvm1 ~] # systemctl status hello.service
● hello.service - мой сценарий оболочки hello
Загружено: загружено (/etc/systemd/system/hello.service; отключено; предустановка поставщика: отключено)
Активный: неактивный (мертвый)10 мая 10:37:49 testvm1.both.org hello.sh [842]: ######### Hello World! ########
10 мая 10:37:49 testvm1.both.org hello.sh [842]: ###################### #########
10 мая 10:37:49 testvm1.both.org systemd [1]: hello.service: Успешно.
10 мая 10:37:49 testvm1.both.org systemd [1]: Завершено Сценарий оболочки моего приветствия.
10 мая 10:54:45 testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: #### ###########################
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ### ###### Привет, мир! ########
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ##################### #########
10 мая 10:54:45 testvm1.both.org systemd [1]: hello.service: Успешно.
10 мая 10:54:45 testvm1.both.org systemd [1]: Завершено Сценарий оболочки моего приветствия.
[root @ testvm1 ~] #
Обратите внимание, что в выходных данных команды status сообщения systemd указывают, что сценарий hello.sh
запущен и служба завершена. Вы также можете увидеть вывод скрипта. Это отображение создается на основе записей журнала о последних вызовах службы. Попробуйте запустить службу несколько раз, а затем снова запустите команду status, чтобы понять, что я имею в виду.
Вам также следует напрямую посмотреть содержимое журнала; есть несколько способов сделать это.Один из способов - указать идентификатор типа записи, в данном случае имя сценария оболочки. Здесь отображаются записи журнала для предыдущих перезагрузок, а также текущего сеанса. Как видите, я уже некоторое время исследую и тестирую эту статью:
[root @ testvm1 ~] # journalctl -t hello.sh
- Перезагрузка -
8 мая, 15:55:47 testvm1.both.org hello.sh [840]: ##### #########################
8 мая 15:55:47 testvm1.both.org hello.sh [840]: #### ##### Привет, мир! ########
8 мая 15:55:47 testvm1.both.org hello.sh [840]: #############################
- Перезагрузка -
, 8 мая. 16:01:51 testvm1.both.org hello.sh [840]: ##############################
май 08 16:01:51 testvm1.both.org hello.sh [840]: ######### Hello World! ########
8 мая 16:01:51 testvm1.both.org hello.sh [840]: ###################### #########
- Перезагрузка -
10 мая 10:37:49 testvm1.both.org hello.sh [842]: ############### ################
10 мая 10:37:49 testvm1.both.org hello.sh [842]: ######### Hello World! ########
10 мая 10:37:49 testvm1.both.org hello.sh [842]: ##############################
10 мая 10:54:45 testvm1 .both.org hello.sh [1380]: ##############################
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ######### Привет, мир! ########
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ##################### #########
[root @ testvm1 ~] #
Чтобы найти записи systemd для модуля hello.service
, вы можете выполнить поиск в systemd. Вы можете использовать G + Введите , чтобы пролистать записи журнала до конца, а затем прокрутить назад, чтобы найти те, которые вам интересны.Используйте опцию -b
, чтобы отображать только записи для самого последнего запуска:
[root @ testvm1 ~] # journalctl -b -t systemd
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск SYSV: Поздний сценарий инициализации для живого образа ....
10 мая 10:37:49 testvm1.both.org systemd [1]: запущен SYSV: сценарий поздней инициализации для живого образа ..
10 мая 10:37:49 testvm1.both.org systemd [1]: hello.service : Успешно.
10 мая, 10:37:49 testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
10 мая 10:37:50 testvm1.both.org systemd [1]: запуск шины системных сообщений D-Bus ...
10 мая 10:37:50 testvm1.both.org systemd [1]: запущен D-Bus Системная шина сообщений.
Я скопировал несколько других записей журнала, чтобы дать вам представление о том, что вы можете найти. Эта команда выводит все строки журнала, относящиеся к systemd - 109 183 строк, когда я писал это. Это много данных, которые нужно разобрать. Вы можете использовать средство поиска пейджера, которое обычно составляет минус
, или вы можете использовать встроенную функцию grep
.Параметр -g
(или --grep =
) использует Perl-совместимые регулярные выражения:
[root @ testvm1 ~] # journalctl -b -t systemd -g "hello"
[root @ testvm1 ~] # journalctl -b -t systemd -g "hello"
- Журналы начинаются во вторник 2020-05- 05 18:11:49 EDT, конец в Sun 2020-05-10 11:01:01 EDT. -
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:37:49 testvm1.both.org systemd [1]: hello.service: Удалось.
10 мая 10:37:49 testvm1.both.org systemd [1]: Завершено Сценарий оболочки моего приветствия.
10 мая 10:54:45 testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:54:45 testvm1.both.org systemd [1]: hello.service: Успешно.
10 мая 10:54:45 testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
[root @ testvm1 ~] #
Вы можете использовать стандартную команду GNU grep
, но она не покажет метаданные журнала в первой строке.
Если вы не хотите видеть только записи журнала, относящиеся к вашей службе hello
, вы можете немного сузить круг вопросов, указав временной диапазон.Например, я начну с времени начала 10:54:00
на моей тестовой виртуальной машине, что было началом минуты, с которой были взяты указанные выше записи. Обратите внимание, что параметр --since =
должен быть заключен в кавычки и что этот параметр также может быть выражен как -S "<спецификация времени>"
.
Дата и время будут отличаться на вашем хосте, поэтому обязательно используйте метки времени, которые соответствуют времени в ваших журналах:
[root @ testvm1 ~] # journalctl --since = "2020-05-10 10:54:00"
10 мая 10:54:35 testvm1.both.org audit: BPF prog-id = 54 op = LOAD
10 мая 10:54:35 testvm1.both.org audit: BPF prog-id = 55 op = LOAD
10 мая 10:54:45 testvm1.both. org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ############### ###############
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ######### Hello World! ########
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ###################### #########
10 мая 10:54:45 testvm1.both.org systemd [1]: привет.сервис: Успешно.
10 мая 10:54:45 testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
10 мая 10:54:45 testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd "'
10 мая 10:54:45 testvm1.both.org audit [1]: SERVICE_STOP pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg =' unit = hello comm =" systemd "exe =" / usr / lib / systemd / "'
10 мая, 10:56:00 testvm1.both.org NetworkManager [840]: <ошибка> [15860.0633] dhcp4 (enp0s3): ошибка -113 отправка событий
10 мая 10:56:00 testvm1.both.org NetworkManager [840]:[158 60.0634] dhcp4 (enp0s3): граница состояния изменена -> сбой
Спецификация
, начиная с
пропускает все записи до этого времени, но после этого времени все еще остается много записей, которые вам не нужны. Вы также можете использовать опцию отдо
, чтобы обрезать записи, которые появляются немного позже интересующего вас времени.Мне нужна вся минута, когда произошло событие, и не более:[root @ testvm1 ~] # journalctl --since = "2020-05-10 10:54:35" --until = "2020-05-10 10:55:00"
- Регистрация начинается во вторник 2020 г. -05-05 18:11:49 EDT, конец в Sun 2020-05-10 11:04:59 EDT. -
10 мая, 10:54:35 testvm1.both.org systemd [1]: Перезагрузка.
10 мая 10:54:35 testvm1.both.org audit: BPF prog-id = 27 op = UNLOAD
10 мая 10:54:35 testvm1.both.org audit: BPF prog-id = 26 op = UNLOAD
< snip>
год 10 10:54:35 testvm1.аудит both.org: BPF prog-id = 55 op = ЗАГРУЗИТЬ
10 мая 10:54:45 testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:54:45 testvm1. both.org hello.sh [1380]: ##############################
10 мая 10:54:45 testvm1 .both.org hello.sh [1380]: ######### Hello World! ########
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: ##################### #########
10 мая 10:54:45 testvm1.both.org systemd [1]: hello.service: Успешно.
10 мая 10:54:45 testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
10 мая 10:54:45 testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd>
10 мая 10:54:45 testvm1.both.org audit [1]: SERVICE_STOP pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd />
, строки 1-46 / 46 (КОНЕЦ)Если в этот период времени было много активности, вы могли бы еще больше сузить результирующий поток данных, используя комбинацию этих опций:
[root @ testvm1 ~] # journalctl --since = "2020-05-10 10:54:35" --until = "2020-05-10 10:55:00" -t "привет.sh "
- Журналы начинаются во вторник 2020-05-05 18:11:49 EDT, заканчиваются вс 2020-05-10 11:10:41 EDT. -
мая 10 10:54:45 testvm1.both. org hello.sh [1380]: ##############################
10 мая 10:54:45 testvm1.both .org hello.sh [1380]: ######### Hello World! ########
10 мая 10:54:45 testvm1.both.org hello.sh [1380]: # #############################
[root @ testvm1 ~] #Ваши результаты должны быть похожи на мои. Из этой серии экспериментов видно, что служба работает правильно.
Перезагрузка - наконец
Пока вы не перезагружали хост, на котором установили службу. Так что сделайте это сейчас, потому что, в конце концов, это руководство посвящено запуску программы при запуске. Во-первых, вам нужно разрешить запуск службы во время последовательности запуска:
[root @ testvm1 ~] # systemctl enable hello.service
Создана символическая ссылка /etc/systemd/system/multi-user.target.wants/hello.service → /etc/systemd/system/hello.service.
[root @ testvm1 ~] #Обратите внимание, что ссылка была создана в
/ etc / systemd / system / multi-user.target. хочет каталог
. Это связано с тем, что файл служебной единицы указывает, что служба «требуется» дляmulti-user.target
.Перезагрузитесь и обязательно следите за потоком данных во время последовательности запуска, чтобы увидеть сообщение «Hello world». Подождите ... вы этого не видели? Что ж, я тоже. Хотя это прошло очень быстро, я увидел сообщение systemd о том, что он запускает
hello.service
.Посмотрите журнал с момента последней загрузки системы. Вы можете использовать инструмент поиска пейджера
минус
, чтобы найти «Привет» или «Привет."Я удалил много строк данных, но оставил некоторые из окружающих записей журнала, чтобы вы могли почувствовать, как записи, относящиеся к вашей службе, выглядят локально:[root @ testvm1 ~] # journalctl -b
10 мая 10:37:49 testvm1.both.org systemd [1]: прослушивание сокета ответчика SSSD Kerberos Cache Manager.
10 мая, 10:37:49 testvm1.both.org systemd [1]: достигнуты целевые сокеты.
10 мая, 10:37:49 testvm1.both.org systemd [1]: достигнута целевая базовая система.
10 мая 10:37:49 testvm1.both.org systemd [1]: запуск диспетчера модема ...
10 мая 10:37:49 testvm1.both.org systemd [1]: запуск диспетчера сети ...
мая 10 10:37:49 testvm1.both.org systemd [1]: Запуск стека Avahi mDNS / DNS-SD ...
10 мая 10:37:49 testvm1.both.org systemd [1]: проверка условий завершилась безопасностью Пропускается загрузочная программа обновления DBX (черный список).
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск межсетевого экрана IPv4 с помощью iptables...
10 мая 10:37:49 testvm1.both.org systemd [1]: запущен демон irqbalance.
10 мая 10:37:49 testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = irqbalance comm = "systemd" exe = "/ usr / lib / sy> "'
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск LSB: сценарий инициализации для живого образа ....
10 мая 10:37:49 testvm1.both.org systemd [1 ]: Запуск датчиков мониторинга оборудования ...
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск клиента / сервера NTP...
10 мая 10:37:49 testvm1.both.org systemd [1]: Запуск SYSV: сценарий поздней инициализации для живого образа ....
10 мая 10:37:49 testvm1.both.org systemd [1] : Запущен SYSV: Поздний сценарий инициализации для живого образа ..
10 мая 10:37:49 testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = lifeys- late comm = "systemd" exe = "/ usr / lib />" '
10 мая 10:37:49 testvm1.both.org hello.sh [842]: ############# ##################
10 мая, 10:37:49 testvm1.both.org hello.sh [842]: ######### Hello World! ########
10 мая 10:37:49 testvm1.both.org hello.sh [842]: #########################################
10 мая 10:37:49 testvm1 .both.org systemd [1]: hello.service: Успешно.
10 мая, 10:37:49 testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
10 мая 10:37:49 testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd> "'
10 мая 10:37:49 testvm1.both.org audit [1]: SERVICE_STOP pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg =' unit = hello comm =" systemd "exe =" / usr / lib / systemd />
10 мая 10:37:50 testvm1.аудит both.org: BPF prog-id = 28 op = LOAD
Вы можете видеть, что systemd запустил модуль
hello.service
, который запустил сценарий оболочкиhello.sh
с выводом, записанным в журнале. Если бы вы смогли поймать его во время загрузки, вы также увидели бы сообщение systemd, указывающее, что он запускает скрипт, и другое сообщение, указывающее, что служба прошла успешно. Посмотрев на первое сообщение systemd в потоке данных выше, вы увидите, что systemd запустила вашу службу очень скоро после достижения базовой цели системы.Но я бы хотел, чтобы это сообщение отображалось и при запуске. Есть способ сделать это: Добавьте следующую строку в раздел
[Service]
файлаhello.service
:StandardOutput = журнал + консоль
Файл
hello.service
теперь выглядит так:# Простой служебный файл модуля для тестирования
# конфигураций запуска с помощью systemd.
# Дэвид Оба
# Лицензия GPL V2
#[Unit]
Описание = My hello shell script[Service]
Type = oneshot
ExecStart = / usr / local / bin / hello.sh
StandardOutput = journal + console[Установить]
WantedBy = multi-user.targetПосле добавления этой строки перезагрузите систему и наблюдайте за потоком данных, пока он прокручивает экран вверх во время процесса загрузки. Вы должны увидеть сообщение в его маленьком ящике. После завершения последовательности запуска вы можете просмотреть журнал последней загрузки и найти записи для вашей новой службы.
Изменение последовательности
Теперь, когда ваша служба работает, вы можете посмотреть, где она начинается в последовательности запуска, и поэкспериментировать с ее изменением.Важно помнить, что намерение systemd состоит в том, чтобы запустить как можно больше служб и других типов модулей параллельно в рамках каждой из основных целей:
basic.target
,multi-user.target
иgraphical.target
. Вы должны были видеть записи журнала для последней загрузки, которые должны быть похожи на мой журнал в выходных данных выше.Обратите внимание, что systemd запустила вашу тестовую службу вскоре после того, как достигла целевой базовой системы. Это то, что вы указали в файле служебной единицы в строке
WantedBy
, так что это правильно.Прежде чем что-либо менять, перечислите содержимое каталога/etc/systemd/system/multi-user.target.wants
, и вы увидите символическую (программную) ссылку на файл служебного модуля. В разделе[Install]
файла служебной единицы указывается, какая цель будет запускать службу, а запуск командыsystemctl enable hello.service
создает ссылку в соответствующем каталоге «target хочет»:hello.service -> /etc/systemd/system/hello.service
Определенные службы необходимо запустить во время базового
.target
, а другие запускать не нужно, если система не запускаетgraphical.target
. Служба в этом эксперименте не будет запускаться вbasic.target
- предположим, вам не нужно запускать ее доgraphical.target
. Так что измените строкуWantedBy
:WantedBy = graphical.target
Обязательно отключите
hello.service
и снова включите его, чтобы удалить старую ссылку и добавить новую в графике.targets.wants
каталог. Я заметил, что если я забуду отключить службу перед изменением цели, которая ее хочет, я могу запустить командуsystemctl disable
, и ссылки будут удалены из обоих каталогов «target хочет». Затем мне просто нужно повторно включить службу и перезагрузить компьютер.Одна проблема с запуском служб в
graphical.target
заключается в том, что если хост загружается наmulti-user.target
, эта служба не запускается автоматически. Это может быть то, что вам нужно, если для службы требуется графический интерфейс рабочего стола, но это также может быть не то, что вам нужно.Посмотрите записи журнала для
graphical.target
иmulti-user.target
, используя опцию-o short-monotonic
, которая отображает секунды после запуска ядра с точностью до микросекунд:[root @ testvm1 ~] # journalctl -b -o short-monotonic
Некоторые результаты для
multi-user.target
:[17.264730] testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
[17.265561] testvm1.both.org systemd [1]: Запуск брандмауэра IPv4 с помощью iptables ...
[19.478468] testvm1.both.org systemd [1]: Запуск LSB: сценарий инициализации для живого образа ....
[19.507359] testvm1.both.org iptables.init [844]: iptables: Применение правил брандмауэра: [OK]
[19.507835] testvm1.both.org hello.sh [843]: ######### #####################
[19.507835] testvm1.both.org hello.sh [843]: ######### Hello World! ########
[19.507835] testvm1.both.org привет.sh [843]: #############################
[21.482481] testvm1.both.org systemd [1]: hello.service: Успешно.
[21.482550] testvm1.both.org smartd [856]: Открыл файл конфигурации /etc/smartmontools/smartd.conf.
[21.482605] testvm1.both.org systemd [1]: Готово, сценарий оболочки моего приветствия.И некоторые результаты для
graphical.target
:[19.436815] testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
[19.437070] testvm1.both.org systemd [1]: запуск межсетевого экрана IPv4 с iptables ...
[19.612614] testvm1.both.org hello.sh [841]: ########## ####################
[19.612614] testvm1.both.org hello.sh [841]: ######### Hello World! ########
[19.612614] testvm1.both.org hello.sh [841]: ######################### #####
[19.629455] testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd / systemd "hostname =?" адрес =? терминал =? res = success '
[19.629569] testvm1.both.org audit [1]: SERVICE_STOP pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd / systemd" hostname = ? адрес =? терминал =? res = success '
[19.629682] testvm1.both.org systemd [1]: hello.service: Успешно.
[19.629782] testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.Несмотря на наличие
graphical.target
«want» в файле модуля, модульhello.service
работает около 19.5 или 19,6 секунды после запуска. Ноhello.service
запускается примерно через 17,24 секунды вmulti-user.target
и 19,43 секунды в графической цели.Что это значит? Посмотрите ссылку
/etc/systemd/system/default.target
. Содержимое этого файла показывает, что systemd сначала запускает цель по умолчанию,graphical.target
, которая затем извлекаетmulti-user.target
:[root @ testvm1 system] # cat default.target
# Идентификатор лицензии SPDX: LGPL-2.1+
#
# Этот файл является частью systemd.
#
# systemd - бесплатное программное обеспечение; вы можете распространять и / или изменять его
# в соответствии с условиями Стандартной общественной лицензии ограниченного применения GNU, опубликованной
# Free Software Foundation; либо версии 2.1 Лицензии, либо
# (по вашему выбору) любой более поздней версии.[Unit]
Описание = графический интерфейс
Documentation = man: systemd.special (7)
Требуется = multi-user.target
Требуется = display-manager.service
Конфликты = спасение.service rescue.target
After = multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate = yes
[root @ testvm1 system] #Независимо от того, запускает ли он службу с помощью
graphical.target
илиmulti-user.target
, модульhello.service
запускается примерно через 19,5 или 19,6 секунды после запуска. На основании этого и результатов журнала (особенно тех, которые используют монотонный вывод), вы знаете, что обе эти цели запускаются параллельно.Посмотрите еще на одну вещь из журнала:[28.397330] testvm1.both.org systemd [1]: достигнута целевая многопользовательская система.
[28.397431] testvm1.both.org systemd [1]: достигнут целевой графический интерфейс.Обе мишени завершаются почти одновременно. Это согласовано, потому что
graphical.target
тянет за собойmulti-user.target
и не может завершиться, пока не будет достигнута цель multi.user , т.е. Но привет.обслуживание заканчивается намного раньше этого.Все это означает, что эти две цели запускаются практически параллельно. Если вы изучите записи журнала, вы увидите различные цели и услуги от каждой из этих основных целей, запускаемых в основном параллельно. Понятно, что
multi-user.target
не нужно завершать до запускаgraphical.target
. Следовательно, простое использование этих основных целей для последовательного запуска не очень хорошо работает, хотя может быть полезно для обеспечения того, чтобы блоки запускались только тогда, когда они необходимы для графического объекта.цель
.Перед тем, как продолжить, измените файл модуля
hello.service
наWantedBy = multi-user.target
(если это еще не сделано).Убедитесь, что служба запускается после запуска сети
Распространенная проблема с последовательностью запуска - обеспечение того, чтобы устройство запускалось после того, как сеть была запущена и работает. В статье Freedesktop.org «Запуск служб после запуска сети» говорится, что нет реального консенсуса относительно того, когда сеть считается «работающей». Однако в статье представлены три варианта, и тот, который отвечает потребностям полностью работоспособной сети, - это
network-online.цель
. Просто имейте в виду, чтоnetwork.target
используется во время завершения работы, а не при запуске, поэтому он не принесет вам никакой пользы, когда вы попытаетесь упорядочить запуск.Перед внесением любых других изменений обязательно проверьте журнал и убедитесь, что модуль
hello.service
запускается задолго до подключения к сети. Вы можете найтиnetwork-online.target
в журнале, чтобы проверить.Ваша служба на самом деле не требует сетевой службы, но вы можете использовать ее в качестве аватара для тех, кто ей нужен.
Поскольку установка
WantedBy = graphical.target
не гарантирует, что служба будет запущена после того, как сеть будет запущена, вам нужен другой способ убедиться в этом. К счастью, есть простой способ сделать это. Добавьте следующие две строки в раздел[Unit]
файла модуляhello.service
:После = network-online.target
Хочет = network-online.цельОбе эти записи необходимы для работы. Перезагрузите хост и найдите в журналах расположение записей о вашем сервисе:
[26.083121] testvm1.both.org NetworkManager [842]:
[158 64.0293] устройство (enp0s3): Активация: успешна, устройство активировано.
[26.083349] testvm1.both.org NetworkManager [842]: <информация> [15864.0301] менеджер: состояние NetworkManager теперь CONNECTED_GLOBAL
[26.085818] testvm1.both.org NetworkManager [842]:[158 64.0331] менеджер: запуск завершен
] testvm1.both.org systemd [1]: достигнутая целевая сеть находится в сети.
[26.089911] testvm1.both.org systemd [1]: завершен сетевой менеджер Ожидание в сети.
[26.0
[26.0] testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = NetworkManager-wait-online comm = "systemd" exe = "/ usr / lib / systemd / systemd "hostname =?" адрес =? termina> "'
[26.0] testvm1.both.org systemd [1]: Запуск сценария оболочки My hello ...
[26.095864] testvm1.both.org sssd [be [implicit_files]] [1007]: Запуск
[26.2] testvm1.both.org systemd [1 ]: Проверка условий привела к пропуску входа в систему и сканирования устройств iSCSI.
[26.2] testvm1.both.org systemd [1]: достигнута целевые удаленные файловые системы (предварительная версия).
[26.2] testvm1.both.org systemd [1]: Достигнуты целевые удаленные файловые системы.
[26.2] testvm1.both.org systemd [1]: Запуск Уведомление узлов NFS о перезапуске...
[26.294897] testvm1.both.org systemd [1]: iscsi.service: Невозможно перезагрузить модуль, поскольку он неактивен.
[26.304682] testvm1.both.org hello.sh [1010]: #############################
[26.304682 ] testvm1.both.org hello.sh [1010]: ######### Привет, мир! ########
[26.304682] testvm1.both.org hello.sh [1010]: ######################### #####
[26.306569] testvm1.both.org audit [1]: SERVICE_START pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd / systemd "hostname =? адрес =? терминал =? res = success '
[26.306669] testvm1.both.org audit [1]: SERVICE_STOP pid = 1 uid = 0 auid = 4294967295 ses = 4294967295 msg = 'unit = hello comm = "systemd" exe = "/ usr / lib / systemd / systemd" hostname = ? адрес =? терминал =? res = success '
[26.306772] testvm1.both.org systemd [1]: hello.service: Успешно.
[26.306862] testvm1.both.org systemd [1]: завершено Мой сценарий оболочки hello.
[26.584966] testvm1.both.org sm-notify [1011]: версия 2.4.3, начиная сЭто подтверждает, что модуль
hello.service
запущен послеnetwork-online.цель
. Это именно то, что вам нужно. Вы также могли видеть сообщение «Hello World» во время запуска. Также обратите внимание, что временная метка при запуске ставится примерно на шесть секунд позже, чем была раньше.Лучший способ определить последовательность запуска
В этой статье более подробно исследуется запуск Linux с использованием файлов systemd и unit и журналов, а также выясняется, что происходит, когда в служебный файл вносятся ошибки. Как системный администратор, я считаю, что этот тип экспериментов помогает мне понять поведение программы или службы при ее сбоях, а намеренное нарушение работы - хороший способ учиться в безопасной среде.
Как показали эксперименты в этой статье, простое добавление служебной единицы к
multi-user.target
илиgraphical.target
не определяет ее место в стартовой последовательности. Он просто определяет, запускается ли модуль как часть графической среды или нет. Реальность такова, что стартап нацелен наmulti-user.target
иgraphical.target
- и все их требования и требования - запускаются практически параллельно. Лучший способ убедиться, что модуль запускается в определенном порядке, - это определить модуль, от которого он зависит, и настроить новый модуль на «Требуется» и «После» модуля, от которого он зависит.Ресурсы
В Интернете есть много информации о systemd, но она является краткой, непонятной или даже вводящей в заблуждение. В дополнение к ресурсам, упомянутым в этой статье, следующие веб-страницы предлагают более подробную и достоверную информацию о запуске systemd.
- У проекта Fedora есть хорошее практическое руководство по systemd. В нем есть почти все, что вам нужно знать для настройки, управления и обслуживания компьютера Fedora с помощью systemd.
- В проекте Fedora также есть хорошая шпаргалка, в которой старые команды SystemV сопоставляются с аналогичными командами systemd.
- Подробную техническую информацию о systemd и причинах ее создания можно найти в описании systemd на Freedesktop.org.
- Linux.com «Больше удовольствия от системы» предлагает более подробную информацию и советы по системе.
Существует также серия глубоко технических статей для системных администраторов Linux от Леннарта Поеттеринга, дизайнера и основного разработчика systemd.