我对使用后台进程有一个理解问题。
我必须将 Linux 上的处理逻辑转换为 Windows。我有一个脚本,在它的处理中,在其他脚本中启动,另一个脚本在后台,并追求它的处理。抛出(启动)处理背景的脚本不必关心这个结果,因此即使背景中的处理仍然执行,也必须结束。
我在 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 的方式还是我做错了什么?