shell运维基本知识笔记

shell概念

  1. 对于图形化界面安装的软件,用户点击图标就可以运行程序,在命令行中输入命令也可以启动程序,其启动方法都是查找到程序在硬盘上的位置加载到内存中运行。然而真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行是用户和内核之间的一层“代理”,既能简化用户操作又能保障内核安全。linux下的这层代理就叫shell
  2. shell是一个应用程序,它连接了用户和linux内核,让用户能够更高效、安全、低成本的使用linux内核,这个就是shell的本质

shell是一个程序一般放在/bin或者/usr/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它(root权限下)。

查看当前 Linux 的默认 Shell
echo是一个 Shell 命令,用来输出变量的值。
SHELL是 Linux 系统中的环境变量,它指明了当前使用的 Shell 程序的位置,也就是使用的哪个 Shell。在这里插入图片描述
3. shell特殊性:开机立马启动,并呈现在用户面前,用户通过shell来使用linux。

shell的使用

  1. shell本身自带的命令叫做内置命令,其它应用程序的命令叫外部命令。shell本身支持的命令不多功能有限但是shell可以调用其他的程序,每一个程序就是一个命令,所以shell命令数量无限扩展功能强大,应对linux日常管理工作:eg、文本或字符串检索、文件查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等
  2. shell还能让多个外部程序发生连接,在它们之间很方便的传递数据,也就是把一个程序的输出结果传递给另一个程序作为输出
  3. shell也支持编程,主要用来开发一些实用的自动化的小程序。eg:检测计算机的硬件参数、搭建web运行环境、日志分析等。shell使我们能够自动化的管理服务器集群

shell是一种脚本语言

  1. 代码最终都要被 ”翻译“ 乘二进制文件才能在计算机中执行。
    有的编译语言 ,如C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。

这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。

而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。

这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。

编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。

脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。
Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

linux运维工程师

  1. OPS(linux运维工程师) 的主要工作就是搭建起运行环境,让程序员写的代码能够高效、稳定、安全地在服务器上运行,他们属于后勤部门。OPS 的要求并不比程序员低,优秀的 OPS 拥有架设服务器集群的能力,还会编程开发常用的工具。

  2. OPS 这项工作的细节内容包括:
    安装操作系统,例如 CentOS、Ubuntu 等。
    部署代码运行环境
    及时修复漏洞,防止服务器被攻击,这包括 Linux 本身漏洞以及各个软件的漏洞。
    根据项目需求升级软件
    监控服务器压力,别让服务器宕机。例如淘宝双十一的时候就会瞬间涌入大量 用户,导致部分服务器宕机,网页没法访问,甚至连支付宝都不能使用。
    分析日志,及时发现代码或者环境的问题,通知相关人员修复。

  3. Shell 脚本很适合处理纯文本类型的数据,而 Linux 中几乎所有的配置文件、日志文件(如 NFS、Rsync、Httpd、Nginx、MySQL 等),以及绝大多数的启动文件都是纯文本类型的文件。Shell 脚本是实现 Linux 系统自动管理以及自动化运维所必备的工具,Linux 的底层以及基础应用软件的核心大都涉及 Shell 脚本的内容。

  4. 除了 Shell,能够用于 Linux 运维的脚本语言还有 Python 和 Perl。
    Perl 比 Shell 强大很多,在 2010 年以前很流行,它的语法灵活、复杂,在实现不同的功能时可以用多种不同的方式,缺点是不易读,团队协作困难。(可忽略)

Python 是近几年非常流行的语言,它不但可以用于脚本程序开发,也可以实现 Web 程序开发,甚至还可以实现软件的开发、游戏开发、大数据开发、移动端开发。

Shell 脚本的优势在于处理偏操作系统底层的业务,例如,Linux 内部的很多应用(有的是应用的一部分)都是使用 Shell 脚本开发的,因为有 1000 多个 Linux 系统命令为它作支撑,特别是 Linux 正则表达式以及三剑客 grep、awk、sed 等命令。

对于一些常见的系统脚本,使用 Shell 开发会更简单、更快速,例如,让软件一键自动化安装、优化,监控报警脚本,软件启动脚本,日志分析脚本等,虽然 Python 也能做到这些,但是考虑到掌握难度、开发效率、开发习惯等因素,它们可能就不如 Shell 脚本流行以及有优势了。对于一些常见的业务应用,使用 Shell 更符合 Linux 运维简单、易用、高效的三大原则。

Python 语言的优势在于开发复杂的运维软件、Web 页面的管理工具和 Web 业务的开发(例如 CMDB 自动化运维平台、跳板机、批量管理软件 SaltStack、云计算 OpenStack 软件)等。

我们在开发一个应用时,应该根据业务需求,结合不同语言的优势以及自己擅长的语言来选择,扬长避短,从而达到高效开发、易于自己维护的目的。

常见的shell:sh、bash、csh、tcsh、ash

sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
csh这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
ash是一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与 bash shell 完全兼容。
bash是 Linux 的默认 shell。bash 兼容 sh ,意味着针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行
bash 和 sh 不同之处:
1、bash 扩展了一些命令和参数;
2、bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

shell命令(ls,read)

  1. ls属于目录命令操作,用于列出当前目录下的文件和文件夹
    在这里插入图片描述
    ls -l显示文件的详细信息
    在这里插入图片描述
    参数是命令的操作对象,一般情况下,文件、目录、用户和进程等都可以作为参数被命令操作。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数

  2. read 命令用来读取用户输入的数据,并把读取到的数据赋值给一个变量,它通常的用法为:read str(str 为变量名)。
    read可以带有-a, -d, -n,-N, -p, -r,-s, -t, -u九个选项。选项说明:
    -a:将字符串依次存储到指定的数组中,存储的起始位置从数组的index=0开始。(默认空格为字符串分隔符)
    在这里插入图片描述

-d:指定读取行的结束符号。默认结束符号为回车。(若没有指定变量,通过$REPLY变量查看read读取的行)
在这里插入图片描述
在这里插入图片描述

-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车也会结束读取。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述(“\”加任意字符都算一个字符)
在这里插入图片描述

-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车也不结束。回车算一个字符
在这里插入图片描述(两次回车)
-p:给输入提示
在这里插入图片描述
-r:禁止反斜线的转义功能。这意味着""会变成文本的一部分。
在这里插入图片描述
在这里插入图片描述

-s:静默模式。输入的内容不会回显在屏幕上。
在这里插入图片描述
-t:给出超时时间,(限制输入时间)
在这里插入图片描述
-u:从给定文件描述符(fd=N)中读取数据。
fd (file descriptor,文件描述符)
eg:read -u3 i 的意思是从 3 号 fd 中读一行数据到 i 变量中

基础知识参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值