关于shell:Shell在日常工作中的应用实践

59次阅读

共计 2242 个字符,预计需要花费 6 分钟才能阅读完成。

作者:京东物流 李光新

1 Shell 能够帮咱们做什么

作为一名测试开发工程师,在与 linux 服务器交互过程中,大都遇到过以下这些问题:

•一次申请多台服务器,多台服务器须要装置雷同软件,配置雷同的环境,同样的操作须要反复屡次;

•工作中常常会应用命令行命令来实现咱们的一些操作,然而有些命令使用率很高,而且很长,每次都全副敲进去势必会节约很多工夫(比方查日志)

长此以往,以上两个问题可能会导致:重复性工作,集体能力得不到任何进步,浪费时间,而且还容易出错,作为一名技术人员,当同一个操作反复了三次,咱们就应该思考是否能够通过工具来帮咱们实现。

而 shell 脚本正好善于, 把简单问题分解成简略的小问题,而后再把各个局部性能组合起来解决简单问题 。当然,有些命令咱们只能节俭三五秒的工夫,短期看不到工夫的节俭,然而从长期来看这个价值将是微小的。咱们能够将这些工夫专一于更有意义,更重要的事件 – 进步生命品质。

2 性能介绍

Shell 脚本语言的劣势在于解决偏操作系统底层的业务,例如,Linux 零碎外部很多利用是用 shell 脚本语言开发的,因为有泛滥的 Linux 系统命令为它作撑持,特地是 Linux 正则表达式和三剑客 grep、awk、sed 等命令。

对于一些常见的零碎脚本,应用 shell 开发会更简略、更疾速。就像让软件一键自动化装置、优化,监控报警脚本,软件启动脚本,日志剖析脚本等,尽管 PHP 和 Python 语言也能做到这些,然而因为把握难度、开发效率和开发习惯等,可能就不如 shell 脚本语言风行及有劣势了。

shell 是一个 C 语言编写的脚本语言,它是用户与 linux 的桥梁,用户输出命令交给 shell 来解决,shell 将相应的操作传递给内核,内核把解决的后果输入给用户。

可参考如下流程示意图:

简略来说:shell 就是一个用户跟操作系统之间交互的命令解释器

3 根本用法

上面首先来介绍下日常应用较多的根本指令:

3.1 文件拷贝

3.2 文件合并

有时候,要遇到将多个文件合并成一个的需要,除了反复的复制和粘贴,还能够通过简略指令来辅助实现。

cat 命令

默认地,cat 命令能够间接接管多个参数,这样,通过重定向能够很不便地合并文件:

成果如下:

4 案例分享

4.1 主动增加正文

上面咱们从日常工作动手,和大家一起来看下,shell 有哪些进步工作效率的利用场景~

首先,咱们编写的脚本有时候并不仅仅是咱们集体应用,可能是团队外部应用,所以通常在脚本正式编写前,通常须要增加局部正文,注明脚本的作用,创立日期,创建人等信息;

而如果编写脚本比拟多的话,这些重复性工作就会成为咱们的累赘,所以,咱们又能够将这些交给 shell 来帮咱们实现, 用 shell 脚本来解决创立 shell 脚本的重复性工作

上面给大家分享一个 shell 脚本的模板文件,把它拷贝到用户的根目录下并命名成 .vimrc 名称,这样咱们当前再次关上以 .sh 结尾的文件时就会成主动生成一些正文信息,只有稍稍批改一下即可如图所示:

vimrc 文件是 vim 的环境设置文件,在启动 vim 时,以后用户根目录下的.vimrc 文件会被主动读取,该文件能够蕴含一些设置甚至脚本,所以,个别会在.vimrc 文件中依据集体爱好进行一些自定义设置;

上面脚本我都正文了具体含意,可参考:

实现成果展现:

4.2 内存使用率监控预警

日常工作中,常常会遇到因为服务器被日志打满而不得不重启的场景,而对于一些必要的单据,就须要时常留神日志的备份,所以能够编写如下一个脚本,来做揭示;

如下脚本实现了,当服务器内存使用率超过 90% 时,提醒保留日志操作,如果未超过 90%,则不作任何解决;

实现成果展现:

4.3 后盾服务启动 / 进行 / 重启脚本

对于一些小范畴应用,暂未接入 j -one 部署的服务器,每次后盾服务代码更新,代码部署都是一项比拟繁琐的工作,而这就到了 shell 施展威力的时候了。

实现原理就是,将进行服务和启动服务须要执行的命令写进脚本,通过 shell 交互来实现,外加一些必要的判断逻辑,比方:

1. 执行启动服务时判断服务是否正在启动中;

2. 执行进行服务时判断依据交互条件筛选出的服务是否只有一个;

3. 执行重启服务时判断服务是否正在启动中;

4. 保障两头所有交互过程中的唯一性,防止失误将其他人的服务进行

实现脚本如下:

实现成果展现:

该脚本可在团队外部通用,只须要输出工作类型编号和对应工作关键字两步即可,脚本在执行过程中会主动提醒你确认执行工作对象是否正确,免得误伤;

1)进行服务

2)启动服务:

3)重启服务

大大减少了团队服务部署的工作量~

4.4 函数化封装

对于一些比较复杂的性能,或者须要屡次执行的性能,shell 也反对将性能封装为函数,间接执行函数即可;

比方服务器的部署根本能够分为以下几个步骤:

•服务部署目录创立

•服务配置部署

•服务利用部署

•服务利用启动

则该四个步骤能够通过 shell 脚本封装为四个函数,如下:

将每个模块编写为函数,最初,只须要调用 main 函数,即可执行上述一系列操作;

以此类推,装置 nginx,Java,jenkins 等各种软件操作,也能够封装成多个函数,实现自动化一键实现~

5 结语

综上,linux 服务器上,所有的重复性工作都能够交给 shell 来打理,日常工作中减少一个万能助手,何乐而不为呢

shell 脚本玲珑且功能强大,以上只是给大家分享了些日常应用到的脚本,其余性能大家也能够触类旁通,通过各种流程管制组合来实现,让 shell 来帮咱们做工具人,咱们就能够腾出更多的工夫来做更重要且更有意义的事件了,与君共勉。

正文完
 0