要精确查看进程运行时长,Windows可用任务管理器添加“运行时间”列或PowerShell执行Get-Process命令获取秒级精度;Mac需在活动监视器启用“启动时间”列后手动计算,或用ps命令配合date换算。

当你想确认某个程序已经连续运行了多久,比如验证后台服务是否意外中断、排查定时任务是否准时启动、或判断某个长期驻留进程是否真正在持续工作,就需要精确查看其已运行时间——不能只看启动时间戳,必须获得从创建至今的实时秒数或时长。
用任务管理器查看进程运行时长(Windows)
1、按 Ctrl + Shift + Esc 打开任务管理器,切换到“详细信息”选项卡。
2、右键点击列标题任意位置 → 选择“选择列” → 勾选“会话时间” → 点击确定。
3、此时“会话时间”列显示的是该进程所属用户会话的持续时间,不是进程自身存活时长;真正要找的是“运行时间”列——但它默认不显示。必须手动添加:右键列标题 → “选择列” → 滚动到底部勾选“运行时间”。这一步漏掉就完全看不到真实值。
4、该列数值格式为“天:小时:分钟:秒”,直接反映进程自创建起的持续运行时间,刷新频率为1秒。注意:如果某进程“运行时间”突然归零或跳变,说明它被重启过,不是稳定长驻。
用PowerShell命令获取精确运行秒数(Windows)
方法一:查指定进程名的总运行秒数
1、以普通用户身份打开 PowerShell(无需管理员权限)。
2、输入:Get-Process -Name notepad | ForEach-Object { (Get-Date) - $_.StartTime } → 回车。
输出结果中“.TotalSeconds”字段即为该记事本实例已运行的精确秒数,保留小数点后三位。若启动多个同名进程,此命令只返回第一个匹配项;如需全部,改用 Get-Process notepad | %{$_.Id, ((Get-Date)-$_.StartTime).TotalSeconds}。
方法二:查所有非系统进程的运行时长并排序
1、在 PowerShell 中执行:Get-Process | Where-Object {$_.StartTime -and $_.SessionId -ne 0} | Sort-Object StartTime | Select-Object Name, Id, @{Name='UptimeSec';Expression={((Get-Date) - $_.StartTime).TotalSeconds}} | Format-Table -AutoSize。
这条命令自动过滤掉系统会话(SessionId=0)和无启动时间的僵尸进程,按启动时间升序排列,清晰列出每个用户进程的名称、PID 和已运行秒数。运行超过86400秒(24小时)的进程会立刻暴露出来。
用活动监视器查看Mac进程存活时间
1、按 Command + 空格搜索并打开“活动监视器”。
2、点击顶部菜单栏“显示”→“所有进程,分层显示”。【不执行这步,launchd子进程的StartTime将不可见】
3、右键点击任意列标题(如“% CPU”)→ 勾选“启动时间”。此时新增一列显示每个进程的完整启动时间戳,格式为“YYYY-MM-DD HH:MM:SS”。
4、启动时间本身不是运行时长,但你可以用它手动计算:打开计算器App,输入 当前时间 - 启动时间,或复制时间戳到支持日期运算的工具里换算成小时/分钟。活动监视器不提供自动换算的“运行时长”列,这是与Windows任务管理器的关键差异。
5、若需脚本化获取,终端中运行:ps -o pid,lstart,comm -u $USER | grep -v "grep" | head -20,其中“lstart”列为完整启动时间,可配合date命令做减法。

















