Linux `nohup command &`的PowerShell等效方案:实现进程脱终端存活
PowerShell 中让 Python 程序脱离终端后台持续运行的方案
针对你需要让 Python 程序在关闭 PowerShell 终端后仍存活、后台无窗口运行且子进程也能保留的需求,以下是几个可靠的等效方案:
方案1:使用 PowerShell 7+ 的 Start-Process 带分离参数
如果你的环境是 PowerShell 7 及以上版本,直接用 Start-Process 搭配 -Detached 参数就能彻底脱离当前终端会话,同时结合 -CreateNoWindow 实现无窗口运行:
Start-Process python.exe -ArgumentList "my_program.py" -CreateNoWindow -Detached
-Detached:让进程完全脱离当前控制台会话,终端关闭后不会被终止-CreateNoWindow:禁止创建任何可见窗口,实现真正后台运行
方案2:兼容 Windows PowerShell 5.1 的 WMI 方法
如果还在使用 Windows PowerShell 5.1,Invoke-WmiMethod 是更稳妥的选择,它创建的进程不属于当前控制台会话,天然不受终端关闭影响:
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "python.exe my_program.py"
执行后会返回进程 ID(ProcessId),你可以用这个 ID 后续管理进程。
方案3:借助 cmd 的 start 命令(兼容全版本)
也可以通过调用 cmd 的后台启动命令,实现类似效果:
cmd /c "start /b /min python.exe my_program.py"
/b:后台运行,不打开新窗口/min:即使不小心创建窗口,也最小化运行(可选,搭配/b基本无窗口)
关于子进程存活的说明
以上方案创建的 Python 主进程都脱离了控制台会话,只要你的 Python 程序启动子进程时没有刻意绑定到终端(比如没有继承控制台输入输出),子进程会自动跟随主进程存活,不会因终端关闭而被终止。
内容的提问来源于stack exchange,提问作者Ottpocket
相关产品推荐
相关产品推荐

