本站教程收集整理的这篇文章主要介绍了在运维中美国高防vps的shell经验总结,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
来自良许Linux公众号
编写
-
脚本开头部分应有脚本功能说明、参数使用说明、作者姓名、创建/修改日期、版本信息,格式为:
-
脚本编写时,注意格式对齐,如所有的循环或者判断语句前后的语句进行对齐,以及case的选取完全
-
脚本开头执行时,执行如下命令,在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出:
-
建议将命令行的每个参数放在单引号、双引号中,特别是rm、mv等可能对生产现有数据造成修改的操作,建议使用垃圾箱策略:rm操作转意为mv操作,制定文件保存目录,以防回退,并定期清理:
-
命令行中参数需要使用‘’、‘?’通配符的,应依据最精确匹配原则,如能确定文件、目录名称的前缀、后缀、扩展名及其他可识别关键字的,须在参数中包含该信息,如能确定文件、目录的长度应使用‘?’通配符,不得使用‘’,推荐的使用方式:
- 给数值型变量的赋值后,需由手段保证变量的值为数值型,避免在后续的处理中出现异常
#!/bin/bash count=`cat test.log|wc -l` isnumber $count isnumber() { if [ "$1" -eq "$count" ];then echo " $1 is number" else echo "$1 isn't a number" exit 1 fi }
- 在判断条件中使用的变量,必须包含在双引号中,如:
if [ "$i" -lt "$max" ] then break fi if [ -f "$conf" ] then break fi
-
对文件进行打包备份时,必须使用相对路径进行打包,如:
-
对于打包后还需进行压缩的文件,建议使用管道进行处理,如:
-
使用ps命令筛选进程时,如能确定进程所属用户,必须在参数中指定用户名称,如其输出作为kill命令的输入,则必须指定进程所属用户,如:
kill -9
ps -fu $USERNAME| grep java |grep AdminServer
易错类sHell编写
-
更新文件使用 >,不适用cp
使用> 修改文件和回退文件的时候,保留源文件的属主和权限,避免使用cp时权限属组被修改,不过也可以在cp是使用-pr保留原先权限和属组 -
使用kill命令前需确认。
关键字使用 -w 精确匹配。
kill前后都保留现场, 两次ps -ef|grep -w 关键字 | grep -v grep>> /tmp/kill_进程名.BACkup
删除前需要确认校验,获取的进程号是否唯一,避免误杀 -
使用rm前确认
删除前备份删除对象信息,避免使用变量,直接使用文件和目录名;
如果必须使用时,删除前,建议检查避免误删,删除目录和文件信息保留:尽量不要用find 遍历根目录进行查找,同事删除前需要进行确认,避免多删误删。
-
for循环的in条件按空格来区分,避免进入不正确或死循环
-
while循环的禁忌,如果还想使用循环中的变量,不要while结合管道使用。
-
慎用cp,这句话基本上正确,但同样有空格分词的问题。所以应当用双引号:
cp “$file” “$target” -
慎用cd
避免使用cd到操作目录再操作的方式,可能导致进入目录失败,误删除,如: -
用[[ ]]代替[ ]
- 管道操作中不要同时读写文件
-
cd的易错问题
应用类
@H_696_273@
本站总结
以上是本站教程为你收集整理的在运维中的shell经验总结全部内容,希望文章能够帮你解决在运维中的shell经验总结所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。