Перейти к содержимому

Force stop list как отключить

  • автор:

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

Тема получения сообщения ACTION_BOOT_COMPLETED остается актуальной и по сей день. Многие новички сталкиваются с проблемой: они не получают в своих приложениях данное сообщение.

Можно выделить следующие правила:

В манифесте указать разрешение:

В манифесте в блоке application зарегистрировать приёмник на приём сообщения ACTION_BOOT_COMPLETED:

В описании без необходимости не указывайте атрибуты «enabled», «exported» и т.д. Вполне достаточно настроек и атрибутов по умолчанию.

Код вашего широковещательного приёмника:

 public class BootCompletedReceiver extends BroadcastReceiver < public BootCompletedReceiver() < >public void onReceive(Context context, Intent intent) < if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) < // ваш код здесь >> > 

Если ваш приёмник используется только для сообщения ACTION_BOOT_COMPLETED, то проверка «if» не обязательна. Однако иногда разработчики используют один и тот же ресивер для разных сообщений. В этом случае фильтруйте сообщения, проверяя их внутри метода onReceive().

Приложение должно быть установлено на внутреннюю память. Android устроена таким образом, что сообщение ACTION_BOOT_COMPLETED отправляется приложениям перед монтированием внешний памяти. Поэтому приложения, установленные на внешней памяти, никогда не получат это сообщение. Чтобы указать системе не устанавливать приложение на внешнюю память, в манифесте НЕ нужно прописывать для атрибута «@android:installLocation» значения «auto» или «preferExternal». По умолчанию, т.е. если этот атрибут не указан, Android установит ваше приложение только на внутреннюю память. Однако согласно официальной документации лучше явно указать значение «internalOnly», чтобы у вас и других разработчиков не возникло искушение в будущем указать иное значение.

После установки или принудительной остановки (force stop) приложение должно быть запущено хотя бы один раз, чтобы система «запомнила» это приложение для отправки ему сообщения ACTION_BOOT_COMPLETED. Такое поведение было реализовано в версии Android 3.1 в целях безопасности. В чем суть? Все только что установленные приложения находятся в состоянии «stopped» (не путать с активити, т.к. система управляет этим состоянием у приложений и активностей по-разному). В это же состояние приложение «уходит», когда пользователь в настройках телефона принудительно его останавливает. Пока приложение находится в таком состоянии, оно не будет запущено системой ни по какой причине (например, через ACTION_BOOT_COMPLETED), исключая, конечно же, запуск самим пользователем. Благодаря такому нововведению немалая часть вирусов и троянцев» перестала работать, т.к. уже нет возможности запуститься автоматом после установки.

Исключение составляют системные приложения.

Особенности режима Fast boot в HTC-устройствах: Известно, что HTC-устройства не перезагружаются в классическом смысле, а используют так называемый режим Fast boot (это одна из форм гибернации), сохраняя состояние ОС на диск. Поэтому сообщение ACTION_BOOT_COMPLETED не отправляется системой, т.к. в действительности перезагрузка не происходит. Вместо ACTION_BOOT_COMPLETED система может отправить следующие сообщения:

В вашем приложении укажите в теге «receiver» кроме ACTION_BOOT_COMPLETED также вышеуказанные сообщения. Кроме этого необходимо прописать дополнительное разрешение:

Практика: ошибки и особенности эксплуатации

Разберём ошибки, которые совершают новички при настройке приложения и в коде.

  • После установки или force stop приложение ни разу не запускалось.
  • Приложение установлено не на внутренней памяти, или пользователь вручную перенес его на внешнюю память.
  • У некоторых разработчиков приём начинал работать, когда они указывали относительное имя класса приёмника.
  • Также некоторые разработчики в Logcat не видели своих сообщений из ресивера. Используйте Toast для отладки:

 Toast toast = Toast.makeText(context.getApplicationContext(), context.getResources().getString(R.string.your_message), Toast.LENGTH_LONG); toast.show(); 

Отладка ресивера в эмуляторе и на реальных устройствах

В терминале выполните:

 adb shell 

Далее, чтобы отправить ACTION_BOOT_COMPLETED всем приложениям, наберите в терминале:

 am broadcast -a android.intent.action.BOOT_COMPLETED 

Или для отправки ACTION_BOOT_COMPLETED конкретному приложению наберите в терминале:

 am broadcast -a android.intent.action.BOOT_COMPLETED your.package.name 

В эмуляторе: установите ваше ПО, запустив его из студии. При этом студия соберет ваш проект, установит приложение и запустит его. После этого закройте эмулятор (это аналогично выключению на реальном устройстве). Чтобы получить сообщение ACTION_BOOT_COMPLETED, запустите эмулятор из AVD-менеджера, а не с помощью кнопки «Run app» в студии.

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

Итоги

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

Код ресивера, как правило, будет таким:

 public class BootCompletedReceiver extends BroadcastReceiver < public BootCompletedReceiver() < >public void onReceive(Context context, Intent intent) < if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) < Toast toast = Toast.makeText(context.getApplicationContext(), context.getResources().getString(R.string.your_message), Toast.LENGTH_LONG); toast.show(); Log.d("myapp", context.getResources().getString(R.string.your_message); // ваш код здесь >> > 

Удалить системные приложения с телефона Android [System App Remover]

Android — одна из самых популярных мобильных операционных систем во всем мире, и мы все это знаем. Самое лучшее в использовании Android — это свобода настройки и огромная поддержка приложений. Для Android доступны тысячи приложений и игр, которые можно загрузить из Google Play Store. Всякий раз, когда вы покупаете новый телефон, вы могли заметить, что некоторые приложения предустановлены на устройстве, и это не ограничивается только Android. Почти все популярные мобильные ОС, такие как iOS, WindowsPhone, Bada, Blackberry и WebOS, поставляются с предустановленными приложениями. Что ж, некоторые из них могут быть полезны пользователям, но большинство из них никто не открывал за всю жизнь. Эти предустановленные приложения широко известны как «раздутые программы», и большинство людей часто ищут руководства по удалению предустановленных приложений на Android.

Если вы среди них, то вы попали на правильную страницу. Здесь, в этом посте, мы расскажем вам о вредоносных приложениях и о том, как вы можете удалить системные приложения с Android до и после рутирования. Итак, вопрос здесь в том, что эти приложения заслуживают того, чтобы их выбросили? Ну, это НЕТ. Хотя некоторые вредоносные программы могут показаться бесполезными, некоторые из них действительно полезны. Единственная причина для удаления или удаления этих приложений заключается в том, что некоторые из них спонсируются по своей природе, и они потребляют память вашего устройства и оперативную память. Многие из этих предустановленных приложений продолжают работать в фоновом режиме, поэтому ваше устройство может работать медленнее. Так что, если вы хотите удалить эти бесполезные системные приложения с Android, эта статья может оказаться вам полезной.

Удалить системные приложения с Android

Здесь важно помнить, что вы не можете удалить или удалить системные приложения с телефонов или планшетов Android из меню «Настройки». Возможно, вам придется рутировать свое устройство, прежде чем вы сможете полностью удалить их из своей системы. Это может быть технический процесс, и мало кто знает о рутировании устройства и прочем. Итак, здесь, в этом посте, вы можете найти простую пошаговую процедуру удаления предустановленных приложений с телефонов и планшетов Android. Неважно, есть ли у вас рутированный Android или нет, вы можете найти способы удаления системных приложений из них обоих. Итак, приступим.

Переключать

Как деактивировать предварительно загруженные приложения | Удаление системных приложений Android без рута

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

  • Прежде всего открыть Настройки вашего Android-устройства. Почти все Android имеют значок шестеренки в настройках, так что вы можете легко его найти.

Кнопка настроек Android

  • Теперь меню настроек может отличаться от устройства к устройству, поэтому вам придется искать что-то под названием Приложения или приложения. Найдя его, нажмите на него, чтобы открыть.

Настройки Android-приложения

  • Вы попадете в другое меню, где сможете увидеть все приложения вашего устройства.
  • Теперь вы можете проверить, какое приложение использует больше всего памяти, а затем открыть его, чтобы отключить.
  • Например, здесь у нас есть Dictionary приложение, которое является ненужным приложением для большинства пользователей.

нажмите отключить словарь

  • Нажмите на приложение, которое хотите отключить, после чего вы попадете на страницу параметров приложения.
  • Теперь вы можете найти два варианта «Отключить» и «Force Stop».
  • Если вы будете Остановить приложение, затем оно будет запускаться снова всякий раз, когда вы перезагружаете устройство.
  • Нам нужно отключить приложение, поэтому нажмите на Отключить кнопку.

Отключить приложения для Android

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

Отключить предустановленные приложения Android

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

Включить отключенное приложение Android

Как удалить/удалить предустановленные приложения с Android

Выполнив указанные шаги, вы сможете отключить приложения на своих телефонах и планшетах Android. Хотя, если вы используете Android-устройство с root-правами, у вас есть больше возможностей для управления вашим устройством. Более того, если вы не можете найти параметр «Отключить» в меню, о котором мы вам говорили, возможно, вы используете более старую версию Android. Теперь либо вам придется рутировать свое устройство, чтобы отключить или удалить их, либо оставить телефон как есть. В Интернете доступно множество приложений и учебных пособий, в которых рассказывается, как получить root права на устройство Android с использованием компьютера или без него.

Вскоре мы опубликуем руководство о том, как получить root права на телефоны и планшеты Android. До тех пор вы можете использовать любой другой учебник, доступный в Интернете. Мы рекомендуем вам использовать YouTube для этого, так как вы можете получить визуальные инструкции там, и вы можете сделать то же самое, не беспокоясь. Итак, как только вы рутировали свое устройство, пришло время включить режим отладки по USB. Для этого перейдите в «Настройки»> «Приложения»> «Параметры разработчика», и там вы можете найти параметр «Отладка по USB», просто включите его.

  • Первое, что вам нужно сделать, это сделать резервную копию вашего устройства, чтобы никакие данные не были потеряны в процессе.
  • Для этого мы рекомендуем вам скачать Титаниум Бэкап приложение
  • После загрузки просто сделайте резервную копию своего устройства и переместите ее в другое место.
  • Теперь скачайте и установите Система для удаления приложений от Google Play Маркет .
  • Доступно несколько приложений с похожим названием, но вам придется загрузить приложение, разработанное «Юмобиль».

Система для удаления приложений

  • Когда вы установили его, просто откройте его, и он попросит вас предоставить Запрос суперпользователя.
  • Просто дайте ему разрешение, и вы попадете на главную страницу приложения.
  • Вы найдете опцию с именем «Системные приложения» в разделе «Менеджер» нажмите на него.

Системные приложения

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

Удалить системные приложения с Android

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

Удаление вредоносных программ с Android

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

Восстановить предустановленные приложения Android

Заметка — Вы также можете использовать Лаки Патчер приложение делать резервные копии и удалять системные приложения одним щелчком мыши. (Это также требует, чтобы ваш телефон был рутирован).

Выводы

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

Устройства Android с root-доступом могут использовать корневой APK для удаления системных приложений, чтобы легко избавиться от нежелательных приложений, включая предустановленные приложения. Теперь вы знаете, как удалить предустановленные приложения Android, и мы надеемся, что теперь вы сможете их удалить. Если вы знаете о каких-либо других методах удаления предустановленных приложений с Android или столкнулись с какими-либо проблемами с упомянутым выше руководством, вы можете сообщить нам об этом в комментариях ниже.

Как в Android запрещали фоновую работу и улучшали расход батареи

Когда-то работа в фоне была простой. Теперь в Android есть множество ограничений: работа в фоне, доступ к файловой системе, разрешения, на которые надо получить одобрение модераторов Google Play, и другие. Со всеми ими разработчикам приходится работать. Недавно я выступил с докладом на эту тему на конференции DUMP, а теперь написал текст на его основе для Хабра. Давайте вспомним, с чего все начиналось и как менялись требования с каждой новой версией Android.

Если вам интересно следить за самыми последними новостями Android разработки и получать подборку интересных статей по этой тематике, тогда вам стоит подписаться на Телеграм-канал Android Broadcast и мой YouTube канал «Android Broadcast»

Что было вначале

До Android 5.0 у нас был следующий набор инструментов, чтобы выполнять задачи в фоне:

  • Alarm Manager. Инструмент, который позволяет поставить будильник в системе и получать уведомления.
  • Broadcast Intent. Уведомления о событиях, которые происходят в системе. Например, о новых сообщениях.
  • Service — Background, Foreground, Bound.
  • Sync Adapter. Специальная древняя штука, которая связана с менеджментом аккаунтов для синхронизации данных. Яркий пример: при настройке Google-аккаунта в Android можно настроить синхронизацию календаря, контактов и других сервисов. Под капотом она работает через Sync Adapter. До наших дней инструмент не дожил.
  • Download Manager. Утилита, которая позволяет загружать файлы. Она не очень умная, но простая и удобная. Google Play, например, именно ею файлы и загружает.

Проблемы появились, потому что разработчики не соблюдали правило Человека-паука: «С большими возможностями для разработчиков приходит ответственность за скорость работы системы». Google с первых же версий Android дал им огромные возможности, но не предупредил, что они работают в системе, которая несет ответственность за качество.

Когда у пользователей что-то ломалось, они винили не сторонних разработчиков, а говорили: «Android тормозит, вот на IPhone все быстро». Получалось, что разработчики хорошие, а Google плохой.

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

  • Дилемма «размер батареи против габаритов устройства». Все хотят тонкие устройства, которые мало весят и приятно ложатся в руку. При этом всем нужна большая и мощная батарея. С этим врагом бороться трудно.
  • Экран. Все хотят высокую яркость и цветопередачу, но экран — основное место, куда тратится энергия смартфона.
  • Оптимизация прошивки под железо устройства. То, чем занимаются вендоры.
  • Сторонние разработчики. То есть мы с вами.
  • Вопрос, как продать крутой смартфон. У крутого смартфона мощное железо, а оно ест много энергии. Продать крутой смартфон с бюджетным процессором невозможно. Нужно поставить такой, что греется, как печка, и сумасшедше тратит энергию, но зато все делает быстро.
  • Маркетинг, который старается обмануть наши ожидания. Выпуская новое поколение смартфонов, производители говорят: мы перешли на четыре нанометра, на три, на два, поэтому у нас повысилась энергоемкость. Она повысилась, но все, что сэкономили на расходе электроэнергии, мы отдали новым транзисторам. И в итоге только увеличили энергопотребление.

Android 5.0

Google все это надоело, и там решили, что на сторонних разработчиков полагаться нельзя, ведь это самые большие пираты в экосистеме Android. И тогда появился Project Volta.

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

JobScheduler API. Новый системный сервис, единая точка входа для выполнения большинства фоновых операций. Также новый сервис позволил задавать комфортные условия для выполнения операций. Например, операция совершается, когда устройство подключено к зарядке, не используется владельцем или есть доступ к сети с заданными требованиями.

Самое интересное: JobScheduler не использовался в Android 5.0, потому что был жутко забагованный. Заработал он только в Android 6.0.

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

  • Уменьшение частоты процессора.
  • Уменьшение частоты обновления дисплея.
  • Ограничение потребления данных в фоне.
  • Другие оптимизации от вендора. А если вендор может добавить что угодно, фича практически уничтожена.

Android 6.0

Doze Mode. В этой версии Android начинаются серьезные подвижки, и режим Doze Mode — первая из них. Идея в том, чтобы отключать все, что не нужно, когда устройством не пользуются.

Как система понимает, что нужно включить Doze Mode? Сначала было так: если пользователь кладет телефон и не использует его, можно отключить сетевой доступ и другие ненужные функции. Например, режим включался, пока владелец смартфона спит. Google заявляла, что Nexus 5 в состоянии Doze Mode поедал всего 1% зарядки за ночь. Правда, я такого никогда не видел.

Все это дало свои плоды. Кроме того, что Doze Mode отключает максимум функций, появляется такая штука, как maintenance window. Это время, когда устройство выходит из Doze Mode и позволяет разработчику что-то сделать или проверить. И тут снова важную роль начинает играть JobScheduler, потому что все контролируется через него.

Примерная схема «включения» maintenance windows

App Standby. Появился второй режим экономии электроэнергии — приостановка активности приложений, которые человек не использует. Если мы сворачиваем приложение и не пользуемся им, на него накладываются ограничения. Они не такие жесткие, как в Doze Mode, но мешают ходить в сеть и снижают частоту срабатываний. В чем конкретно заключаются ограничения, Google, как всегда, не уточняет, потому что вендор может сделать что угодно.

FCM High Priority — тип пушей, способных разбудить устройство в Doze Mode и App Standby. И это важная шутка, но нужно помнить, что, если сделать все пуши высокоприоритетными, они не обязательно дойдут. Часть из них рано или поздно начнет игнорироваться. Поэтому использовать их нужно только на действительно важные события. Например, когда пользователю приходит сообщение в чате, в котором он включил уведомления.

Android 7.0

Doze on the Go, вторая версия Doze Mode. Если раньше устройство приходило в Doze Mode, только когда было неподвижным какое-то время, то теперь достаточно выключить экран и положить смартфон в карман.

В Android 7.0 мы получили немного другую картину с maintenance window. Окна стали появляться чаще, ограничения стали мягче. Но приложения по-прежнему не могли нормально работать в фоне.

Project Svelte. Второй проект по сокращению расхода оперативной памяти и оптимизации способов работы приложений в фоне.

No Broadcasts. Первое, что сделали в рамках проекта, — убрали все бродкасты. Начали с CONNECTIVITY_ACTION. Он стал первым и самым важным, потому что этот бродкаст рассылается на любое изменение сети. Например, когда пользователь переходит с мобильной сети на Wi-Fi. А в Android есть особенность: даже если приложение сейчас убито, но бродкаст-ресивер подписан на какой-то бродкаст, система поднимет приложение, чтобы доставить его.

Представьте, что такое приложение у нас одно. Поднять процесс — недешевая операция, но в целом не страшная. А если таких приложений 20? Каждая смена будет приводить к тому, что процессы будут подниматься и убиваться 20 раз. Хотя и это не так страшно. Страшно, что CONNECTIVITY_ACTION вызывается не только при уходе с сети на Wi-Fi, но и, например, с 3G на 4G. А ведь тип соединения скачет постоянно при прогулках по городу — представьте, сколько событий рассылается системе. Поэтому его отключили первым.

ACTION_NEW_PICTURE. Затем отключили рассылку новых картинок и видео. Не критичная штука, потому что это можно делать и другим путем, например через JobScheduler. Появилась возможность реакции на изменения в контент-провайдер. Можно передать какой-то Uri с ContentProvider и, когда произойдет оповещение об изменении, вызвать джобу.

Android 8.0

NoBroadcasts+, запрет на все системные бродкасты. Либо разработчику это не нужно, либо он может подписаться на них, когда приложение работает. Делать это неявно нельзя, только через JobScheduler. Остались исключения, но их очень мало:

  • ACTION_BOOT_COMPLETED;
  • ACTION_LOCAL_CHANGED;
  • ACTION_PACKAGE_DATA_CLEARED и ACTION_PACKAGE_ FULLY_REMOVED;
  • ACTION_NEW_OUTGOING_CALL;
  • ACTION_MEDIA_***;
  • SMS_RECEIVED_ACTION и WAP_PUSH_RECEIVED_ACTION.

Этот список актуален на лето 2022 года.

Нет фоновым Service. Запретили запускать Service в фоне. Если разработчик запустил такой Service и свернул приложение, он проживет совсем недолго и будет принудительно убит. Если попытаться запустить обычный Service, когда приложения в фоне, тоже будет крэш.

Обновление JobScheduler. Первое — не мало свободной памяти (именно так звучит условие). Сколько памяти достаточно, в Google не говорят. Не низкий заряд батареи — что именно под этим подразумевается, опять же не поясняют. Видимо, это про критичные проценты, когда батарея становится красной.

Нетарифицируемая сеть. Новая классная штука, привязанная к стоимости. Когда мы подключаемся к сети в настройках, мобильная сеть по умолчанию идет как тарифицируемая, то есть мы платим за трафик. Wi-Fi по умолчанию считается нетарифицируемым, но в настройках можно это изменить.

Foreground Service. Бэкграунд-сервисы теперь нужно явно вызывать. Раньше нужно было просто вызвать такой сервис, а потом сказать, что он Foreground. Теперь из-за того, что бэкграунд-сервисы убиты, нужно явно сказать: я сейчас буду запускать Foreground Service. И код становится примерно таким.

context.startForegroundService(Intent(context, MediaService::class)) class MediaService : Service() < override fun onCreate() < super.onCreate() startForeground(NOTIFICATION_ID, newOngoingNotification()) >fun newOngoingNotification() : Notification companion object < const val NOTIFICATION_ID >>

Важная особенность: между вызовом startForegroundService и startForeground должно пройти не больше пяти секунд. Иначе у приложения будет крэш, потому что мы не выполнили контракт.

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

Грубо говоря, если у вас есть инициализация, необходимая для UI, ее не нужно делать в апликейшне, потому что она опциональна и может запустить какой-то сервис. Нужно либо все уводить в фон, либо делать лэзи — это новый подход.

Может показаться, что пять секунд — это много, но поверьте, для бюджетных устройств с Android 8.0 это целая вечность. Код может просто не выполниться, и будет крэш. Особенно если есть какая-то сетевая операция в апликейшне. Поэтому не следует забывать его оптимизировать.

Ограничение на доступ к местоположению. Еще одно ограничение, связанное с безопасностью и сохранением заряда батареи. Если приложение в фоне, оно будет получать обновления не чаще, чем несколько раз в час. Сколько именно раз — мы не знаем.

Снятие WakeLock системой. При переходе приложения в состояние cached (отсутствуют активные Android-компоненты) все WakeLock, захваченные системой, освободятся. WakeLock — это спец-API, которое позволяет системе блокировать ненужное. Например, если система видит, что сейчас ничего не используется и девайс уходит в сон, можно выключить процессор. WakeLock как бы говорит системе: не выключай процессор, я собираюсь его использовать. Соответственно, идет нагрузка на железо. И если приложение переходит в состояние cached, значит, в нем нет активных Service и Activity, никто не вызывает у него контент-провайдер или бродкаст-ресиверы. Все WakeLock для него автоматически снимут.

Android 9.0

App StandBy Buckets. Так называемые корзинки — новый подход к тому, какие приложения нужно останавливать и как. Если раньше приложение уходило в бэкграунд, система полагала, что его нужно остановить. Теперь система анализирует, как приложения используют, и распределяет их по категориям:

Каждому бакету соответствовал определенный набор ограничений

  • Active — с приложением работает пользователь или другое приложение в состоянии Active;
  • Working Set — приложение используют часто, но сейчас пользователь с ним не работает;
  • Frequent — приложение используют регулярно, но не обязательно каждый день;
  • Rare — приложение используют редко;
  • Never — приложение установили, но пользователь никогда не запускал его. Выключено все.

Улучшение режима экономии энергии. Его сделали сильнее, введя больше ограничений:

  • система агрессивнее переводит приложения в режим App Standby;
  • ограничения на работу применяются ко всем приложениям, независимо от targetSdk;
  • доступ к приложению может пропасть при отключении экрана;
  • у фоновых приложений нет доступа к сети;
  • дополнительный пункт — вендоры могут что-то добавить или изменить.

Разрешение на запуск Foreground Service. Оно не критично, потому что попадает в категорию normal. Его нужно только декларировать в манифесте, а запрашивать в рантайме не нужно. Фактически оно помогает системе понять, что вы запросили пермишн — за вами можно следить. Если попытаться запустить Foreground Service без разрешения, система все крэшнет и скажет, что у вас SecurityException.

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

Обновление JobScheduler. Появилась поддержка информации о размере загружаемого файла. На основе этой информации система могла понимать: если вы грузите маленький файл, вас можно пропустить быстро. А если файл большой, лучше дождаться, когда будет нетарифицируемая сеть и высокий уровень заряда.

Еще появилась важная штука для предзагрузки контента. Если приложению нужно предзагрузить данные для отображения, например, главного экрана, можно пометить джобу с помощью этого нового флага, и JobScheduler поднимет ее приоритет.

Android 10

Тип Foreground Service. Новая штука, которая позволяет системе понять, зачем нужен Foreground Service, и приоритизировать его. Всего типов восемь, других быть не должно:

  • Camera — использует камеру, делает фото и записывает видео;
  • ConnectedDevice — работает с bluetooth-устройствами, авто и прочим;
  • DataSync — передача данных по сети, бэкап/восстановление, загрузка файлов;
  • Location — GPS, карта или навигация;
  • MediaPlayback — проигрывание звука и видео;
  • MediaProjection — управление проекцией медиа, например запись видео с экрана, снятие скриншота и так далее;
  • Microphone — использует микрофон или записывает аудио;
  • PhoneCall — операции, связанные с телефонными и видеозвонками и похожими коммуникациями.

Важно, что у одного Foreground Service может быть объявлено несколько типов. Теперь их можно явно указывать при запуске. Например, один из типов, объявленных в манифесте, вообще не будет работать в операциях этого типа либо будет запускать все сразу.

class MediaService : Service() < override fun onCreate() < super.onCreate() // Сделать Service Foreground с одним из типов, указанных в AndroidManifest startForeground(NOTIF_ID, newNotification(), ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK) // Сделать Service Foreground со всеми типами из AndroidManifest startForeground(NOTIF_ID, newNotification(), ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST) // Сделать Service Foreground без использования типов startForeground(NOTIF_ID, newNotification(), ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE) >>

Запрет на запуск Activity из фона. Раньше, если приходил пуш, можно было запустить Activity из бродкаст-ресивера. Теперь так нельзя: любой показ UI должен инициировать пользователь. Например, можно показать уведомление. Если пользователь нажимает на него, мы получаем разрешение на запуск активити. Если это не так, будет крэш.

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

Android 11

Самое интересное и самое разочаровывающее для меня — что в Android 11 ничего не ограничили. Поэтому мы переходим к…

Android 12

Restricted App Standby Bucket. Самый жесткий бакет: если приложение потребляет много системных ресурсов или работает нежелательным образом, система поместит его туда. Формулировки расплывчатые, но, скорее всего, речь идет о зловредах.

Ограничения запуска Foreground Service. Приложения в фоне не могут запускать Foreground Service за исключением нескольких случаев. Список исключений очень маленький.

Разрешение на Exact Alarm. Раньше это можно было делать как угодно, а теперь появился пермишн. И это не какой-нибудь runtime permission, а такая интересная штука, как Picture-in-Picture. То есть мы должны сказать пользователю: сходи в настройки системы и разреши моему приложению это делать. С одной стороны, это неудобно, с другой — полезно. Многие разработчики сталкивались с тем, что Exact Alarm срабатывали непредсказуемо или не срабатывали вовсе. А пермишн — это стандартизация и явный сигнал системе. Главное — помнить, что Exact Alarm не обязательно вызовется в нужное нам время. Это может случиться позже на несколько минут или больше.

Expedited Job. Новый тип Job для важных задач, которые нужно выполнить мгновенно. Злоупотреблять нельзя. Вот признаки такой джобы:

  • выполняется как можно скорее;
  • имеет меньше ограничений в режимах Doze и «Экономия батареи»;
  • на него не влияют ограничения доступа в сеть, накладываемые Doze, App Standby и режимом «Экономия батареи»;
  • имеет меньше шансов быть убитой, чем обычная Job;
  • ограничения на доступ к местоположению в фоне сохраняются;
  • для запуска работы доступны лишь требования по наличию сети, объему свободного места и сохранению Job между перезагрузками устройства.

У этого типа есть особенности, о которых полезно знать:

  • система выделяет квоту на количество одновременно запущенных Expedited Job для приложения;
  • на активное приложение квоты не распространяются;
  • может не запуститься сразу, если устройство слишком загружено или заданные для выполнения Job нельзя выполнить;
  • имеет ограниченное время на выполнение — не больше минуты (но система при низкой нагрузке может сделать исключения);
  • если у приложения осталась свободная квота, возможно, Expedited Job сможет работать дольше.

Android 13

Foreground Service Task Manager. Теперь пользователь может в специальном окошке в нотификейшн-панели увидеть, какие приложения сейчас что-то делают в Foreground. То есть свернуты, но пытаются что-то выполнять. Пользователь может вручную их остановить.

Специальная кнопка принудительно останавливает приложение. Не так, как Force Stop в настройках, но все же полностью его останавливает. Даже если оно просто свернуто.

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

  • Unrestricted — «делай что угодно, мне все равно»;
  • Restricted — когда приложение практически ничего не может делать в фоне.

В Restricted режиме будут применены следующие ограничения:

  • нельзя запускать Foreground Service;
  • запущенные Foreground Service убираются из Foreground;
  • не будет срабатывать Alarm;
  • не будет запускаться Job;
  • не будут доставляться бродкасты BOOT_COMPLETED и LOCKED_BOOT_COMPLETED.

Уведомление о слишком долгом Foreground Service. Система отслеживает, если приложение слишком долго работает в таком режиме, и рекомендует его остановить. Почему-то Google считает, что долго — это 20 часов в окне в 24 часа. Это странно, мне сложно представить приложение, которое так работает. Особенности работы в таком режиме:

  • Уведомление можно показывать не чаще чем раз в 30 дней;
  • Предупреждение не покажут, если уведомление, ассоциированное с Foreground Service, видно;
  • Исключения — сервисы с типами MediaPlayback и Location;
  • Системные приложения, приложения с определенными целями и устройства в деморежиме — тоже исключения.

Обновление JobScheduler. Появилась возможность поддержки дозагрузки файлов. Если сервер, с которого вы скачиваете файлы, поддерживает дозагрузку, можно эти данные указывать в Job. И если JobScheduler решит, что Job нужно остановить, потом он запустит ее, и вы будете знать, с какой части нужно продолжить выполнение.

Кроме этого, добавили приоритет Job. Это спецконстанта, которая помогает отсортировать все Job в рамках одного приложения и приоритизировать их выполнение.

Android сейчас

Download Manager по-прежнему с нами. JobScheduler мы больше не используем — на смену ему пришел Jetpack WorkManager.

Если говорить о сервисах, то background официально есть, но по факту его скорее нет. Foreground тоже есть, но там похожая ситуация. Bound есть, но их мало кто использует. Ну и AlarmManager никто не отменял.

Есть WorkManager — это официальная рекомендация Google для всех, кто хочет что-то делать в фоне. Вот его возможности:

  • корректная работа на разных версиях Android с учетом требований;
  • задание условий для выполнения задачи;
  • гибкие возможности времени выполнения задачи;
  • возможность выполнять работу незамедлительно;
  • гибкая политика по повтору задачи, выполненной неуспешно;
  • организация нескольких задач в цепочки, чтобы выполнять их последовательно и/или параллельно;
  • поддержка Coroutines и RxJava;
  • поддержка работы в нескольких процессах.

Если вам нужно запустить что-то в точное время и гарантировать выполнение, лучше по старинке использовать AlarmManager. А для простой загрузки файлов с сервера — DownloadManager. Нужно указать url, параметры и место, куда нужно сохранить.

Если у задания есть конечный результат, можно действовать по-разному. Конечный результат — это, например, когда файл загружен на сервер. Если вы проигрываете музыку, тут результата нет, это бесконечный процесс.

Если конечного результата нет, это Foreground Service, причем он должен попадать под типы. Если нет совпадения с Foreground Service или нужно запустить Job немедленно и с очень высоким приоритетом, используйте Expedited Job в WorkManager. В остальных случаях — WorkManager.

Что и когда запускать

Но тут начинается веселье, потому что в игру вступают вендоры. Есть такой рейтинг — Don’t kill my app. Там ребята пишут подробные гайды с объяснениями, как различные вендоры убивают приложения. Довольно долго рейтинг возглавлял Xiaomi, потом в лидеры выбился One Plus, а потом Samsung обновил свои устройства до Android 11 и с сильным отрывом ушел вперед.

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

Единственный вариант, как попросить пользователя отключить все оптимизации для приложения — запустить стандартный Intent, который появился в Android 6.0, и молиться, чтобы пользователь это сделал. Тогда приложение может начать работать в фоне лучше, но результат никто не гарантирует.

// Android 6.0 API 23 val powerManager: PowerManager = getSystemService() if (!powerManager.isIgnoringBatteryOptimizations(context.packageName)) < try < context.startActivity(Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)) >catch (e: ActivityNotFoundException) < // Обрабатываем если экрана нет >>

Кстати, вендоры любят по умолчанию глушить все приложения, которые не добавлены в white-list. Такой лист есть у каждого популярного вендора. Если ваше приложение довольно крупное, с несколькими миллионами пользователей, возможно, у вас получится договориться с вендором и попасть туда.

Заключение

Последние восемь лет Google пытается ограничить разработчиков и заставить их использовать специальные API, так как свобода выбора инструментов привела к хаосу на устройствах.

Второй линией обороны служит Google Play, который не дает публиковать приложения с отдельными разрешениями без прохождения специальной проверки со стороны магазина. Дальше будет становиться только жестче: все новые API по умолчанию направлены на ограничения, экономию батарейки и четкий контроль работы приложения со стороны системы.

Это закономерно, ведь на старте у Google были доставшиеся в наследство исходники. Нужно было привлечь разработчиков и вендоров для популяризации Android. К 2014 году компания решила эту задачу и сменила вектор на обеспечение надежности, безопасности и приятного пользовательского опыта от работы с Android-устройствами.

  • android
  • мобильная разработка
  • фоновая работа
  • android 13
  • android 6
  • foreground service
  • background service
  • workmanager
  • оптимизация
  • энергосбережение
  • Блог компании TINKOFF
  • Блог компании Broadcasts Group
  • Разработка мобильных приложений
  • Разработка под Android

Выключение и перезагрузка Windows из командной строки

date

10.01.2023

user

itpro

directory

PowerShell, Windows 10, Windows 11, Windows Server 2019, Windows Server 2022

comments

комментариев 15

В Windows доступно несколько команд, которые позволяют выключить или перезагрузить локальный или удаленный компьютер. В этой статье мы рассмотрим, как использовать команду shutdown и PowerShell командлеты Restart-Computer и Stop-Computer для выключения/перезагрузки Windows.

Использование команды shutdown в Windows

Утилита командной строки shutdown является встроенной командой Windows, которая позволяет перезагрузить, выключить компьютер, перевести его в спящий режим или завершить сеанс пользователя. В этой инструкции мы покажем основные примеры использования команды shutdown в Windows (все рассмотренные команды запускаются в окне Выполнить — Win+R ->, в командной строке cmd.exe или в консоли PowerShell).

Команда shutdown имеет следующий синтаксис:

shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c «комментарий»]]

команда shutdown синтаксис

Как вы видите, у команды довольно много опций, а также есть возможность выключить/ перезагрузить удаленный компьютере.

Выключение Windows командой Shutdown

Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.

Перезагрузка Windows

Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.

shutdown /r - перезагрузка компьютера

Завершение сеанса пользователя

Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:

shutdown /l завершение сенаса пользоватеоя

Эта команда аналогично выполнению команды logoff.

Перевод компьютера в режим гибернации

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

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

Вы можете предупредить всех пользователей Windows о предстоящем выключении / перезагрузки компьютера или сервера, отправив сообщение во все активные сессии (как правило эта возможность используется на терминальных RDS серверах, за которыми одновременно работают несколько пользователей, каждый в своей собственной RDP сессии).

shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”

Отложенное выключение / перезагрузка компьютера

Можно выключить или перезагрузить компьютер с определенной задержкой (по таймеру). С помощью опции /t можно указать интервал времени (в секундах), через который ПК/сервер будет перезагружен или выключен. Тем самым вы можете предоставить пользователям дополнительное время для того, чтобы успеть сохранить открытые файлы и корректно закрыть приложения. Эту опцию удобно использовать совместно с отправкой сообщения. В этом примере мы указываем, что Windows будет выключена через 10 минут (600 секунд) и информируем пользователей сообщением.

shutdown /s /t 600 /c «Сервер будет выключен через 10 минут. Сохраните свои документы!»

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

shutdown - Ваш сеанс будет завершен.

Такую команду удобно использовать для оповещения пользователей с сеансами на RDSH хостах в ферме Remote Desktop Services на Windows Server, когда вы хотите перезагрузить сервер для выполнения обслуживания. Можно использовать совместно с режимом обслуживания RDS (Drain Mode).

Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».

Работа Windows будет завершена через 100 мин

Отмена выключения / перезагрузки компьютера

После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратор может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:

После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».

shutdown /a - отмена перезагрузки Выход из системы отменен

Перезагрузить Windows немедленно

Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:

Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).

Следующая команда выполнит перезагрузку компьютера с автоматическим запуском всех зарегистрированных приложений после перезагрузки (имеются в виду приложения, зарегистрированные в системе с использованием функции API RegisterApplicationRestart).

Ярлык для перезагрузки компьютера

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

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

Можно распространить такой ярлык на компьютеры пользователей через GPO.

Перезагрузка Windows в определенное время

Чтобы всегда перезагружать/выключать компьютер или сервер в определенное время, вы можете добавить команду shutdown в планировщик заданий Windows taskschd.msc.

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

задание планировщика для ежедневной перезагрузки компьютера командой shutdown

$Trigger= New-ScheduledTaskTrigger -At 00:00am -Daily
$User= «NT AUTHORITY\SYSTEM»

$Action= New-ScheduledTaskAction -Execute «shutdown.exe» -Argument «–f –r –t 120»
Register-ScheduledTask -TaskName «RebootEvertyNight_PS» -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Задание планировщика также можно распространить на компьютеры с помощью групповых политик.

Перезагрузка удаленных компьютеров командой shutdown

Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):

shutdown /r /t 120 /m \\192.168.1.100

shutdown /r //m - перезагрузка удаленного компьютера

Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.

reg add «HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System» /v «LocalAccountTokenFilterPolicy» /t REG_DWORD /d 1 /f

На удаленном компьютере должны быть включены правила Windows Defender Firewall, разрешающие удаленный доступ черезWMI и SMB.

Get-NetFirewallrule -name WMI-RPCSS-In-TCP,WMI-WINMGMT-In-TCP,FPS-SMB-In-TCP| Enable-NetFirewallRule

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

net use \\192.168.31.10 /u:corp\username
shutdown /s /t 60 /f /m \\192.168.31.10

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

$sh_msg = «Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы»
$sh_delay = 600 # секунд
$computers = gc C:\PS\PC-list.txt
foreach ($comp in $computers)
& ‘C:\Windows\System32\SHUTDOWN.exe’ «-m \\$comp -r -c $sh_msg -t $sh_delay»
>

Графический интерфейс команды shutdown

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

shutdown /i - графический интерфейс команды shutdown

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

Перезагрузка и выключение Windows с помощью PowerShell

В PowerShell есть две команды для выключения и перезагрузки компьютера: Restart-Computer и Stop-Computer. Обе команды позволяют выключить или перезагрузить локальный или удаленный компьютер по сети.

powershell команда Restart-Computer

Для перезагрузки Windows выполните:

Чтобы выключить компьютер:

По умолчанию перезагрузка начнется через 5 секунд. Можно увеличить задержку перед перезагрузкой:

Restart-Computer –delay 15

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

Например, чтобы удаленно выключить два сервера Windows:

Stop-Computer -ComputerName «Server01», «Server02»

Можно указать учетные данные администратора для подключения к удаленному хосту:

$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds

Для подключения к удаленным компьютерам используется WMI и DCOM (он должны быть включен и настроен). Если WMI не настроен, при запуске команды появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: Access is denied. Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).

restart-computer ошибка при удаленной перезагрузке компьютера по сети 0x80070005

Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:

Restart-Computer -ComputerName wks-t1122h2 -Protocol WSMan

Если на удаленном компьютер есть активные сессии пользователей, при запуске Restart-Computer появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: The system shutdown cannot be initiated because there are other users logged on to the computer.

Restart-Computer на удаленном компьютере есть активный пользователь

Вы можете узнать имя пользователя с активной сессией на удаленном компьютере с помощью команды:

Для принудительной перезагрузки нужно добавить параметр -Force:

Restart-Computer -ComputerName wks-t1122h2 –Force

В журнале событий Windows с EventID 1074 (Event Viewer -> Windows Logs -> System) будет содержаться имя пользователя, который выключил/перезагрузил Windows.

EventID 1074 кто перезагрузил windows

С помощью параметра -For можно перезагрузить компьютер и дождаться, когда он будет доступен. Например, вы хотите убедиться, что удаленный компьютер успешно перезагрузится и на нем стартовала служба WinRM, позволяющая подключиться к нему через WS-Management:

Restart-Computer -ComputerName wks-t1122h2 -Wait -For WinRM

Restarting computer wks-t1122h2 Verifying that the computer has been restarted.

Удаленная перезагрузка компьютера из powershell

Можно дождаться запуска службы удаленного рабочего стола (RDP) или любой другой службы Windows:

Restart-Computer -ComputerName wks-t1122h2 -Wait -For TermService

Если нужно одновременно перезагрузить несколько хостов, можно использовать возможности параллельного запуска команд в версии PowerShell 7.x.

Например, вы можете получим список Windows Server в определенном контейнере (Organizational Unit) Active Directory с помощью командлета Get-ADComputer и перезагрузить их одновременно:

$Computers = (Get-ADComputer -Filter ‘operatingsystem -like «*Windows server*» -and enabled -eq «true»‘ -SearchBase «OU=Servers,DC=winitpro,DC=loc»).Name
$Computers | ForEach-Object -Parallel < Restart-Computer -ComputerName $_ -Force>-ThrottleLimit 3

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

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

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

https://alkogolizm-zhi.vyvod-iz-zapoya-na-domu-sankt-peterburg-abc.ru/