bash ps打印有关名称的进程的信息

时间:2017-04-13 17:08:04

标签: bash unix grep ps nano

我需要使用带有键入名称的进程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

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

1 个答案:

答案 0 :(得分:5)

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

1。)找到想要的Console.WriteLine("Restaurant Name: " + node.SelectSingleNode("BrandName").InnerText + "\n"); 。为此,尽可能使用最简单的PID

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 只提取PID。例如。

cut

打印

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

2。)现在您可以使用67676 71548 71995 74364 标记将找到的PIDs提供给另一个ps,因此完整命令为:

-p

输出

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

e.g。使用 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