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

脚本 $

监控脚本执行成功,问题解决。