Как запустить программу в фоновом режиме
Перейти к содержимому

Как запустить программу в фоновом режиме

Как запустить любую программу в качестве фоновой службы в Windows

aas_top

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

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

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

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

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

  • Приложение не будет помещать значок в системный трей. Если вам нужен интерфейс, регулярно доступный для приложения, он может не подходить для работы в качестве службы.
  • Когда вам нужно внести изменения или обновления конфигурации, вам нужно остановить службу, запустить программу как обычное приложение, сделать то, что вам нужно, остановить программу, а затем снова запустить службу.
  • Если программа уже настроена на запуск при запуске Windows, вам необходимо отключить это, чтобы не запускать два экземпляра. У большинства программ есть опция в интерфейсе для переключения этого параметра. Другие могут добавить себя в папку «Автозагрузка» , поэтому вы можете удалить их там.

Готовы катиться? Давайте поговорим о том, как его настроить.

Шаг первый: установите SrvStart

Чтобы запустить приложение как сервис, вам понадобится небольшая сторонняя утилита. Есть несколько, но наш любимый SrvStart . Первоначально он был разработан для Windows NT и будет работать практически с любой версией Windows от Windows XP и выше.

Для начала перейдите на страницу загрузки SrvStart и воспользуйтесь утилитой. Загрузка содержит всего четыре файла (два DLL и два EXE-файла). Там нет установщика; вместо этого скопируйте их в папку C:\Windows вашего компьютера, а затем в основную папку Windows, чтобы «установить» SrvStart.

aas_4

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

Шаг второй: создайте файл конфигурации для новой службы

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

Запустите Блокнот и создайте свой файл конфигурации, используя формат ниже. Здесь мы используем Plex, но вы можете создать файл для любой программы, которую вы хотите запустить в качестве службы. Команда startup просто указывает путь, где находится исполняемый файл. Для команды shutdown_method мы используем параметр winmessage , который заставляет SrvStart отправлять сообщение о закрытии Windows любому окну, открытому сервисом.

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

aas_1_v2

Сохраните новый файл конфигурации, где хотите, и замените расширение .txt расширением .ini. Запишите имя файла, так как оно понадобится нам на следующем шаге. Для удобства ввода в командной строке мы рекомендуем временно сохранить этот файл прямо на диске C :.

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

Следующим шагом будет использование команды Windows Service Controller (SC) для создания новой службы на основе критериев в файле конфигурации. Откройте командную строку, щелкнув правой кнопкой мыши меню «Пуск» (или нажав «Windows + X»), выбрав «Командная строка (администратор)», а затем щелкнув «Да», чтобы запустить его с правами администратора.

tl_start

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

В этой команде нужно отметить несколько вещей. Во-первых, каждый знак равенства (=) имеет пробел после него. Это требуется. Кроме того, значение <servicename> полностью зависит от вас. И, наконец, для значения <starttype> вы захотите использовать auto чтобы служба автоматически запускалась с Windows.

Итак, в нашем примере Plex команда будет выглядеть так:

Да, вы правильно прочитали: я использовал C:PlexService.ini вместо C:\PlexService.ini . Команда требует, чтобы вы удалили косую черту.

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

aas_2

С этого момента ваша новая служба будет работать при каждом запуске Windows. Если вы откроете интерфейс служб Windows (просто нажмите «Пуск» и введите «Службы»), вы сможете найти и настроить новую службу так же, как и любую другую.

aas_3

И это все, что нужно сделать. Если у вас есть приложения, которые запускаются с Windows, и вы предпочитаете, чтобы они запускались без необходимости входа пользователя, достаточно легко превратить любое приложение в службу. Мы только что затронули базовый метод создания и запуска нового сервиса, но с помощью SrvStart вы можете сделать гораздо больше, чтобы точно настроить работу сервиса. Обязательно ознакомьтесь с документацией, если вы хотите узнать больше.

Как запустить процесс в фоне Linux

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

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

Как запустить процесс в фоне Linux

Для выполнения команды в фоновом режиме достаточно добавить в конце символ амперсанда (&):

В выводе терминала будут отображены порядковый номер задачи (в квадратных скобках) и идентификатор процесса:

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

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

Здесь >/dev/null 2>&1 обозначает, что stdout будет перенаправлен на /dev/null, а stderr — к stdout.

Узнать состояние всех остановленных и выполняемых в фоновом режиме задач в рамках текущей сессии терминала можно при помощи утилиты jobs c использованием опции -l:

Вывод содержит порядковый номер задачи, идентификатор фонового процесса, состояние задачи и название команды, которая запустила задание.

В любое время можно вернуть процесс из фонового режима на передний план. Для этого служит команда fg:

Если в фоновом режиме выполняется несколько программ, следует также указывать номер. Например:

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

Как перевести процесс в фоновый режим

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

  1. Остановить выполнение команды, нажав комбинацию клавиш Ctrl+Z.
  2. Перевести процесс в фоновый режим при помощи команды bg.

Работа процессов в фоне

Запуск скрипта в фоне linux — это одно, но надо чтобы он ещё работал после закрытия терминала. Закрытие терминала путем нажатия на крестик в верхнем углу экрана влечет за собой завершение всех фоновых процессов. Впрочем, есть несколько способов сохранить их после того как связь с интерактивной оболочкой прервется. Первый способ — это удаление задачи из очереди заданий при помощи команды disown:

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

Убедиться, что задачи больше нет в списке заданий, можно, использовав уже знакомую утилиту jobs -l. А чтобы просмотреть перечень всех запущенных процессов (в том числе и отключенных) применяется команда

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

Как видно на скриншоте, вывод команды перенаправляется в файл nohup.out. При этом после выхода из системы или закрытия терминала процесс не завершается. Существует ряд программ, которые позволяют запускать несколько интерактивных сессий одновременно. Наиболее популярные из них — Screen и Tmux.

  • Screen либо GNU Screen — это терминальный мультиплексор, который позволяет запустить один рабочий сеанс и в рамках него открыть любое количество окон (виртуальных терминалов). Процессы, запущенные в этой программе, будут выполняться, даже если их окна невидимы или программа прекратила работу.
  • Tmux — более современная альтернатива GNU Screen. Впрочем, возможности Tmux не имеют принципиальных отличий — в этой программе точно так же можно открывать множество окон в рамках одного сеанса. Задачи, запущенные в Tmux, продолжают выполняться, если терминал был закрыт.

Выводы

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

Что такое фоновый режим и стоит ли закрывать фоновые приложения на Android?

Для многих людей вполне привычен процесс закрытия фоновых приложений на мобильном устройстве. И это вполне логично: при закрытии программ на компьютере освобождается ОЗУ и снижается нагрузка на процессор. Однако на смартфонах все устроено несколько иначе.

Что такое фоновый режим в андроид – куда на самом деле девается оперативная память?

Что такое фоновый режим в андроид – куда на самом деле девается оперативная память?

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

Незакрытые андроид-приложения продолжают работать в фоновом режим?

Отчасти это так, однако «работать» – не совсем подходящее слово. Для начала нужно разобраться в теории. Практически все android-приложения состоят из двух основных частей:

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

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

Незакрытые андроид-приложения продолжают работать в фоновом режим?

Переключаться между программами без потери данных можно до тех пор, пока мобильному устройству хватает ОЗУ. Как только заканчивается оперативная память, с которой могут работать приложения, операционная система начинает выгружать из памяти те приложения, которые давно не использовались, таким образом освобождая место в ней для используемых программ.

Ручное закрытие приложения и автоматическая выгрузка – практически одно и то же. При таких операциях из ОЗУ выгружается видимая пользователю часть приложения. Несохраненный прогресс будет утерян, а при повторном запуске программы пользователь увидит ее главный экран.

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

Закрытие фоновых android-приложений улучшает производительность?

На самом деле это еще один миф. При очистке диспетчера задач вручную удастся освободить от силы 100-200 Мб, что никак не повлияет на производительность смартфона. Этот показатель может быть немного больше, если в меню многозадачности были игры, которые еще не выгрузились из оперативной памяти.

Куда на самом деле «утекает» память android-устройств? Как это проверить?

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

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

Сервисы – эта та часть мобильного приложения, которую пользователь не видит. Именно сервисы работают в фоновом режиме, занимают ОЗУ и разряжают мобильное устройство. Обычно сервисы начинают свою работу тогда, когда возникает какое-либо событие. Но бывает и так, что мобильное приложение может работать в фоновом режиме до тех пор, пока в панели уведомлений будет отображаться его иконка.

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

  1. Перейдите в настройки смартфона.
  2. Войдите в раздел «О телефоне».
  3. Перейдите в подраздел «Информация об устройстве», а затем выберите пункт «Номер сборки» и кликните по нему 7 раз.
  4. Зайдите в раздел «Для разработчиков», а затем в подраздел «Статистика запущенных процессов».

Куда на самом деле «утекает» память android-устройств? Как это проверить?

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

Куда на самом деле «утекает» память android-устройств? Как это проверить? - 2

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

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

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

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

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

Программное обеспечение для заморозки android-приложений

Специализированные программы автоматически останавливают ненужные мобильному устройству сервисы, но останавливают их лишь частично. Для полноценной работы подобных программ необходимы root-права. Чтобы заморозить ненужные сервисы, скачайте специализированное приложение (например, Greenify), запустите его и выберите программы, службы которых вы хотите приостановить.

Программное обеспечение для заморозки android-приложений

Отключение событий

Этот способ подойдет, если у вас есть root-доступ к своему мобильному устройству. В таком случае нет необходимости замораживать службы, так как можно сразу избавиться от причины их запуска – событий. Для этого нужно будет установить приложение Автостартс. При отключении событий ни в коем случае не трогайте системные, так как это может негативно отразиться на работе мобильного устройства. Также стоит учитывать, что после отключения сторонних событий некоторые программы могут работать хуже (пропадут некоторые автоматические действия, уведомления и т.д.).

Удаление программ

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

Удаление программ

Выводы и советы

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

Пожалуйста, опубликуйте ваши мнения по текущей теме статьи. За комментарии, подписки, отклики, дизлайки, лайки огромное вам спасибо!

Дайте знать, что вы думаете по этой теме в комментариях. За комментарии, лайки, отклики, подписки, дизлайки низкий вам поклон!

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

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