一、内容
错误合集,记录用。
二、服务(配置文件)
2.1 DNS服务无效(文件无权限)
[root@localhost named]#host han.han.com Host wang.han.com not found: 2(SERVFAIL) #错误内容:配置文件无误,程序启动成功,进行dns解析测试时出现无法解析对应IP #错误原因:对应数据库配置文件权限不足,han.com.zone权限不够 #解决方案:为数据库配置文件添加对应权限 [root@localhost named]#chmod 640 han.com.zone [root@localhost named]#chgrp named han.com.zone [root@localhost named]#ll han.com.zone -rw-r-----. 1 root named 211 4月 22 13:58 han.com.zone [root@localhost named]#systemctl restart named [root@localhost named]#host han.han.com han.han.com has address 192.168.13.30 #重启服务:修复成功
三、脚本(命令错误)
3.1 多余隐藏字符(Windows写脚本)
[root@localhost shell]#./expect.sh /dev/sdb -bash: ./expect.sh: /usr/bin/expect^M: 坏的解释器: 没有那个文件或目录 #错误原因:该脚本由Winods记事本编辑,直接导入Linux系统中;由于Windows中换行需要/r/n都有,而Linux中换行只需/n,故出现语法错误 [root@localhost shell]#cat -e expect.sh #!/usr/bin/expect^M$ set user [lindex $argv 0]^M$ #通过cat命令查看隐藏字符可发现,多出许多^M,这些是Windows中的换行符,Linux系统无法识别该字符进行换行 #解决方法:将所有Windows换行为替换为Linux换行符即可(即删除多余的/r) [root@localhost shell]#sed -i 's/\r//g' expect.sh [root@localhost shell]#cat -e expect.sh #!/usr/bin/expect$ set user [lindex $argv 0]$ #换行符全部替换完毕,问题解决
3.2 过滤指定行(grep+sed)
[root@localhost opt]#cat -n 1.sh 1 a 2 aaa 3 a 4 aa [root@localhost opt]#cat -n 1.sh |grep a|sed -n "2 p" 2 aaa #通过grep与sed组合,输出过滤出来内容的指定行内容
3.3 删除变量最后一个字符------${变量%?}
#例句 IP=`ifconfig |grep ens33 -A 1|grep inet|awk '{print $2}'` #假设此时IP的值为192.168.13.20 echo ${IP$%} #此时显示的值为192.168.13.2
3.4 搜索本机网关地址及掩码(route)
四、结语
总结:想要学得好,唯有多敲多练,最开始的时候就是抄脚本,后期可根据需求独立盲写脚本。