2
特定のプロセス$PROC_NAME
が実行されているかどうかを確認する小さなスクリプト(check_process.sh
)をビルドします。存在する場合は、そのPIDを返し、そうでない場合は-1を返します。bash:commadサブダクションのpgrep
私の考えは、pgrep -f <STRING>
をコマンド置換に使用することです。
私は、コマンドラインで直接このコードを実行した場合:
export ARG1=foo_name
export RES=$(pgrep -f ${ARG1})
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi
すべてがうまく行く:プロセスの状態に応じて、PID
または-1。
私のスクリプトcheck_process.sh
は、プロセスを渡すために、同じラインに加えて、余分な変数が含まれている名:
#!/bin/bash
export ARG1=$1
export RES=$(pgrep -f ${ARG1})
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi
しかし、このコードは動作しません! プロセスは、現在、私が実行されていないプロセスをチェックするとき、私は他の何かを得るのに対し、私は、2つのPID
S(プロセスのPIDと他の何かを...)を取得実行されている場合は!
私は困惑しています。何か案が? ありがとうございます!
あなたはおそらくマッチング処理され、プロセスがプロセスをマッチング:) – fedorqui
'のpgrep -f「$のproc_nameに"|| echo "-1" ' – Cyrus
よりコンパクトなコードをありがとう。しかし、私がスクリプトでそれを使うと、私はまだ同じ問題を抱えています! – eddie