加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

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

发布时间:2019-03-02 23:03:04 所属栏目:外闻 来源:匠心独运维妙维效
导读:无论是系统运维,还是应用运维,均可分为纯手工 脚本化 自动化智能化几个阶段,其中自动化阶段,主要是将一些重复性人工操作和运维经验封装为程序或脚本,一方面避免重复性操作及风险,另一方面提高执行效率。在自动化运维的转变过程中,经常使用的可能就

9)对于打包后还需进行压缩的文件,建议使用管道进行处理,如:

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

不建议两部分分开执行:

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

10)使用ps命令筛选进程时,如能确定进程所属用户,必须在参数中指定用户名称,,如其输出作为kill命令的输入,则必须指定进程所属用户,如:

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

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

这里介绍的主要是日常shell编写中遇到比较隐蔽或看似简单,却难以发现的“坑”,编写中应尽量避免使用,使用更优的方法避免重蹈覆辙。

1)更新文件使用>不用cp

使用>修改和回退文件时,保留原文件的属组和权限,避免使用cp时权限属组被修改。

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

2)使用kill前确认

关键字用-w 精确匹配字段;

kill前后都保留现场, 两次ps -ef|grep -w 关键字|grep -v grep >>/tmp/kill_进程名_.backup;

删除前要校验,获取进程号是否唯一,避免多杀或误杀的情况。

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

3)使用rm前确认

删除前备份删除对象信息,避免使用变量,直接使用文件和目录名;

如果必须使用时,删除前,建议检查避免误删,删除目录和文件信息保留:

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

建议禁用find遍历根目录进行查找,同时删除前进行确认,避免多删或误删的情况。

4)For循环的坑

for循环的in条件按空格来区分,避免进入不正确或死循环。

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

5)while循环的禁忌

如果还想使用循环中的变量,不要while结合管道使用。

6)慎用cp

这句话基本上正确,但同样有空格分词的问题。所以应当用双引号:

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

但是如果凑巧文件名以 - 开头,这个文件名会被 cp 当作命令行选项来处理。

可以试试下面这个:

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

但也可能再碰上一个不支持 -- 选项的系统,所以最好用下面的方法:

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

7)慎用cd

避免使用cd到操作目录再操作的方式,可能导致进入目录失败,误删除,如:

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

建议如下:

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

8) 用[[ ]]代替[ ]

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

当$var为空时,上面的命令就变成了[ ="bar" ]

类似地,当$var包含空格时:

[ space words here = "var" ]两者都会出错。所以应当用双引号将变量括起来:

[ "$var" = var ] 几乎完美了。

(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读