实践命令linux 实训linux常用命令( 二 )


反例:
正例:
反例:
正例:
反例:
文件名扩展
当进行文件名的通配符扩展时,请指定明确的路径 。
当目录中有特殊文件名如以- 开头的文件时,使用带路径的扩展通配符 ./* 比不带路径的 * 要安全很多 。
应该避免使用eval 。
Eval在用于分配变量时会修改输入内容,但设置变量的同时并不能检查这些变量是什么 。反例:
请使用进程替换或者for循环,而不是通过管道连接while循环 。
这是因为在管道之后的while循环中,命令是在一个子shell中运行的,因此对变量的修改是不能传递给父shell的 。
这种管道连接while循环中的隐式子shell使得bug定位非常困难 。反例:
如果你确定输入中不包含空格或者其他特殊符号(通常不是来自用户输入),则可以用for循环代替 。例如:
使用进程替换可实现重定向输出,但是请将命令放入显式子 shell,而非 while 循环创建的隐式子 shell 。例如:
总是检查返回值,且提供有用的返回值 。
对于非管道命令,使用 $? 或直接通过 if 语句来检查以保持其简洁 。
例如:
当内建命令可以完成相同的任务时 , 在shell内建命令和调用外部命令之间 , 应尽量选择内建命令 。
因内建命令相比外部命令而言会产生更少的依赖,且多数情况调用内建命令比调用外部命令可以获得更好的性能(通常外部命令会产生额外的进程开销) 。
正例:
反例:
加载外部库文件不建议用使用.,建议使用source,已提升可阅读性 。正例:
反例:
除非必要情况 , 尽量使用单个命令及其参数组合来完成一项任务,而非多个命令加上管道的不必要组合 。常见的不建议的用法例如:cat和grep连用过滤字符串; cat和wc连用统计行数; grep和wc连用统计行数等 。
正例:
除特殊情况外 , 几乎所有函数都不应该使用exit直接退出脚本,而应该使用return进行返回,以便后续逻辑中可以对错误进行处理 。正例:
反例:
推荐以下工具帮助我们进行代码的规范:
原文链接:
获取更多的面试题、脚本等运维资料点击: 运维知识社区 获取
脚本之---短信轰炸机
脚本之---QQ微信轰炸机
ansible---一键搭建redis5.0.5集群
elk7.9真集群docker部署文档
全球最全loki部署及配置文档
最强安全加固脚本2.0
一键设置iptbales脚本
Docker之Linux Cgroup实践Docker通过cgroup技术实现对容器资源实践命令linux的限制,在我们自己实践命令linux的应用中通过对某些不重要的应用做cpu、内存资源上限的限制来确保任何时候重要的应用有足够的资源使用 。下面是对docker容器做cpu与内存资源限制的实践记录 , 环境为centos7.2+docker1.12.6 。
Linux Cgroup最主要的作用是为一个进程组设置资源使用的上限,这些资源包括CPU、内存、磁盘、网络等 。在linux中,Cgroup给用户提供的操作接口是文件系统,其以文件和目录的方式组织在/sys/fs/cgroup路径下 。更多的cgroup介绍可以阅读、、
等文章 。
通过一个简单的例子,对一个进程的cpu使用率做限制,操作如下实践命令linux:
这里同样以cpu设置为例 , 探索docker容器是如何通过cgroup做限制的
由此可知在创建一个容器时实践命令linux:
这里仅对最为常用的两个参数--cpu-period、--cpu-quota做设置 , 使用stress服务做验证
这里针对--memory , --memory-swap , --memory-swappiness三个参数做实践

推荐阅读