У меня есть проблема понимания с использованием фонового процесса.Фоновые задания досрочно
Мне нужно преобразовать логику обработки, которая находится на Linux в сторону Windows. У меня есть сценарий, который в своем лечении, среди других, еще один сценарий в фоновом режиме, и продолжает его лечение. Скрипт, который запускает (запускает) фоновый режим лечения, не должен заботиться о результате этого, таким образом, должен заканчиваться, даже если обработка в backgroud все еще выполняется.
Что я экспериментировал в Powershell, когда заканчивается мой первый скрипт, похоже, что обработка скрипта, брошенного на задний план, прерывается.
Вот пример из тестов, которые я сделал в моей среде (PowerShell версии 2.0)
Вот простой код моего первого сценария script_1.ps1
:
start-job -filepath d:\script\script_2.ps1
sleep 3
get-item d:\log\log
И мой второй сценарий script_2.ps1
:
sleep 1
"test" > d:\log\log-1.log
sleep 1
"test" > d:\log\log-2.log
sleep 1
"test" > d:\log\log-3.log
sleep 1
"test" > d:\log\log-4.log
sleep 1
"test" > d:\log\log-5.log
Вот что происходит, когда я представить его:
C:\Documents and Settings\user1>Powershell -command "D:\script\script_1.ps1"
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Running True localhost sleep 1...
LastWriteTime : 2013-10-10 10:19:13
Length : 14
Name : log-1.log
LastWriteTime : 2013-10-10 10:19:14
Length : 14
Name : log-2.log
Результат показывает, что, когда первый скрипт завершается, (через 3 секунды), второй скрипт останавливается также, потому что мы видим, что были созданы только первые 2 файла журналов.
Я старался, чтобы это было на Linux (&
), где фоновая работа продолжается в любом случае. Разве это так, как полагают, с PowerShell или что-то, что я делаю неправильно?