は、私はちょうど私がなぜ我々は場合、これは、チェックインし、それが何をやっている持っている必要があります知っている可能性がある場合 バッシュプロセスIDクエリ
for x in `ps -ef | awk '{ print $2 }'`
do
if [ "$x" != "PID" ];then
----- do something -----
fi
done
ようにチェックして、コードを見ましたか?
は、私はちょうど私がなぜ我々は場合、これは、チェックインし、それが何をやっている持っている必要があります知っている可能性がある場合 バッシュプロセスIDクエリ
for x in `ps -ef | awk '{ print $2 }'`
do
if [ "$x" != "PID" ];then
----- do something -----
fi
done
ようにチェックして、コードを見ましたか?
あなたがps -ef
を実行する場合、あなたはそれがヘッダーを印刷することが、わかります。
UID PID PPID TTY STIME COMMAND
[...]
チェックは、ヘッダーをスキップします。
ps -ef | awk '{ print $2 }'
'は以下のように出力されます。最初の行はPIDなので、statetementが使用されている場合はPID行を除外します。
[email protected]:/tmp$ ps -ef | awk '{ print $2 }' | head
PID
1
2
3
5
7
8
9
10
これを使用することもできます。
#!/bin/bash
for x in `ps -ef | awk '{ print $2 }' | grep -v PID`
do
#----- do something -----
echo $x
done
ヘッダー部分をスキップするためのチェックが追加されました。 awk
ステートメントを変更して最初の行をスキップして、if文全体を削除することができます。どのヘッダが実行されているか調べるにはps -eaf |head -n 1
。
for x in $(ps -ef | awk 'NR>1{ print $2 }')
do
--------Do something with $x---------
done
その他の情報: 'ps'の実装には、ヘッダの記述を省略するフラグがあります - マニュアルページを参照してください。これは移植性を犠牲にしても、スクリプトを単純化することができます。 –
'for'ループへの入力を生成するコマンドを実行しましたか? –
'awk'文を' ps -ef | 'に少し修正して' if condition'を削除することができます。 awk 'NR> 1 {print $ 2}' 'となります。これはヘッダーをスキップします。 –
あるいは、あなたが捨てる情報を印刷するために '-f'を使う代わりに、' for $ in ps(ps -e -o pid =);を実行してください。 do ... ... –