我正在尝试编写用于服务器运行状况检查的shell脚本。 要使用的命令位于单独的文件中,作为命令行参数传递给脚本 该文件逐行读取。 我的剧本是:
#!/bin/bash
set -x # DEBUG MODE
FILENAME=$1
count=0
echo "Executing commands on `hostname`"
echo "The commands output can be found in /tmp/`hostname`_hc.txt"
echo "########### `hostname` ############ " > /tmp/`hostname`_hc.txt
while IFS= read COMMAND
do
let count++
echo >> /tmp/`hostname`_hc.txt
echo "###################################################################" >> /tmp/`hostname`_hc.txt
echo "###################################################################" >> /tmp/`hostname`_hc.txt
echo "$count : $COMMAND" >> /tmp/`hostname`_hc.txt
$COMMAND >> /tmp/`hostname`_hc.txt
echo "####################################################################" >> /tmp/`hostname`_hc.txt
echo "####################################################################" >> /tmp/`hostname`_hc.txt
echo >> /tmp/`hostname`_hc.txt
done < $FILENAME
echo "Commands executed on `hostname` "
我的示例服务器运行状况检查命令是:
df -ak
vmstat 5 5
ls -lrt /opt/config/ | grep -i ss7
prtdiag -v
ps -ef | grep ss7
swap -s
dmesg| grep "`date +%b %d`" | grep "swap space limit exceeded"
dmesg|grep -i ECC
当我执行此脚本时,我为“|”的命令收到这些错误使用管道:
ls -lrt /opt/config/ | grep -i ss7
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access ss7: No such file or directory
同样,对于ps -ef | grep ss7
,我收到此错误消息
ERROR: Garbage option.
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
答案 0 :(得分:2)
可能需要改变
$COMMAND >> /tmp/`hostname`_hc.txt
到
eval $COMMAND >> /tmp/`hostname`_hc.txt