2017-04-13 1 views
2

UIDを出力する必要があります。bash 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 

しかし、私は(このプロセスは存在する)

UPDATE

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 

これは私のために動作しますが、実際にこのソリューション引数$ 2 = bashので、このコマンドを使用するときには、何も出力しませんIMHOは最高のものではありません。私はgrepの名前の後にシャドウコラムコマンドを使用し、コマンドを除くすべてのカラムを表示します。

+0

ですawk'コマンドの代わりに –

+0

が失敗すると、 'cut -d '、' -f-9'を使うことができます。それよりも、 'awk' /' cut'を避けるために、 'ps ouid、pid、(...)、tty、time $(pgrep $ 2)'を使うことができます。 – silel

答えて

1

いつでも2段階アプローチを使用できます。

)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 

それが容易でgrepを(及びノイズレス偽トリガーせず、)。 cutはPIDだけを抽出します。例えば。

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

プリント

67676 
71548 
71995 
74364 

2)と完全なコマンドがあるので、今は、-pフラグを使用して別のpsに見つかったPIDsを養うことができます。

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 

`グレップのbash`だろう、引数付きコマンド - 最高のgrepのbash``ため、 `cmd` - ちょうどコマンド名 - $2使用したソリューションは、あなたが` comm`列( `comm`を逃した

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

ありがとう!それは本当に私にとって素晴らしいソリューションです! –

関連する問題