2014-11-23 59 views
1

我有幾臺奇怪的服務器,所以爲了找到問題,我寫了一些應該運行一些基本測試並將它們輸出到日誌文件的bash腳本。如何將時間命令的輸出重定向到日誌文件?

腳本看起來像這樣:

#!/bin/bash 
PENDERLIST="/root/pender.list" 
PING="/bin/ping" 
ETHTOOL="/sbin/ethtool" 
FILE="/root/14mfile" 
function writelog 
{ 
     echo "$(/bin/date +%F) $(/bin/date +%R): $*" 
} 
for SRV in $(cat $PENDERLIST); do 
writelog "################### Begin $SRV ########################" 
echo "### PING ###" 
$PING $SRV -c 2 
ssh [email protected]$SRV "yum install lshw -y" 
echo "### Uname -a ###" 
ssh [email protected]$SRV "uname -a" 
echo "### Release ###" 
ssh [email protected]$SRV "/bin/cat /etc/*release*" 
LSHW=$(ssh [email protected]$SRV "lshw -C network |grep eth | awk 'NR==1' ") 
NIC=$(echo $LSHW | awk -F: '{print $2}') 
echo "### IFCONFIG ###" 
ssh [email protected]$SRV "ifconfig" 
echo "### ETHTOOL ###" 
ssh [email protected]$SRV "ethtool $NIC" 
echo "### FILE TRANSFER ###" 
time scp $FILE [email protected]$SRV 
writelog "############## End of report for $SRV #################" 
done 

我運行它像這樣:

./check_server.sh > log.txt 

所有輸出從時間命令有寫入日誌成功分開。 我試着改變命令:

(time scp $FILE [email protected]$SRV) 2> log.txt 
{ time ls; } 2> out.txt 

但兩者打印的time輸出到屏幕上,而不是在log.txt文件。 如何將時間輸出重定向到日誌?

編輯#1:

在檢查日誌,在所在行的時候輸出應該是,我看到:

### FILE TRANSFER ### 
2014-11-23 02:31: ############## End of report for pender4.company.com ################# 
2014-11-23 02:31: ################### Begin pender5.company.com ######################## 
+0

2用於重定向標準錯誤。嘗試附加到日誌文件(時間SCP $文件根@ $ SRV)>> log.txt – SMA 2014-11-23 10:27:31

+0

對不起,沒有提及它,嘗試過,但無濟於事。 – 2014-11-23 10:28:20

+0

你檢查了你的log.txt嗎?無論你迴應或寫入標準輸出,你正在重新檢查log.txt? – SMA 2014-11-23 10:30:51

回答

1

時間指令殼關鍵字...當你運行time命令在終端它不是/usr/bin/time所以像-a-o這樣的選項將不會與time命令一起使用。然而man time仍然會顯示/usr/bin/time手冊頁。你必須使用/usr/bin/time -o logfile command重定向時間的輸出到文件logfile或者您可以使用下面的命令,它是類似於shell的關鍵字time

/usr/bin/time -o time_log -f "%E real,%U user,%S sys" [command] [args]重定向時間的輸出到文件time_log

相關問題