Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 1
Регистрация: 28.06.2016
Сообщений: 114

Повторный запуск

08.02.2017, 14:36. Показов 4845. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На работе создал скрипт-программу backup.ps1 которая бекапит базу пользователей каждые 30 минут, выполняет некоторые обработки и сохраняет архив.
Скрипт стартует через планировщик. Но иногда скрипт не успевает отработать в течении 30 минут и в это время старует вторая копия из-за чего случаются конфликты . Как сделать запрет на повторный запуск скрипта пока не отработает первая копия?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2017, 14:36
Ответы с готовыми решениями:

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

Повторный запуск цикла
Господа ! Возникла новая проблема, в этот раз с VB =D Во-первых, когда я прописываю "stop" цикл конечно же...

Повторный запуск метода
Это часть кода для запуска wcf службы. Запускаю вызывая Start(), останавливаю соответственно через Stop(). Все это находится в отдельном...

6
0 / 0 / 0
Регистрация: 05.02.2017
Сообщений: 21
08.02.2017, 16:25
Думаю проще всего сделать проверку запущенного сервиса powershell

$powershell = Get-Process -name powershell -ErrorAction SilentlyContinue
if ($powershell -eq $null)
{
запуск скрипта
}
Если скрипт еще не отработал той второй просто не запускается, и ждет еще пол часа.
Но это если ты не запускаешь powershell для каких либо других целей .
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.02.2017, 10:23
psysanchez, Ага, а второй раз скрипт типа не в powershell запускается.
Ваш вариант никогда $null не возвратит.
PowerShell
1
Get-Process -name powershell -ErrorAction SilentlyContinue|?{$_.id -ne $pid}
Но этот вариант мне не нравится, проверку можно сделать так:
В начале скрипта вставить.
PowerShell
1
2
$posh=Get-WmiObject win32_process|where{$_.name -eq"powershell.exe" -and $_.Processid -ne  $pid}|%{$_.commandline}
if ($posh -match "backup.ps1"){Stop-Process -Id $pid}
0
0 / 0 / 1
Регистрация: 28.06.2016
Сообщений: 114
09.02.2017, 14:26  [ТС]
а что думаете по поводу такой конструкции ?

PowerShell
1
2
3
4
5
6
7
8
$mtx = New-Object System.Threading.Mutex($false, "Name123")
 
if ($mtx.WaitOne(500)) {
#тут скрипт
 
$mtx.ReleaseMutex()
$mtx.Dispose()
}
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.02.2017, 15:30
Victoros6666, Это вы куда-то не туда направили ход мыслей.
Мьютексы, семафоры, события - это средства синхронизации ПОТОКОВ. Ваша же тема рассматривается в разрезе процессов, а не потоков.
То что вы хотите реализовать, успешно реализовано, скажем в windows media player, который является примером использования принудительного использования единственного экземпляра.
Только вот сделано, это на уровне кода приложения по средствам BaseNamedObjects или именованных объектов.
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
09.02.2017, 15:37
Если сценарий заведомо может работать более получаса, не проще ли "заставить" сценарий самостоятельно задавать следующее время создания резервной копии?! Допустим, 11:00 начинается резервное копирование, оно длится 42 минуты с копейками; копирование завершилось, создаем единоразовое задание в планировщике с добавлением к текущему времени тридцати минут... - цикл повторяется до окончания рабочего времени, т.е. если время планируемого бэкапа больше 17:00, устанавливаем время на следующее утро; если следующий день выходной, переносим задание на понедельник. Отслеживание появления еще одной копии хоста PS по большому счету дурная затея, ибо может потребоваться еще один хост для выполнения некой другой задачи, следовательно, это сродни охоте за призраками бутылочного горлышка.
0
0 / 0 / 1
Регистрация: 28.06.2016
Сообщений: 114
10.02.2017, 16:42  [ТС]
Вот допустим такая ситуация есть основной скрипт "programa.ps1" в котором запускается модуль1 через Runspace и уходит в отдельный поток.
Как в основной программе-скрипте "programa.ps1" проверить работает ли данный модуль? если нет то заново его запустить.
В повершел не нашел такого решения поэтому думал на каждой итерации основной программы пытаться запускать данный модуль спроверкой если он работает то не запускаем если нет стартуем. все что смог накопать это использование
$mtx = New-Object System.Threading.Mutex
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2017, 16:42
Помогаю со студенческими работами здесь

Многопоточность и повторный запуск
Я пишу программу которая захватывает видео и управляет шаговым двигателем и проблема как раз закралась в управлении шаговым двигателем ...

Повторный запуск потоков
Добрый день всем. Необходима ваша помощь в следующем вопросе. Есть некий гипотетический код: while (true) { Thread Thrd = new...

Предотвратить повторный запуск программы
Приветствую Возникла проблема: Если запустить program.exe ещё раз (когда один экземпляр уже запущен) то возникает ошибка. Вопрос: ...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru