如何查看哪些python脚本正在运行?

如何查看哪些python脚本正在运行?

我运行了命令tasklist | FIND "python"并得到了

任务列表输出

我如何查看正在运行的实际脚本?

答案1

如果脚本是在 Python 命令行中指定的,您可能会看到使用免费的 进程探索器

运行时,右键单击任意列标题并选择“选择列...”。转到“处理图像”选项卡,勾选“命令行”旁边的复选框,然后单击“确定”。您还可以添加或删除其他列或重新排序选定的列。

答案2

改用 powershell

(Get-WmiObject win32_process -Filter "Name='python.exe' OR Name='python3.exe'").Commandline

此处的条件OR只是供您创建更复杂查询的示例。当然,您可以将其缩短为类似

(gwmi win32_process -F "Name like 'python%'").Commandline

或者

(gwmi win32_process -F "CommandLine LIKE '%yourscript.py%'").Commandline

%是个用于匹配任何字符串的通配符使用 WQL 语言

在现代 Windows 中你可以并且应该替换Get-WmiObjectGet-CimInstance

您还可以通过以下方式CommandLine向类添加自定义属性Diagnostics.Process将以下内容添加到您的$PROFILE

$TypeData = @{
    TypeName   = [System.Diagnostics.Process].ToString()
    MemberType = [System.Management.Automation.PSMemberTypes]::ScriptProperty
    MemberName = 'CommandLine'
    Value = {
        if (('Win32NT' -eq [System.Environment]::OSVersion.Platform)) { # it's windows
            (Get-CimInstance Win32_Process -Filter "ProcessId = $($this.Id)").CommandLine
        } elseif (('Unix' -eq [System.Environment]::OSVersion.Platform)) { # it's linux/unix
            Get-Content -LiteralPath "/proc/$($this.Id)/cmdline"
        } elseif (('MacOSX' -eq [System.Environment]::OSVersion.Platform)) { # it's macos
            # ???
        }
    }
}
Update-TypeData @TypeData -ErrorAction Ignore

然后像这样使用它

(Get-Process python).Commandline

如果你想从 cmd 执行此操作,请使用wmic

wmic process where "name like 'python%'" get processid,commandline
wmic process where "Commandline like '%python%'" get processid,commandline

相关内容