wuminru_01 发表于 2013-6-14 10:09:49

SH脚本运行时提示不是目录

#!/bin/sh
#system_monitor
day=`date +%m%d%Y`
file=${0%/*}/sysinfo$day
if [ -f $file ]; then
      echo "ok">/dev/null
else
echo "   date                      cpu                  mem                load average         io         sessions         inodes">>$file
echo "                     user    system   idle    free             1       5   15      read write">>$file
echo "">>$file
fi
time=`date '+%m%d %H:%M:%S '`
inodes=`df -i |grep app |awk '{print $5}'`
io=`iostat -k |head -7 |grep sda |awk '{print $3"|"$4}'`
iowait=`iostat -k |head -4 |tail -1|awk '{print $4}'`
load=`uptime |grep load|sed s/\,//g|awk '{printf"%10s %6s %6s", $(NF-2),$(NF-1),$NF}'`
cpu=`vmstat 1 2 | sed -n '$p' |awk '{printf "%8s %6s %9s", $13,$14,$15}'`
real=`vmstat |grep -v |awk '{printf "%12s",$4}'`
httpd_number=`ps -ef|grep httpd|grep -v grep|wc -l|awk '{printf "%9d",$1}'`
app_number=`ps -ef|grep "java"|grep -v grep | wc -l`
oracle_number=`ps -ef|grep "LOCAL=NO"|grep -v grep|wc -l|awk '{printf "%9d",$1}'`
echo "$time   $cpu$real$load    $io|$iowait$httpd_number+$app_number+$oracle_number|$inodes" >>$file

请大家帮忙看看这段SH脚本代码,为什么运行时候会提示不是目录的问题呢,谢谢了!如图

thxiaoxiao 发表于 2013-6-18 15:26:09

file=${0%/*}/sysinfo$day是你这个file变量设置的问题吧具体的我没看懂你这个变量{0%/*}这个位置的意思,但感觉你的错误提示是转化一个路径下的文件了但是你却没有这个目录

六月天 发表于 2013-6-19 10:39:40

文件名/路径,这叫什么东西?你到底想把日志写到哪里去?你直接把file=sysinfo$day不就行了?

wuminru_01 发表于 2013-7-11 17:39:54

哦,谢谢了,我可能写错了路径了。不好意思!
页: [1]
查看完整版本: SH脚本运行时提示不是目录