Shell 开发在运维中的经验总结

1)脚本开头部分应有脚本功能说明、参数使用说明、作者姓名、创建/修改日期、版本信息,格式为:
Shell 开发在运维中的经验总结_第1张图片
2)脚本编写时,注意格式对齐,如所有的循环或者判断语句前后的语句进行对齐,以及case的选取完全,如:Shell 开发在运维中的经验总结_第2张图片

3)脚本开头执行时,执行如下命令,在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出:在这里插入图片描述

4)建议将命令行的每个参数放在单引号、双引号中,特别是rm、mv等可能对生产现有数据造成修改的操作,建议使用垃圾箱策略:rm操作转意为mv操作,制定文件保存目录,以防回退,并定期清理:
在这里插入图片描述
5)命令行中参数需要使用‘’、‘?’通配符的,应依据最精确匹配原则,如能确定文件、目录名称的前缀、后缀、扩展名及其他可识别关键字的,须在参数中包含该信息,如能确定文件、目录的长度应使用‘?’通配符,不得使用‘’,推荐的使用方式:
在这里插入图片描述
不推荐使用的方式:
在这里插入图片描述
禁止使用的方式:
在这里插入图片描述
6)给数值型变量的赋值后,需由手段保证变量的值为数值型,避免在后续的处理中出现异常:
Shell 开发在运维中的经验总结_第3张图片
7)在判断条件中使用的变量,必须包含在双引号中,如:
Shell 开发在运维中的经验总结_第4张图片
禁止使用的方式:

在这里插入图片描述
在这里插入图片描述
8)对文件进行打包备份时,必须使用相对路径进行打包,如:
在这里插入图片描述
严禁将全路径打入tar包, 如:
在这里插入图片描述
9)对于打包后还需进行压缩的文件,建议使用管道进行处理,如:
在这里插入图片描述
不建议两部分分开执行:
在这里插入图片描述
10)使用ps命令筛选进程时,如能确定进程所属用户,必须在参数中指定用户名称,如其输出作为kill命令的输入,则必须指定进程所属用户,如:
在这里插入图片描述
总结:

鉴于以上脚本,我们可以从中汲取一些经验,规避一些风险:

通过增加日志记录输出和脚本执行的方法说明,并自动交互和传递参数,避免执行脚本的操作风险;利用文件锁机制和运维中一些规避风险的方法,使得脚本自动执行起来更便捷更安全。

  1. 通过规范类脚本的定义,标准常量定义、清晰的注释、函数和变量大小写用法,细节中可以看出严谨,即使只有几行,也能体现出一名优秀脚本开发人员的素质。

  2. 通过易错类脚本中的“坑”,使得 shell面向过程的编写更得心应手,让脚本规范的同时,逻辑也更严谨清晰,避免了错误,也提高了脚本的开发效率。

  3. 通过运维场景的脚本应用,规避各种开发和执行过程中的风险,使得shell脚本不仅能支持自动化发布,更可以全面智能化的为运维服务。
    转载:运维大会

你可能感兴趣的:(shel开发经验总结)