ズームプログラムが実行されているかどうかを検出しようとしています。また、dpkgを使用してインストールするには、bashスクリプトにsudo権限が必要です。
を使用すると、pgrep -f "zoom" >/dev/null 2>&1
Zoomが実行されている場合はecho $?
戻りコードが0に正しく設定され、見つからない場合は1に正しく設定されます。
を使用すると、sudo
2つの追加プロセス、つまり最初のプロセスと最初のプロセスの子プロセスがpgrep
得られます。これはうまくいかなかったので、「ハッキング回避策」を使用する必要がありました。働いた。正規表現は、プロセスが結果に追加されないことを保証しました。sudo pgrep etc.
pgrep etc.
sudo
sudo pgrep -f "[z]oom" >/dev/null 2>&1
pgrep
プロセスが実行中でない場合は1に設定され、プロセスが実行中の場合は0に設定されますsudo pgrep -f "[z]oom" >/dev/null 2>&1 ;
。echo $?
完璧。
しかし、これをbashスクリプト(として実行sudo
)に追加すると、次のようになります。
if pgrep -f "[z]oom" 2>&1 ; then
echo $?
echo "zoom is running"
これはもう機能しません。いつもスケーリングプロセスが実行中であることを示します。したがって、スケーリングが実行されていても常にゼロを返します。いいえラン)。
なぜそんなことですか?
答え1
問題は-f
。
pgrep -x zoom >/dev/null 2>&1