grep 进程中的路径(ps)包含数字

grep for path in process(ps) containing number

我想用 grep 查找具有变量的进程路径。例子 - 这是过程之一 运行.

/var/www/vhosts/rcsdfg/psd_folr/rcerr-m-deve-udf-172/bin/magt queue:consumers:start customer.import_proditns --single-thread --max-messages=1000

我想从 运行 进程中 grep 查找 "psd_folr/rcerr-m-deve-udf-172/bin/magt 队列"。 问题是数字 172 不断变化,但它只是一个 3 位数字。请建议,我在下面尝试过但没有返回任何输出。

sudo ps axu | grep "psd_folr/rcerr-m-deve-udf-'^[0-9]$'/bin/magt queue"

正则表达式中最相关的部分是 -'^[0-9]$'/,它存在以下问题:

  • 除了 read an apostrophe
  • ,撇号对 grep 没有语法意义
  • 插入符^匹配一行的开头,但是ps的输出在这个地方没有一行的开头
  • 美元$匹配一行的结尾,但是ps的输出中没有一行的结尾在这个地方
  • 您想读取 3 个数字,但 [0-9] 只会匹配一个数字

因此,您的表达式部分应像这样修改 -[0-9]+/ 以匹配任意数量的数字(+ 匹配前面的字符任意次数但至少一次)或像这样-[0-9]{3}/ 精确匹配三次({n} 精确匹配前面的字符 n 次)。

如果你改变你的命令,给 grep 一个 -E 标志,以便它使用扩展的正则表达式,否则你需要转义加号或大括号:

sudo ps axu | grep -E "psd_folr/rcerr-m-deve-udf-[0-9]+/bin/magt queue"