2016-12-07 7 views
0

私が書いたスクリプトでは、出力はログファイルmySysMonitor.logに送られます。このスクリプトのユーザーは、ログファイルに送信するログレベル(デバッグ情報または情報)を選択できるようにします。どのように私はこれを行うのですか?以下のスクリプトを例に挙げてください。bashスクリプトの出力にログレベルを選択する方法

#!/bin/bash 

processKD(){ 
    printf "\nCURRENT PROCESSES \r" 
    ps -eo user,pid,pcpu,pmem,start | sort -rk 3,4 | head -n 11 
    echo "TOTAL NUMBER OF RUNNING PROCESSES: $(ps aux | wc -l)" 
} 

loggedInKD(){ 
    printf "\nUSERS CURRENTLY LOGGED IN\r" 
    echo "Number of users logged in: $(w | head -n 1 | cut -d"," -f 3)" 
    who 
} 
processKd >> mySysMonitor.log 
loggedInKd >> mySysMonitor.log 
+0

デバッグレベルと情報レベルの違いは何ですか? – Aserre

+0

サンプルスクリプトでは、ログレベルについて何も表示されません。 – Aaron

答えて

1

このようなものを使用できます。

#!/bin/bash 

processKD(){ 
    printf "\nCURRENT PROCESSES \r" 
    ps -eo user,pid,pcpu,pmem,start | sort -rk 3,4 | head -n 11 
    echo "TOTAL NUMBER OF RUNNING PROCESSES: $(ps aux | wc -l)" 
} 

loggedInKD(){ 
    printf "\nUSERS CURRENTLY LOGGED IN\r" 
    echo "Number of users logged in: $(w | head -n 1 | cut -d"," -f 3)" 
    who 
} 



LOG_LEVEL="info" 
#LOG_LEVEL=$1 #with parameter ./script info 

#LOG_LEVEL="debug" 

if [ "$LOG_LEVEL" == "info" ]; then 
loggedInKd >> mySysMonitor.log 
fi 

if [ "$LOG_LEVEL" == "debug" ]; then 
processKd >> mySysMonitor.log 
loggedInKd >> mySysMonitor.log 
fi 
+2

これで、ユーザーはスクリプトを手動で編集してログレベルを変更する必要があります。パラメータを使用してLOG_LEVELを適切に設定する方が良いでしょう – Aserre

+0

これを実行しようとしました。出力のログレベルはまだデバッグのみまたは情報のみではありません。私は行方不明のものがありますか? –

関連する問題