1、运维人员在日常工作中需要写一些shell脚本监控服务器资源使用情况:
2、下面一个监控脚本:
echo -e "服务器名称,CPU使用率,内存使用率,磁盘总空间,磁盘使用率,磁盘剩余空间"
cpu=$(top -b -n 1 | grep "^%Cpu" | awk '{printf "%.2f%%",$2 + $4}')
mem=$(free -m | awk 'NR==2{printf "%.2f%%",(1-$4/$2)*100 }')
disk_total=$(df -h | awk '$NF=="/"{print $2}')
disk_used=$(df -h | awk '$NF=="/"{print $5}')
disk_avail=$(df -h | awk '$NF=="/"{print $4}')
echo -e "$HOSTNAME,$cpu,$mem,$disk_total,$disk_used,$disk_avail"
执行脚本报$'\r': command not found
3、报错解释:
这个错误通常发生在Unix-like系统中,特别是在使用bash shell时。报错信息 jk.sh: line 3: $'\r': command not found
表示在脚本jk.sh
的第三行发现了一个不可见的字符\r
(即回车符),这通常是因为脚本是在Windows环境下编辑的,保存了Windows风格的行尾结束符(CRLF,即回车+换行),而Unix/Linux环境下的行尾结束符只有换行符(LF)。
4、解决方法:使用dos2unix
命令转换文件格式
4.1 执行yum install -y dos2unix
4.2 再执行dos2unix jk.sh
4.3 执行sh jk.sh
监控脚本执行成功,问题解决。