2016-05-07 7 views
1

コマンドを使用してrsyncプロセスが実行されているかどうかを調べるコマンドを準備しようとしています.は、私は以下の変数self.getSrcCountでコマンドをエスケープする方法について知りたい。cliのpgrepのオプションパラメーターをエスケープする方法

for n in range(0, len(self.chkMntPoints)): 
    self.chkMntPoints[n] = self.chkMntPoints[n].replace('\/','/') 
    self.getSrcCount  = 'ps aux | pgrep'+' '+'rsync'+' '+'-avz'+' '+'--progress'+' '+self.chkMntPoints[n] 
    print self.getSrcCount 
    self.srcWord   = subprocess.Popen(self.getSrcCount, shell=True, stdout=subprocess.PIPE,) 
    self.srcWc   = self.srcWord.communicate()[0].strip() 
    print self.srcWc 
    print len(self.srcWc) 
    return len(self.srcWc) 


Below is my output after the code execution: 

pgrep: invalid option -- a 
Usage: pgrep [-flvx] [-d DELIM] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST] 
     [-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN] 

0 
pgrep: invalid option -- a 
Usage: pgrep [-flvx] [-d DELIM] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST] 
     [-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN] 

0 
+0

import psutil for proc in psutil.process_iter(): print proc.name(), proc.cmdline() 

ドキュメント:これは、すべての実行中のプロセスを反復処理し、名前と起動パラメータを確認するのは簡単ですか!あなたはrsyncとprgepを混在させているようですが、bashからはうまくいかないでしょう –

+0

私はpsコマンドの出力の長さを見つけようとしています。長さが0の場合、移行が完了したと判断します。そうしないと、移行がまだ実行中であるというメッセージが表示されます。 – Kalyan

答えて

0

これは、あなたの質問に直接答えが、物事を単純化するための代替ソリューションではありません。 psutilライブラリを使用して、実行中のプロセスに関する情報を取得することができます。https://pypi.python.org/pypi/psutil。あなたのコマンドを実行することになっている何https://pythonhosted.org/psutil/

+0

はい、サーバーにはpsutilモジュールがありません。 – Kalyan

+0

インストールが許可されている場合は、pipで行うことができます:pip install psutil – wombatonfire

関連する問題