2014-11-23 36 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

相关问题