我需要打印UID,PID,PPID,PRI,NI,VSZ,RSS,STAT,TTY的时间列使用ps的进程的类型名称。
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这对我有用,但实际上这个解决方案IMHO并不是最好的解决方案。我使用阴影列命令,在grep名称之后打印所有列(不包括命令)。
发布于 2017-04-13 18:23:33
你总是可以使用两阶段的方法。
1.)查找想要的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因此,这是很容易(噪音-无,没有假触发器)。cut只提取PID。例如
ps -o pid,comm | grep bash | cut -f1 -d' '版画
67676
71548
71995
743642.)现在,您可以使用PIDs标志将找到的ps提供给另一个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' ')https://stackoverflow.com/questions/43398040
复制相似问题