Скрипт перезапуска процесса windows

PowerShell: автоматический перезапуск приложения/процесса при сбое

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

Ранее мы показывали, как с помощью PowerShell можно управлять процессами Windows. Чтобы проверить, запущен ли процесс notepad.exe и перезапустить его, можно использовать такой скрипт.

If (!(Get-Process -Name notepad -ErrorAction SilentlyContinue))
>

Можно автоматически перезапустить процесс, если он не отвечает (завис) или если он стал использовать слишком много оперативной памяти (в этом примере более 500 Мб):

$proc = Get-Process -Name notepad| Sort-Object -Property ProcessName -Unique
If (($proc.Responding -eq $false) –or ($proc.WorkingSet -GT 500000*1024)) <
$proc.Kill()
Start-Sleep -s 10
Invoke-Item C:\Windows\notepad.exe
>

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

for(;;)
<
try
<
If (!(Get-Process -Name notepad -ErrorAction SilentlyContinue))
>
$proc = Get-Process -Name notepad | Sort-Object -Property ProcessName -Unique -ErrorAction SilentlyContinue
If (!$proc -or ($proc.Responding -eq $false) –or ($proc.WorkingSet -GT 200000*1024)) <
$proc.Kill()
Start-Sleep -s 10
Invoke-Item C:\Windows\notepad.exe
>
>
catch
<
>
Start-sleep -s 60
>

$proc = Get-Process -ComputerName PC01 -Name notepad | Sort-Object -Property ProcessName -Unique -ErrorAction SilentlyContinue

Для удаленного запуска процесса можно использовать Invoke-Command:

Invoke-Command -ComputerName PC01 -Credential $Cred -ScriptBlock

В этом случае нужно сохранить PowerShell код в файле с расширением PS1. Можно подписать этот скрипт цифровой подписью, изменить настройки политики запуска PowerShell скриптов, или запускать его с параметром –ExecutionPolicy Bypass .

  • Имя запускаемого файла: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • Параметры запуска: -windowstyle hidden -ExecutionPolicy Bypass –Noprofile -file %

Также можно запускать PS1 скрипт по расписанию с помощью задания планировщика. Используйте аналогичные параметры запуска. Дополнительно можно указать учетную запись пользователя, от имени которого запускать процесс.

$Action= New-ScheduledTaskAction -Execute «PowerShell.exe» -Argument «-windowstyle hidden -ExecutionPolicy Bypass -file %windir%\CheckProcess.ps1»
$Trigger= New-ScheduledTaskTrigger -AtLogon
$Principal=New-ScheduledTaskPrincipal -UserId «aaivanov» -LogonType Interactive
$Task=New-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal
Register-ScheduledTask -TaskName «Check Notepad Process» -InputObject $Task

Либо этот PowerShell скрипт можно запускать в виде службы Windows

Слежение за процессом и его перезапуск в случае отключения

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

Задание такое. Запускаем скрипт. При запуске скрипт выполняет следующее:

Запускает process1.exe с параметрами
Запускает process2.exe с параметрами
Далее выполняет проверки
* Проверяем process1.exe
* Если отключен, перезапускаем с нужными параметрами
* Проверяем process2.exe
* Если отключен, перезапускаем с нужными параметрами

Параметры процессов записываются после самих процессов. Пример как нужно запускать процессы:
process1.exe -t 1 -x 180
process2.exe -t 2 -x 360

Скрипт чтобы был активен постоянно, то есть получается слежение за процессами с циклом.

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

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

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

Автоматический перезапуск 1С в случае завершения сеанса
Добрый день. Помогите найти решение. При обрыве сеанса в 1С (перезапуск сервера или вручную.

Dmitrii, Должны запускаться на том же компьютере. Процессы как процессы, простой запуск с параметрами.
Тут надо настраивать пути и параметры запуска, и отследить когда упадут и перезапускать их сразу же.

Нашел пример, но тут нету слежение за процессом, а простой запуск.

Powershell: Перезапуск процесса

Powershell – очень мощный инструмент в среде Windows, прежде всего он помогает администраторам Windows, но и опытные пользователи тоже найдут ему применение на своём компьютере.

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

Powershell: Перезапуск процесса

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

  • процесс зависает
  • процесс потребляет много памяти

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

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

  • Ctrl+Alt+Del выбрать “диспетчер задач”
  • Ctrl + Shift + Esc при данной комбинации диспетчер сразу откроется
  • Комбинация клавиш: Win+R на клавиатуре, далее вводим taskmgr и нажимаем Enter
  • Нажимаем правой кнопкой мыши в любом пустом месте на панели задач и мы уже знаем что там выбрать.

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

Нас интересует вкладка: Процессы, здесь отображается детальная информация обо всех процессах, которые сейчас запущены. Чтобы получить тоже самое в консоли Powershell, необходимо либо в пуске, в поисковой строке операционной системы ввести powershell, либо комбинацией Win+R ввести так же

powershell, и нажать ОК, откроется консоль:

Отслеживание зависания (состояния «не отвечает») программы и её перезапуск

Dragokas, благодарю за программку, как раз то, что нужно для моих целей!

Единственный вопрос, что нужно дописать в вашу программку, чтобы после перезапуска зависшего приложения спустя заданное время в миллисекундах, программа имитировала нажатие клавиши Enter для перезапущенного приложения и через 2 секунды (например) «нажимала» Enter сново, для запущенного приложения. И чтобы второй Enter, при необходимости можно было отключить. И первый тоже, при необходимости, отключить можно было.

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

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

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

Комментарий модератора
Комментарий:
Оригинальный код находится в теме: Полезные BAT/CMD скрипты
Дополнительные варианты решений на других языках расположены в разделе: Visual Basic

Избавиться от сообщений «Файл не найден», «Системе не удается найти указанный путь», «Устройство не готово»
Здравствуйте. В батнике присутствует поиск файлов: for %%i in (c d e f g h i j k l m n o p q r s t.

Отслеживание состояния «NumLock» или глобальный хук клавиатуры
Здравствуйте! Нужно по нажатию NumLock выводить окно программы. Что предпочтительнее, отслеживать.

При автозапуске программы через реестр программа «не отвечает»
Доброго времени. Добавил свою программу в автозапуск в реестре. Программа сама скрытая (это такая.

Как отследить зависание чужой программы, когда в диспетчере задач состояние «не отвечает»
Практическая значимость: перезапуск сервера. Добавлено через 5 минут Желательно без.

Наиболее оптимально я бы посоветовал воспользоваться VBS-скриптом

параметр 1 — имя программы
параметр 2 — ожидание (в мс.) перед нажатием клавиши Enter (опционально)

[Windows] Автоматический перезапуск программы после сбоя

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

Нужна софтина, которая умеет мониторить наличие запущенного процесса, и при его отсутствии через определённое время запускать его заново.

Windows XP, если это имеет значение.

  • Вопрос задан более трёх лет назад
  • 19694 просмотра

pslist.exe -e «процесс»
if %errorlevel%==1 start «» «программа»

pslist входит в состав pstools, качается с майкрософтофского технета

Option Explicit
Dim objWMIService, objProcess, colProcess, objShell
Dim strComputer, strList, status, strProgramPath

Set objWMIService = GetObject(«winmgmts:» _
& «!\\» _
& strComputer & «\root\cimv2»)

Set colProcess = objWMIService.ExecQuery _
(«Select * from Win32_Process»)

For Each objProcess in colProcess
If objProcess.Name = «mysoftware.exe» then
status = 1
End If

if status = 0 then
set objShell = createobject(«Wscript.Shell»)
objShell.Run chr(34) & «C:\Program Files\mysoftware.exe» & Chr(34)
End if
WScript.Quit

и через планировщик запускать раз в минуту-две

Читайте также:  Dark earth windows 10
Оцените статью