39 Star 222 Fork 51

chuanjiao10 / kasini3000

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
kaiiit_后台任务.ps1 3.39 KB
一键复制 编辑 原始数据 按行查看 历史
chuanjiao10 提交于 2023-08-05 15:07 . 更新:7zip库到23.01
#建议保存编码为:bom头 + utf8
#$PSModuleAutoloadingPreference = 0
Start-Sleep -Seconds 1
if ( ($IsWindows -eq $True) -or ($PSVersionTable.psversion.major -lt 6) ) #win
{
& 'c:\ProgramData\kasini3000\0k_source.ps1'
}
if ($IsLinux -eq $True)
{
& '/etc/kasini3000/0k_source.ps1'
}
#main
$互斥名字 = 'Global\卡死你3000kaiiit'
$建立互斥成功否 = $false
$互斥对象 = New-Object System.Threading.Mutex ($true,$互斥名字,[ref]$建立互斥成功否)
if ($建立互斥成功否)
{
}
else
{
if ( ($IsWindows -eq $True) -or ($PSVersionTable.psversion.major -lt 6) ) #win
{
& 'c:\ProgramData\kasini3000\get_Language.ps1'
}
if ($IsLinux -eq $True)
{
& '/etc/kasini3000/get_Language.ps1'
}
if ($env:LANG -eq 'zh_CN.UTF-8')
{
Write-Error '错误:互斥失败 !已经有 k-commit.ps1 后台任务进程正在运行中!退出码1`n请等待一会后,运行kl.ps1获取运行结果。'
}
else
{
Write-Error "error:There can only be one k-commit.ps1 process.Close PWSH.EXE process and wait 1 minute,then running again."
}
exit 1
}
#建立pid文件
& 'kaiiit_写pid.ps1'
& 'k_写log.ps1' -被写入的log内容 " $pid【kaiiit】开始运行"
Write-Error '信息:k-commit.ps1 后台任务现在开始运行!'
$private:超过此时间则退出 = (Get-Date).AddSeconds(180)
$global:kaiiit循环中 = $True
while ($global:kaiiit循环中 -eq $True)
{
& 'end_invoke_福报表.ps1'
$private:temp997 = & 'kdir-cmdb.ps1' -被查找的库文件名 'fb福报库_任务表_读取所有正运行任务数119.ps1'
if ( ($private:temp997 -eq '输入的库路径有错误') -and ($private:temp997 -eq '无返回') )
{
Write-Error "找不到 'fb福报库_任务表_读取所有正运行任务数119.ps1' "
}
else
{
$private:当前福报数 = & $private:temp997
}
if ($private:当前福报数 -gt $global:kcommit最大并发进程数)
{
if ((Get-Date) -gt $private:写日志时间间隔)
{
$private:写日志时间间隔 = (Get-Date).AddMinutes(1)
& 'k_写log.ps1' -被写入的log内容 "错误:$pid 现有福报任务数,已经超过最大并发设定值,任务【进程】将被延时启动。。 ${private:当前福报数} "
}
Write-Error "错误:$pid 现有福报任务数,已经超过最大并发设定值,任务【进程】将被延时启动。。 ${private:当前福报数} "
}
else
{
& 'begin_invoke_福报表.ps1'
}
# if ($global:kaiiit后台任务_循环间隔_秒)
# {
# Start-Sleep -Seconds $global:kaiiit后台任务_循环间隔_秒
# }
# else
# {
# Start-Sleep -Seconds 10
# }
Start-Sleep -Seconds 10
if ($private:超过此时间则退出 -lt (Get-Date)) #每3分钟判断一次是否有kaiiit任务运行
{
if ((Get-Job).count -le 0)
{
& 'k_写log.ps1' -被写入的log内容 " $pid【kaiiit】结束运行"
Write-Error '信息:所有 k-commit.ps1 后台任务运行完毕!'
& 'kaiiit_删pid.ps1'
$global:kaiiit循环中 = $false
}
else
{
$private:temp995 = "{0}现有福报任务{1}个" -f $pid,(Get-Job).count
& 'k_写log.ps1' -被写入的log内容 $private:temp995
Write-Error $private:temp995
$private:超过此时间则退出 = (Get-Date).AddSeconds(180)
}
}
$private:现在 = Get-Date
if ( ($private:现在.Minute % 5 -eq 0) -and ($private:现在.Second -gt 51) )
{
Write-Verbose '开始运行 .net 垃圾回收'
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
}
exit 0
PowerShell
1
https://gitee.com/chuanjiao10/kasini3000.git
git@gitee.com:chuanjiao10/kasini3000.git
chuanjiao10
kasini3000
kasini3000
master

搜索帮助