このスクリプトが実行されると、PIDを取得します。次に、出力「PID」を読み、次のコマンドを次のように実行したいと思います。
ps -ef | grep -i PID
ps -ef | grep -i PID
while read -r -u10 server port line
do
echo ========== server: "$server" port: "$port" ==========
ssh -qn "$server" "netstat -tulpunt | grep -E ":$port "" | \
awk '{print $7}' | grep '/' | awk -F "/" '{print $1}'
echo
done 10< demo
答え1
- 私が理解しているのは、コードの2番目の部分がPIDを提供し、それを見つけるためにgrepが欲しいということです。
- そしてdouble psもタイプミスです。
それはまるで
while read -r -u10 server port line
do
echo ========== server: "$server" port: "$port" ==========
pid=$(ssh -qn "$server" "netstat -tulpunt | grep -E ":$port "" | \
awk '{print $7}' | grep '/' | awk -F "/" '{print $1}' )
echo "PID: $pid"
ssh -qn "$server" "ps -ef | grep $pid"
echo
done 10< demo
ノート
| grep -v grep
grepはgrep自体を行います(最後に追加することをお勧めします)。$( ... )
行を延長する構文がわかりません。
編集する:
この場合は、以下を試してください。
ssh -qn "$server" "netstat -tulpunt | awk '/:"$port"/ { split(\$7,A,\"/\" ) ; printf \"ps -p %d\n\",A[1]}' | bash "
これは非常に直感的です。
- awkのgrep機能は
/:"$port"/
ポートを占有します。 - 分割すると、A[1]でPIDを選択します。
ps -p %d -f --no-headers
最後にシミュレーションに使用します。ps -ef | grep PID
- 私たちはそれをリモコンに与えました。
bash