You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ps命令筛选系统中自昨日起运行的进程?

解决方案一:筛选运行时间超过1天的进程(适合“持续运行至少24小时”的需求)

如果你要找的是运行时间超过1天(24小时)、从昨天之前启动并持续到现在的进程,可以直接利用ps输出的etime字段格式特征——当进程运行超过1天时,etime会以D-HH:MM:SS的形式显示(D代表天数),包含连字符-。

用这个特征结合awk过滤非常简单:

ps -eo etime,pid,cmd | awk '$1 ~ /-/'

命令解释:

  • ps -eo etime,pid,cmd:指定输出进程的运行时长(etime)、进程ID(pid)和命令行(cmd),方便你直观查看进程信息;
  • awk '$1 ~ /-/':让awk检查第一列(etime)是否包含连字符-,只保留符合条件的行,也就是运行时间超过1天的进程。

解决方案二:精准筛选昨日启动的进程(适合“昨天启动且至今活跃”的需求)

如果你的需求是昨天任何时间启动、现在仍在运行的进程(哪怕运行时长不足24小时,比如昨天晚上启动的进程),用etime过滤就不够准确了——这类进程的etime会显示为HH:MM:SS,没有连字符。这时候我们可以通过进程的启动时间来精准筛选:

ps -eo lstart,pid,cmd | awk -v yesterday="$(date -d yesterday +'%b %d')" '$2" "$3 == yesterday'

命令解释:

  • ps -eo lstart,pid,cmd:lstart字段会输出进程启动的完整时间(格式类似Wed Aug 14 15:23:45 2024),包含日期和时间;
  • date -d yesterday +'%b %d':生成昨天的日期,格式为“月份缩写+日期”(比如Aug 14);
  • awk -v yesterday=... '$2" "$3 == yesterday':把昨天的日期作为变量传入awk,检查lstart字段的第二、三列(对应月份和日期)是否等于昨天的日期,从而筛选出昨天启动的进程。

注意事项

  • 不同系统的ps命令输出格式可能略有差异,上述命令针对GNU/Linux环境测试有效;
  • 如果需要更复杂的时间范围筛选(比如昨天上午9点到今天上午9点),可以进一步结合date转换时间戳,对比进程启动时间的时间戳来实现。

内容的提问来源于stack exchange,提问作者pepeargento

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:12:37