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

如何查找所有以sh结尾的正在运行的Linux进程?

查找以"sh"结尾的运行进程的正确方法

你执行ps aux | grep "*sh"无效的核心原因有两个:

  1. Shell会优先解析*sh这个通配符,如果当前目录存在类似xsh、mysh的文件,*sh会被替换成这些文件名,导致grep接收到错误的匹配参数;
  2. Grep的正则语法里,*代表“前面的字符出现0次或多次”,不是匹配任意字符的通配符,*sh的匹配逻辑完全不符合你的需求。

以下是几种可行的解决方法:

方法1:修正grep的正则匹配

用$锚定字符串结尾,明确匹配以sh结束的内容,同时过滤掉grep自身的进程:

ps aux | grep -E 'sh$' | grep -v grep
  • -E启用扩展正则,让$的锚定语法生效;
  • grep -v grep用来排除执行grep命令本身的进程,避免干扰结果。

方法2:用pgrep直接查找(更简洁)

pgrep是专门用于查找进程的工具,结合正则可以快速定位目标进程:

# 只输出进程ID
pgrep -f 'sh$'

# 输出完整进程信息
ps aux $(pgrep -f 'sh$')
  • -f参数表示匹配完整的命令行,而不仅仅是进程名。

方法3:用awk直接过滤ps输出

awk可以直接处理ps的输出列,精准匹配进程名(ps aux的第11列是进程名):

ps aux | awk '$11 ~ /sh$/'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:42:06