【问题标题】:bash ps print info about process with namebash ps打印有关带有名称的进程的信息
【发布时间】:2017-04-13 17:08:03
【问题描述】:

我需要使用键入名称的进程的 ps 打印 UID PID PPID PRI NI VSZ RSS STAT TTY TIME 列。

  GNU nano 2.0.6                                                     
  File: file2                                                                                                                        

  ps o uid,pid,ppid,ni,vsz,rss,stat,tty,time | grep $2  > $1
  cat $1
  echo "enter pid of process to kill:"
  read pid
  kill -9 $pid

但是当我使用这个带有参数 $2 = bash 的命令时它什么也没有打印出来(这个过程存在)

更新

  GNU nano 2.0.6                               
  File: file2  

ps o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command | grep $2 | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}'  > $1
cat $1
echo "enter pid of process to kill:"
read pid
kill -9 $pid

这对我有用,但实际上这个解决方案恕我直言并不是最好的。我使用影子列命令,在 grep 名称之后并打印除命令之外的所有列。

【问题讨论】:

  • 您错过了 comm 列(comm - 只是命令名称 - 最适合 grep bashcmd - 带参数的命令,grep bash 会失败)
  • 您可以使用cut -d',' -f-9,而不是长的awk 命令。更好的是,要避免awk/cut,可以使用ps o uid,pid,(...),tty,time $(pgrep $2)

标签: bash unix grep ps nano


【解决方案1】:

您始终可以使用两阶段方法。

1.) 找到想要的PIDs。为此使用最简单的ps

ps -o pid,comm | grep "$2" | cut -f1 -d' '

ps -o pid,comm 只打印两列,例如:

67676 -bash
71548 -bash
71995 -bash
72219 man
72220 sh
72221 sh
72225 sh
72227 /usr/bin/less
74364 -bash

所以 grepping 很容易(并且无噪音,没有错误触发)。 cut 只是提取 PID。例如。

ps -o pid,comm | grep bash | cut -f1 -d' '

打印

67676
71548
71995
74364

2.) 现在您可以使用-p 标志将找到的PIDs 提供给另一个ps,因此完整的命令是:

ps -o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command -p $(ps -o pid,comm | grep bash | cut -f1 -d' ')

输出

  UID   PID  PPID NI      VSZ    RSS STAT TTY           TIME COMMAND
  501 67676 67675  0  2499876   7212 S+   ttys000    0:00.04 -bash
  501 71548 71547  0  2500900   8080 S    ttys001    0:01.81 -bash
  501 71995 71994  0  2457892   3616 S    ttys002    0:00.04 -bash
  501 74364 74363  0  2466084   7176 S+   ttys003    0:00.06 -bash

例如使用$2 的解决方案是

ps -o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command -p $(ps -o pid,comm | grep "$2" | cut -f1 -d' ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2011-04-16
    相关资源
    最近更新 更多