AIOps 一场颠覆传统运维的盛筵
919
2022-10-16
shell简介
一、shell简介
Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,用户每输入一条命令,Shell就解释执行一条。
二、shell编程所需的基础知识
1、能够熟练使用vim编辑器
2、要有一定的Linux命令基础,至少需要掌握80个以上Linux常用命令
3、要熟练掌握Linux正则表达式及三剑客命令
4、熟悉常见的Linux网络服务部署、优化、日志分析及排错。
三、shell脚本
当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序就被称为Shell脚本。如果在Shell脚本里内置了很多条命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。Shell脚本类似于DOS系统下的批处理程序。
举例:写一个包含命令、变量和流程控制的语句来清除/var/log下messages日志文件的Shell脚本。
思路:脚本可以设计成如下几关:
第一关,必须是root才能执行脚本,否则给出友好提示并终止脚本运行。
第二关,成功切换目录(cd/var/log),否则给出友好提示并终止脚本运行。
第三关,清理日志(cat/dev/null>messages),若清理成功,则给出正确提示。
第四关,通关或失败,分别给出相应的提示(echo输出)。
四、shell脚本语言的种类
Shell脚本语言是弱类型语言(无须定义变量的类型即可使用),在Unix/Linux中主要有两大类Shell:一类是Bourne shell,另一类是C shell。
1、Bourne shell
又包括Bourne shell(sh)、Korn shell(ksh)、Bourne Again Shell(bash)三种类型。
Bourne Again Shell(bash)由GNU项目组开发,主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,bash从csh和ksh借鉴了很多功能,是各种Linux发行版默认配置的Shell,Linux系统上的/bin/sh往往是指向/bin/bash的符号链接。尽管如此,bash和sh还是有很多的不同之处:一方面,bash扩展了一些命令和参数;另一方面,bash并不完全和sh兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用bash替代sh。
2、C shell
csh由Berkeley大学开发,随BSD UNIX发布,它的流程控制语句很像C语言,支持很多Bourne shell所不支持的功能,例如:作业控制、别名、系统算术、命令历史、命令行编辑等。
/bin/sh #<==linux里常用的shell,指向/bin/bash
/bin/bash #<==linux里常用的shell,也是默认使用的shell
/usr/bin/sh #<==
/usr/bin/bash #<==
/sbin/nologin #<==这是Linux里常用的Shell,用于禁止用户登录。
五、其他常用的脚本语言种类
1、php
PHP是网页程序语言,也是脚本语言。wordpress、dedecms、discuz等著名的开源产品都是用PHP语言开发的。
2、perl
缺点是不易读,团队协作困难,但它仍不失为一种很好的脚本语言,存世的大量相关程序软件(比如,xtrabackup热备工具、MySQL MHA集群高可用软件等)中都有Perl语言的身影。
3、Python
Python是近几年非常流行的语言,它不但可以用于脚本程序开发,也可以实现Web页面程序开发(例如:CMDB管理系统),甚至还可以实现软件的开发(例如:大名鼎鼎的OpenStack、SaltStack都是Python语言开发的)、游戏开发、大数据开发、移动端开发。
六、shell优势
对于一些常见的系统脚本,使用Shell开发会更简单、更快速,例如:让软件一键自动化安装、优化,监控报警脚本,软件启动脚本,日志分析脚本等,虽然PHP/Python语言也能够做到这些,但是,考虑到掌握难度、开发效率、开发习惯等因素,它们可能就不如Shell脚本语言流行及有优势了。对于一些常规的业务应用,使用Shell更符合Linux运维简单、易用、高效的三大基本原则。
PHP语言的优势在于小型网站系统的开发;Python语言的优势在于开发较复杂的运维工具软件、Web界面的管理工具和Web业务的开发(例如:CMDB自动化运维平台、跳板机、批量管理软件SaltStack、云计算OpenStack软件)等。我们在开发一个应用时应根据业务需求,结合不同语言的优势及自身擅长的语言来选择,扬长避短,从而达到高效开发及易于自身维护等目的。
七、常用操作系统默认的shell
linux下默认的shell是bash,Solaris和FreeBSD默认的是sh,AIX默认的是ksh。
查看默认的shell方法:
#echo $SHELL
#grep root /etc/passwd
发表评论
暂时没有评论,来抢沙发吧~