Windows 检查同一powershell脚本是否已在运行,如果已运行,请稍后运行
我通过远程服务器上的ssh(apache)Powershell脚本从Java EE应用程序调用,该脚本无法并行运行,因此我需要检查脚本是否已在运行,并等待直到没有进程,然后运行该等待脚本。脚本可能会被调用多次,例如在几秒钟内调用20次,所有这些都需要逐个运行Windows 检查同一powershell脚本是否已在运行,如果已运行,请稍后运行,windows,powershell,shell,scripting,Windows,Powershell,Shell,Scripting,我通过远程服务器上的ssh(apache)Powershell脚本从Java EE应用程序调用,该脚本无法并行运行,因此我需要检查脚本是否已在运行,并等待直到没有进程,然后运行该等待脚本。脚本可能会被调用多次,例如在几秒钟内调用20次,所有这些都需要逐个运行 你知道如何做到这一点,或者这是否可能?谢谢大家! 我在一些脚本中实现这一点的方法是使用锁文件 $lockFile = "$PSScriptRoot\LOCK" if (-not (Test-Path $loc
你知道如何做到这一点,或者这是否可能?谢谢大家! 我在一些脚本中实现这一点的方法是使用锁文件
$lockFile = "$PSScriptRoot\LOCK"
if (-not (Test-Path $lockFile)) {
New-Item -ItemType File -Path $lockFile | Out-Null
# Do other stuff...
Remove-Item -Path $lockFile -Force
}
你可以改成这样吗
$lockFile = "$PSScriptRoot\LOCK"
while (Test-Path $lockFile)
{
Start-Sleep -Seconds 2
}
New-Item -ItemType File -Path $lockFile | Out-Null
# Do other stuff...
Remove-Item -Path $lockFile -Force
我在一些脚本中实现这一点的方法是使用锁文件
$lockFile = "$PSScriptRoot\LOCK"
if (-not (Test-Path $lockFile)) {
New-Item -ItemType File -Path $lockFile | Out-Null
# Do other stuff...
Remove-Item -Path $lockFile -Force
}
你可以改成这样吗
$lockFile = "$PSScriptRoot\LOCK"
while (Test-Path $lockFile)
{
Start-Sleep -Seconds 2
}
New-Item -ItemType File -Path $lockFile | Out-Null
# Do other stuff...
Remove-Item -Path $lockFile -Force
这、注册表中的标志或应用程序数据库中的标志字段都是此类问题的常见解决方案。它的一个问题是,您将需要一种方法来强制它重置标志,因为如果运行进程的线程崩溃,那么它将不会取消设置,并且您的系统将无法再对任务排队。是的,不幸的是,存在这种风险。哦,也看看解决方案谢谢你,丹尼尔,它工作得很好!很抱歉,响应太晚,我专注于其他任务,现在回到这里。这、注册表中的标志或应用程序数据库中的标志字段都是此类问题的常见解决方案。它的一个问题是,您将需要一种方法来强制它重置标志,因为如果运行进程的线程崩溃,那么它将不会取消设置,并且您的系统将无法再对任务排队。是的,不幸的是,存在这种风险。哦,也看看解决方案谢谢你,丹尼尔,它工作得很好!很抱歉反应太晚,我正专注于其他任务,现在我才回到这里。