check_process.sh
特定のプロセスが実行されているかどうかを確認する小さなスクリプト (と呼ばれる) を作成したいと考えて$PROC_NAME
います。存在する場合は、その PID を返すか、そうでない場合は -1 を返します。
私の考えは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 とその他のもの...) を取得しますが、実行されていないプロセスをチェックすると、他のものを取得します!
私は困惑しています。何か案が?前もって感謝します!