2016-07-08 23 views
0

プロセスクロムが実行されているかどうかを確認するスクリプトを作成しようとしています。 スクリプトは、プロセスが実行中であれば10秒ごとにチェックし、10回見つかると終了する必要があります。 ここに私のコードです。プロセスがシェルスクリプトで実行されているか確認してください。

#!/bin/bash 

count=0 

while true; do 
    sleep 10s 
    isthere=`$(top) | grep -w chromium` 
    if [ $isthere -ne 0 ]; then 
     count=$((count+1)) 
    fi 
    if [ $count -eq 10 ]; then 
     echo "You found the process 10 times" 
     exit 50 
    fi 
done 

出力はまったくありません。 topコマンドを正しく使用しているかどうかわかりません。

答えて

1

ええと、topコマンドの使用が間違っています。シェルスクリプトから呼び出すと、結果としてハングします。

topコマンドには、いくつかのオプションがあります。私はあなたが "バッチ"モードに対応する-bオプションとそれを使用することをお勧めします。-nオプションは、反復回数のために、topの出力を生成します。詳細については、man topを参照してください。

また、変数isthereのテストも修正する必要があります(空でないことを確認します)。

#!/bin/bash 

count=0 

while true; do 
    sleep 10s 
    isthere=`top -b -n 1 | grep -w chromium` 
    if [ -n $isthere ]; then 
     count=$((count+1)) 
    fi 
    if [ $count -eq 10 ]; then 
     echo "You found the process 10 times" 
     exit 50 
    fi 
done 

働く結果のスクリプトは、このようなものです

1

pgrepをご利用ください。ループでは

$ if pgrep ksh >/dev/null; then echo "ksh is running"; fi 
ksh is running 

:お好みのツールで

i=0 
while ((i < 10)); do 
    if pgrep ksh >/dev/null; then 
    ((++i)) 
    fi 
    sleep 10 
done 

代替ksh

関連する問題