1
私は、あるサーバから別のサーバにファイルをコピーするシナリオを持っています。既存のscpを確認する必要があり、サンプルのシェルスクリプトを書きましたが、構文が成り立っていませんここでの主な問題は、の出力が変数scpstat
に格納され、if文で一致する文字列と比較されます。ここでは、変数の出力がスクリプト外で実行されています。 sh -x scpsamp.sh
を実行すると、出力に「sh
」が追加されていますが、psなしで比較したときにscpstat='scp'
と指定したときに、スクリプト実行時に異なる書式が設定されていることがわかります。変数に入力します。それはps
の出力から情報を抽出するために悪名高く難しい文字列比較はシェルスクリプト
#!/bin/sh
scpstat=`ps -ef | grep scp | egrep -v 'grep|ssh' | awk '{print $8}')`
if [ "$scpstat" = "scp" ];
then
echo "SCP is in progress"
else
echo "No SCP in progress"
fi
あなたは 'pdiof scp'を使用することができますし、それはいくつかのプロセスIDを与えた場合、その後に起こっSCP接続があります。 。 –
それは自宅で遊んでいる人のための 'pidof'です。しかしここでも 'pgrep'が便利です。 –
クロスサイト複製:http://serverfault.com/questions/367921/how-to-prevent-ps-reporting-its-own-process – tripleee