运维基础【(上部)】

一、运维概述

1、运维岗位的收入情况

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开

2、运维的职位定义

什么是运维?

在技术人员之间,一致对运维有一个开玩笑的认知:运维就是修电脑、装网线的、背锅的岗位。

其实不然,运维是一个非常广泛的定义,在不同的公司不同的阶段有着不同的职责与定位,如果以operation(运维英文)字面的含义去理解,认为就是敲几行操作命令的工作,那就错了。

对于初创公司,运维工程师的工作可能需要从申请域名开始,购买/租用服务器上架,调整网络设备的设置,部署操作系统和运行环境,部署代码,设计和部署监控,防止漏洞和攻击等等。(基础运维)

对于大型的公司,对于运维工作的要求越来越高,也催生了更细化的运维分工,从大的方向,可以分为网站运维、基础运维、系统运维、网络运维、数据库运维,IT运维、运维开发、大数据运维、云计算运维、运维安全、运维架构师、运维专家等方向。

3、运维的诞生

从最早的网管开始,九十年代初期,互联网欠发达的时候,还少有 “服务器” 的概念,电脑价格昂贵,大多数人并不具备在家上网的条件,网吧应运而生。

网吧的电脑、猫等设备需要进行日常维护,于是 “网管” 岗位应运而生,这就是早期运维的雏形。

4、90年代初网吧图

基础架构运维和业务系统运维分开 基础运维岗_网络_02

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_03

基础架构运维和业务系统运维分开 基础运维岗_linux_04

5、运维行业前景(了解)

  1. 从行业角度来看,随着中国互联网的高速发展、网站规模越来越大、架构越来越复杂,对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱。
  2. 从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人,越来越得到重视。
  3. 互运维是一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给运维工程师提供了一个很好的个人能力与技术的发展空间。
  4. 运维工作的相关经验将会变得非常重要,而且也将成为个人核心竞争力,优秀的运维工程师具备很好的各层面问题的解决能力及方案提供、全局思考的能力等。
  5. 由于运维岗位所接触的知识面非常广阔,**更容易培养或发挥个人某些方面的特长或爱好,**如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。
  6. 当前国内外对运维人才的需求非常迫切,运维工程师的薪资也水涨船高,与研发、测试等技术部门持平,甚至超出。

二、企业运作模式

1、四大部门

  • 四大部门: 研发、测试、运维、(系统管理)
  • 流程走向: 产品设计 —> 项目研发 —> 运维 —> 系统数据管理
职责描述:

研发部:根据项目需求设计项目(程序员/Java工程师/php 工程师/码农)

测试部:项目 bug 的测试(项目内测部门)

运维部: 负责项目的上线以及后期项目所在的服务器的维护

系统管理部: 在不同的公司架构中可能不一样,有的公司可能有这个部门,有的可能没有。

其工作职责主要是去使用这个项目。

铁三角:研发、测试、运维。

2、上线与生产

以某个 web站点(网站)为例

基础架构运维和业务系统运维分开 基础运维岗_运维_05

在项目的从无到有的过程中,可以将其分为两个阶段:研发阶段、生产阶段。

运维在其中承担了承上启下的作用,衔接了研发阶段与生产阶段,属于其中最重要的一环。

3、网站的概念

简单地说,网站是一种沟通工具,人们可以通过网站来发布自己想要公开的资讯,或者利用网站来提供相关的网络服务。人们可以通过网页浏览器来访问网站,获取自己需要的资讯或者享受网络服务。

扩展:了解网站的分类:
	根据网站所以编程语言分类:例如:asp网站、php网站、jsp网站、Asp.net网站等;
	根据网站的用途分类:例如门户网站(综合网站)、行业网站、娱乐网站等;
	根据网站的功能分类:例如单一网站(企业网站)、多功能网站(网络商城)等等。
	根据网站的持有者分类:例如个人网站、商业网站、政府网站,教育网站等。
	根据网站的商业目的分类:营利性网站(行业网站、论坛)、非营利性网站(企业网站、政府网站、教育网站)。
	根据网站的面向终端的分类:web网站(电脑端)和wap网站(手机端)

4、网站的运作模式

基础架构运维和业务系统运维分开 基础运维岗_服务器_06

5、重要概念

  • 域名:也就是在浏览器地址栏中输入的那一串字母和数字的组合,例如:www.baidu.com,这个就是域名,域名主要是方便用户记忆。
  • 服务器:就是给用户提供服务的机器(电脑)。服务器可以分为四大类:塔式服务器、几式服务器、刀片服务器、柜式服务器
  • IP地址:形式 IPv4、IPv6
  • 公网:www(万维网), 全世界都可以互相访问的网。
  • 局域网/内网/私网:在某个单元内部(家庭/教室/公司)能够进行互相访问的网络。

6、普通台式机能否充当服务器

问题:普通台式机/笔记本能否充当服务器来使用?

如果从提供服务角度来考虑的话,的确是可以充当服务器的,但是一般不会用普通电脑来充当服务器。原因如下:

  • 稳定性不如专门服务器。(开机时间长之后,服务器保证稳定运行不卡机)
  • 性能上不如专门服务器。(硬件)
  • 服务器的标准上不及专门的服务器统一。

7、企业真实服务器有哪些特点

  • 服务器的稳定的特性
  • 服务器的高性能特性
  • 服务器的标准化统一特性

8、服务器重要结构组成

家用电脑:cpu、主板、硬盘、内存、电源、显卡、显示器、声卡、键盘、鼠标

8.1、CPU
  • CPU发展史
8.2、内存

基础架构运维和业务系统运维分开 基础运维岗_服务器_07

8.3、风扇

基础架构运维和业务系统运维分开 基础运维岗_网络_08

8.4、电源

基础架构运维和业务系统运维分开 基础运维岗_运维_09

机柜式服务器、塔式服务器

基础架构运维和业务系统运维分开 基础运维岗_服务器_10

刀片式服务器、几式服务器

8.5 硬盘

基础架构运维和业务系统运维分开 基础运维岗_运维_11

8.6 主板

基础架构运维和业务系统运维分开 基础运维岗_linux_12

IBM X3650服务器内部结构拆解一_服务器评测与技术-中关村在线 (zol.com.cn)

三、操作系统相关

1、计算机发展史

第一台计算机是1946年2月14日诞生日,第一台名称 ENIAC。体积一间屋子的大小,重量高达 28t。

第一代:1946 - 1958 12年 (电子管)

第二代:1958 - 196 6年 (晶体管)

第三代:1964 - 1970 6年 (集成电路)

第四代:1970 - 至今 (大规模集成电路) 集成电路 plus

2、计算机的组成

CPU、内存、硬盘、显示器、显卡、主板、电源、声卡、鼠标、键盘

3、计算机资源

计算机资源分为2部分:硬件资源、软件资源

硬件: 看得见摸得着的设备

软件: 一般由研发工程师开发的一些程序,一般会称之为应用软件。

  • 问题:为什么在键盘上敲按键会在屏幕上显示呢? 硬件(键盘)——> 驱动(键盘驱动程序)——> 操作系统 (软件)——> 显卡驱动 ——> 显示器(硬件)操作系统(OS,operation system)属于特殊的软件。其他的一些应用软件都必须安装在操作系统中。

4、操作系统

目前市面上最常见的操作系统:

Windows 系统:由微软公司开发的一款闭源操作系统(用户操作系统,服务器操作系统),从最早的 DOS版本到后期,win 95,win 97,win 98, win 2000,win 2003(服务器操作系统) ,win XP,win vista,win 7,win server 2008(服务器操作系统),win 8,win server 2012(服务器操作系统),win 10,win server 2016(服务器操作系统),win 11。

Mac 系统:由苹果公司开发的一款闭源 操作系统。是借鉴 openBSD 操作系统开发出的操作系统。

Linux 操作系统:一款目前市面上占有率最多的服务器操作系统。其是一款开源 操作系统。

Linux 有很多分支,常见的分支有:乌班图(Ubuntu)、CentOS、RedHat、SUSE、Debian等等。但是**Linux目前在世界上最大的分支是安卓**(谷歌研发的Linux分支)。Root Administrator

开源:开放源代码,开源不意味着免费(可能会服务收费)。RedHat 红帽认证 100000刀

闭源:不开放源代码,其他人是看不到源代码的,有部分闭源软件是收费的,如 Windows的系统、office。

https://www.v2ex.com

5、为什么需要使用 Linux操作系统

  1. 性能问题:Windows 服务器操作系统不如Linux高;
  2. 稳定性问题:
  • 底层架构:Linux 更加稳定,其开机时间可以达到好几年不关机;
  • 开源:因为开源,人人都可以看到源代码,就可以为其提供自己的补丁,补丁可以提高 稳定性和安全性;
  1. 安全性问题:
  • Linux 操作系统:相对于Windows 操作系统更加安全;
  • PE 工具 大白菜、老毛桃(windows 操作系统)
  1. 远程管理方面:QQ 远程协助(mstsc)
  • Windows 不及 Linux 操作高效。
  1. 服务器价格昂贵的,需要对资源进行充分利用,充分把计算机资源用到项目上(访问并发、性能),而不是把资源浪费在图形化界面或者方便程度上。

Linux 发展史与安装

一、Linux 发展史

1、Linux 前身 - Unix

1968 年 Multics 项目

MIT、Bell 实验室、美国通用电气有限公司 走到了一起,致力于开发 Multics 项目。到后期由于开发进度不是很好。MIT 和 Bell 实验室相继离开这个项目的开发,最终导致项目搁浅。

1970 年(Unix 元年,时间戳) Unix诞生

当时在开发 Multics 项目的时候,实验室中有一个开发成员开发了一款游戏(travel space:遨游太空),因为这两个实验室相继离开项目开发,导致这名开发人员没法玩游戏,后来他提议组织人员重新在 Multics 项目之上重新的开发,也就出现了 1970年的 Unix。当时 Unix 操作系统是使用的==汇编语言(机器语言)==开发的。时间戳

1973年 用C语言重写 Linux

因为汇编语言有一个最大的局限性:对于计算机硬件过于依赖。导致移植性不好,所以后期在1973年使用了 C语言对其进行重新开发。

1975年 Bell 实验室允许大学使用 Unix

1975年,Bell 实验室允许大学使用 Unix 操作系统用于教学作用,而不允许用于商业用途。

2、Linux 诞生

基础架构运维和业务系统运维分开 基础运维岗_服务器_13

上述所提及的版本号并不是分支版本,而是指 Linux 的内核版本。

3、开源文化

Linux 是开源的操作系统。所谓开源就是开发源代码。

人物 Stallman 斯特曼,开源文化的倡导人。

1983年 GNU 计划

1985年 FSF 基金会

1990年 Emacs、GCC(C语言的编译器)、程序库

1991年 Stallman 去找 linus,商谈让 Linux 加入其开源计划(GNU计划)

1992年 GNU/Linux

4、Linux 系统特点

开放性(开源)、多用户、多任务、良好的用户界面、优异的性能与稳定性

多用户多任务:

单用户:一个用户,在登陆计算机(操作系统),只能允许 同时 登录一个用户;

单任务:一个任务,允许用户 同时 进行的操作任务数量;

多用户:多个用户,在登录计算机(操作系统),允许 同时 登录多个用户进行操作;

多任务:多个任务,允许用户 同时 进行多个操作任务;

Windows 属于:单用户、多任务。

Linux 属于:多用户、多任务。

pearOS、

5、Linux 分支

分支:Linux 分支有很多,现在比较有名的 Ubuntu、debian、centos、redhat、suse 等等。

二、Linux 系统的安装

1、安装方式

目前安装操作系统方式有2种:真机安装、虚拟机安装。

真机安装:使用真实的电脑进行安装,像安装Windows 操作系统一样,真机安装的结果就是替换掉当前的 Windows 操作系统;

虚拟机安装:通过一些特定的手段,来进行模拟安装,并不会影响当前计算机的真实操作系统。

如果是学习或者测试使用,强烈建议使用虚拟机安装方式。

2、虚拟机软件

什么是虚拟机?

虚拟机目前有2个比较有名的产品:VMware 出品的 VMware workstation、Oracle 出品的 virtual Box。

3、虚拟机的安装

3.1、VMware Workstation 的安装
3.2、Virtual Box 的安装

4、Linux 版本的选择

版本选择:CentOS 6.5【镜像一般都是 xxx.iso文件】

问题:为什么不选择最新版的 7.x版本?
	6.x 目前依然是主流
	6.x 的各种系统操作模式是基础
	7.x 实际上也支持大多数6.x的操作形式

官网:https://www.centos.org/

5、新建虚拟机

5.1 使用 VMware Workstation
5.2 使用 Virtual Box(了解)

6、Linux 操作系统安装

6.1 使用 VMware Workstation进行安装
6.2 使用 Virtual Box 安装 Linux(了解)

7、终端

可以通过命令行方式进行关机。命令的输入需要在 终端 中进行输入。

所谓终端,其实类似于 Windows 下 cmd 命令行模式。在终端中可以输入需要执行的一些指令,同样可以通过终端进行关机(注意:以后在工作中很少会去使用关机命令,会使用重启比较多)。

终端的形式:

基础架构运维和业务系统运维分开 基础运维岗_运维_14

终端组成部分:

基础架构运维和业务系统运维分开 基础运维岗_网络_15

如何使用终端命令进行关机?

在Linux 中关机命令,有以下几个:shutdown(正常关机)、halt(关闭内存)、init 0

shutdown -h now

8、使用 VMware 备份操作系统

在 vm 中备份的方式有 2 种:快照、克隆。

快照:又称还原点,就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复。【侧重在于短期备份,需要频繁备份的时候可以使用快照,做快照的时候虚拟的操作系统一般处于开启状态】

  1. 在菜单 ”虚拟机“ - ”快照“ - ”拍摄快照“

输入相关信息,点击拍摄快照

克隆:就是复制的意思。【侧重长期备份,做克隆的时候是必须得关闭】

三、Linux 系统的文件

1、文件与文件夹(目录)

什么是文件?

一般都是一个独立的东西,可以通过一些特定的工具进行打开,并且其中不能在包含除了文件以外的东西。

什么是文件夹?

可以在其中包含其他文件的东西。

为什么先讲文件?

  1. 日常运维工作中,有近一半以上的工作内容 精力 其实都是对文件的操作
  2. Linux 本身也是一个基于文件形式表示的操作系统Linux 一切皆文件
  1. 在 Windows 是文件的,在Linux 下同样也是文件;
  2. 在 Windows 不是文件的,在 Linux 下也是以文件的形式存储的;

日常学习中和日常工作中,对于文件的操作的都有哪些种类?

创建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件、恢复文件。

2、Linux 系统的文件目录结构

目录结构:

  • Bin:全称 binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的
  • Dev :该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似 Windows 下的分配盘符)。
  • Etc: 该目录主要存储一些配置文件。
  • Home:表示 ”家“,表示除了 root 用户以外其他用户的家目录,类似于 Windows 下的 User/用户目录。
  • Proc: process,表示进程,该目录中存储的是 Linux 运行时候的进程。
  • Root: 该目录是 root 用户自己的家目录。
  • Sbin: 全称 super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有 super 权限的用户才能执行。
  • Tmp: 表示 ”临时“ 的,当系统运行时候产生的临时文件会在这个目录存着。
  • Usr: 存放的是用户自己安装的软件。类似于 windows 下的 program files。
  • Var:存放的程序/系统的日志文件的目录。
  • Mnt: 当外接设备需要挂载的时候,就需要挂载到 mnt 目录下。

Linux 的基本指令

一、指令与选项

什么是 Linux 的指令?

指在 Linux 终端(命令行)中输入的内容就称之为指令。


一个完整的指令的标准格式:Linux 通用的格式

#指令主体 [选项] [操作对象]

一个指令可以包含多个选项

操作对象也可以是多个

二、基础指令

1、ls 指令

含义:ls(list)

  • 用法1:#ls
  • 含义:列出当前工作目录下的所有文件/文件夹的名称
  • 用法2:#ls 路径
  • 含义:列出指定路径下的所有文件/文件夹的名称
关于路径(重要):
路径可以分为两种:相对路径、绝对路径
相对路径:相对首先得有一个参照物(一般就是当前的工作路径);
	相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录】、“../”【上一级目录下】。
绝对路径:绝对路径不需要参照物,直接从根 “/”开始寻找对于路径;
  • 用法3:#ls [选项] [路径]
  • 含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
  • 常见的语法: #ls -l 路径 #ls -la 路径
  • 选项解释:-l:表示list,表示以详细列表的形式进行展示-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)

上述列表中的第一列字符表示文档的类型,其中 “-” 表示改行对应的文档类型为文件,“d” 表示文档类型为文件夹。

基础架构运维和业务系统运维分开 基础运维岗_网络_16

在 Linux 中隐藏文档一般都是以 “.” 开头。

  • 用法4:#ls -lh 路径
  • 含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以 可读性较高的形式显示。

2、pwd 指令

  • 用法:#pwd (print working directory:打印当前工作目录)

3、cd 命令

  • 命令:#cd(change directory:改变目录)
  • 作用:用于切换当前的工作目录的
  • 语法:#cd 路径
补充:
在 Linux 中有一个特殊的符号 “~”,表示当前用户的家目录。
切换的方式:#cd ~

4、mkdir 指令

  • 指令: mkdir(make directory,创建目录)
  • 语法:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】

注意: ls 列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限。

  • 语法2:#mkdir -p 路径
  • 含义:当一次性创建多层不存在的目录的时候,添加 -p参数,否则会报错
  • 语法3:#mkdir 路径1 路径2 路径3 …【表示一次性创建多个目录】

5、touch 指令

  • 指令:touch
  • 作用:创建文件
  • 语法:#touch 文件路径【路径可以是直接的文件名也可以是路径】

6、cp 指令

  • 指令:cp (copy,复制)
  • 作用:复制文件/文件夹到指定的位置
  • 语法:#cp 被复制的文档路径 文档被复制到的路径

注意:Linux 在复制过程之中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。

注意:当使用cp命令进行文件夹复制操作的时候需要添加选项 “-r”【-r 表示递归复制】 ,否则目录将被忽略。

7、mv 指令

  • 指令: mv(move,移动,剪切)
  • 作用:移动文档到新的位置
  • 语法:#mv 需要移动的文档路径 需要保存的位置路径
补充:在 Linux 中重命名的命令也是 mv,语法和移动语法一样。

8、rm 命令

  • 指令: rm(remove,移除、删除)
  • 作用:移除/删除一个文档
  • 语法:#rm 选项 需要移除的文档路径
  • 选项: -f: force,强制删除,不提示是否删除 -r: 表示递归
删除一个文件

基础架构运维和业务系统运维分开 基础运维岗_服务器_17

在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入 ”y/yes“,否则输入 ”n/no“按下回车。

注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项 ”-f“,表示 force(强制)。

删除一个文件夹

基础架构运维和业务系统运维分开 基础运维岗_网络_18

注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除访问,所以移除目录的时候一般需要使用 -rf 选项。

删除多个文档

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_19

要删除一个目录下有公共特性的文档,例如都以 Linux 开头

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_20

其中 称之为通配符,意思是表示任意的字符,Linux,表示只要以文件以 Linux 开头,后续字符则不管**。

9、vim 命令

  • 指令: vim(vim是一款文本编辑器)
  • 语法:#vim 文件的路径
  • 作用:打开一个文件(可以不存在,也可以存在)
使用 vim 来打开文件

退出打开的文件,在没有按下其他命令的时候,按下 shift+英文冒号,输入 q,按下回车即可。

10、输出重定向

一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中,进行后续的分析/统计,则这时候需要使用到的 输出重定向技术。

“>”:覆盖输出,会覆盖掉原先的文件内容

“>>”:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

  • 语法:#正常执行的指令 >/>> 文件的路径

注意:文件可以不存在,不存在则新建

使用覆盖重定向,保存 ls -la 的执行结果,保存到当前目录下的 ls.txt

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_21

使用追加重定向,保存 ls -la 的执行结果到 ls.txt 中

基础架构运维和业务系统运维分开 基础运维岗_服务器_22

11、cat 指令

  • 作用1:cat 有 直接 打开一个文件的功能。
  • 语法1:#cat 文件的路径
  • 作用2:cat 还可以对文件进行 合并
  • 语法2:#cat 待合并的文件路径1 待合并的文件路径2 … 文件路径 n > 合并之后的文件路径
  • 合并 3 个文件,并存到一个文件中【配合输出重定向使用】

基础架构运维和业务系统运维分开 基础运维岗_网络_23

三、进阶指令(重点)

1、df 指令

  • 作用:查看磁盘空间
  • 语法:#df -h -h 表示以可读性较高的形式展示大小

基础架构运维和业务系统运维分开 基础运维岗_网络_24

2、free 指令

  • 作用:查看内存使用情况
  • 语法:#free -m -m 表示以 mb 为单位查看

基础架构运维和业务系统运维分开 基础运维岗_运维_25

剩余的真实可以用的内存为 1665mb

Swap: 用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存。

3、head 指令

  • 作用:查看一个文件的前 n 行,如果不指定 n,则默认显示前 10 行。
  • 语法:#head -n 文件路径 【n 表示数字】

基础架构运维和业务系统运维分开 基础运维岗_网络_26

4、tail 指令

  • 作用1:查看一个文件的末 n 行,如果 n 不指定默认显示后 10 行
  • 语法:#tail -n 文件的路径 n 同样表示数字

基础架构运维和业务系统运维分开 基础运维岗_网络_27

  • 作用2:可以通过 tail 指令来查看一个文件的动态变化
  • 语法:#tail -f[F] 文件路径

该命令一般用于查看系统的日志比较多。

5、less 指令

  • 作用:查看文件,以较少的内存进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
  • 语法:#less 需要查看的文件路径

6、wc 指令

  • 作用:统计文件信息 (包括行数、单词数、字节数)
  • 语法:#wc -lwc 需要统计的文件路径 -l: 表示 lines,行数 -w: 表示 words,单词数 -c: 表示 bytes,字节数

7、date 指令(重点)

  • 作用:表示操作时间日期 (读取、设置),shell指令
  • 语法1:#date 输出的形式:2018 年 3 月 24 日 星期六 15:54:28
  • 语法2:#date +%F(等价于#date “%Y-%m-%d”) 输出形式:2018-03-24
  • 语法3:#date “+%F %T” 引号表示让 “年月日与时分秒” 成为一个不可分割的整体 等价操作 #date “+%Y-%m-%d %H:%M:%S” 输出形式:2018-03-24 16:01:00
  • 语法4:获取之前或者之后的某个时间(备份)
  • #date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
  • 符号的可选值:+(之后)或者 -(之前)
  • 单位的可选值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%d:表示日期(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
%S:表示秒数(带前导0)

8、cal 指令

  • 作用:用来操作日历的
  • 语法1:#cal 等价于 #cal -1 直接输出当前月份的日历
  • 语法2:#cal -3 表示输出上一个月 + 本月 + 下个月的日历
  • 语法3:#cal -y 年份 表示输出某一个年份的日历

9、clear/ctrl + L 指令

  • 作用:清除终端中已经存在的命令和结果(信息)。
  • 语法:clear 或者快捷键:ctrl + L

需要注意的是,该命令并不是真的清除了之前的信息,而是把之前信息的隐藏到了最上面,通过滚动条继续查看以前的信息。

10、管道(重要)

  • 管道符:|
  • 作用:管道一般可以用于 “过滤”,“特殊”,“扩展处理”。
  • 语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用 主要是辅助作用。
  • 过滤案例(100%使用):需要通过管道查询出根目录下包含 “y” 字母的文档名称
#ls /|grep y

针对上面这个命令说明:
	1、以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;
	2、grep 指令:主要用于过滤
  • #ps -ef | grep httpd
  • 特殊用法案例:通过管道的操作方法来实现 less 的等价效果(了解)
  • #cat 路径 | less

四、高级指令(重点)

1、hostname 指令

  • 作用:操作服务器的 主机名(读取、设置)
  • 语法1:#hostname 含义:表示输出完整的主机名
  • 语法2:#hostname -f 含义 :表示输出当前主机名中的 FQDN(全限定 域名)

基础架构运维和业务系统运维分开 基础运维岗_linux_28

2、id 指令

  • 作用:查看一个用户的一些基本信息 (包含用户 id,用户组 id,附加组 id…),该指令如果不指定用户则默认当前用户。
  • 语法1:#id 默认显示当前执行该命令的用户的基本信息
  • 语法2:#id 用户名 显示指定用户的基本信息

基础架构运维和业务系统运维分开 基础运维岗_服务器_29

验证上述信息是否正确?
  • 验证用户信息:通过文件 /etc/passwd
  • 验证用户组信息:通过文件 /etc/group

基础架构运维和业务系统运维分开 基础运维岗_运维_30

3、whoami 指令

  • 作用:“我是谁?” 显示当前登录的用户名,一般用于 shell 脚本,用于获取当前操作的用户名方便记录日志。
  • 语法:#whoami

4、ps -ef 指令(重点)

  • 指令:ps
  • 作用:主要是查看服务器的进程信息
选项含义:

-e: 等价于 “-A”,表示列出全部的进程

-f: 显示全部的列(显示全字段)

执行结果:

基础架构运维和业务系统运维分开 基础运维岗_linux_31

列的含义:
  • UID: 该进程执行的用户 id;
  • PID: 进程 id;
  • PPID: 该进程的父级进程 id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程;
  • C: CPU的占用率,其形式是百分数;
  • STIME: 进行的启动时间;
  • TTY: 终端设备,发起该进程的设备识别符号,如果显示 “ ?”则表示该进程并不是由终端设备发起;
  • TIME: 进程的执行时间;
  • CMD: 该进程的名称或者对应的路径;
案例:(100%使用的命令)在 ps 的结果中过滤出想要查看的进程状态
  • #ps -ef | grep [进程名称]

5、top 指令

  • 作用:查看服务器的进程占的资源
  • 语法:
  • 进入命令:#top (动态显示)
  • 退出命令:按下 q 键
输出结果:

基础架构运维和业务系统运维分开 基础运维岗_服务器_32

表头含义:
PID:进程id;
USER:该进程对应的用户;
PR:优先级;
NI::用户进程空间内改变过优先级的进程占用CPU百分比;
VIRT:虚拟内存;
RES:常驻内存;
SHR:共享内存
	计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
*S:表示进程的状态(sleeping,其中 S 表示睡眠,R 表示运行);
*%CPU:表示 CPU 的占用百分比;
*%MEM:表示内存的占用百分比;
TIME+:执行的时间;
*COMMAND:进程的名称或者路径;

基础架构运维和业务系统运维分开 基础运维岗_linux_33

在运行 top 的时候,可以按下方便的快捷键
  • M: 表示将结果按照内存(MEM)从高到底进行降序排列;
  • P: 表示将结果按照 CPU 使用率从高到低进行降序排列;
  • 1: 当服务器拥有多个 cpu 的时候可以使用 “1” 快捷键来切换是否展示显示各个 cpu 的详细信息。

6、du -sh 指令

  • 作用:查看目录的真实大小
  • 语法:#du -sh 目录路径
  • 选项含义:
  • -s: summarles,只显示汇总的大小
  • -h: 表示以高可读性的形式进行显示
案例:统计 “/root/yunweiheiniux” 目录的实际大小

基础架构运维和业务系统运维分开 基础运维岗_网络_34

案例:统计 “/etc” 目录实际大小

基础架构运维和业务系统运维分开 基础运维岗_网络_35

7、find 指令

  • 作用:用于查找文件 (其参数有 55个之多)
  • 语法:#find 路径范围 选项 选项的值
选项:
  • -name: 按照文档名称进行搜索(支持模糊搜索)
  • -type: 按照文档的类型进行搜索
  • 文档类型:“-” 表示文件(在使用find 的时候需要用 f 来替换),“d” 表示文件夹
案例:使用 find 来搜索 httpd.conf
  • #find / -name httpd.conf

基础架构运维和业务系统运维分开 基础运维岗_运维_36

案例:搜索 etc 目录下所有的 conf 后缀文件
  • #find / etc -name .conf

基础架构运维和业务系统运维分开 基础运维岗_linux_37

案例:使用 find 来搜索 /etc 目录下所有的文件
  • #find /etc/same.d/ -type f

基础架构运维和业务系统运维分开 基础运维岗_linux_38

案例:使用 find 来搜索 /etc/目录下所有的文件夹
  • #find /etc -type d

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_39

8、service 指令(重点)

  • 作用:用于控制一些软件的服务启动/停止/重启
  • 语法:#service 服务名 start/stop/restart
例如:需要启动本机安装的 Apache(网络服务器软件),其服务名 httpd
  • #service httpd start

基础架构运维和业务系统运维分开 基础运维岗_运维_40

通过 ps 命令来检查 httpd 服务是否启动:

基础架构运维和业务系统运维分开 基础运维岗_linux_41

9、kill 指令(重点)

  • 作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
  • 语法:#kill 进程 PID (语法需要配合 ps 一起使用)
案例:需要 kill 掉 Apache 的进程

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_42

与 kill 命令作用相似但是比 kill 更加好用的杀死进程的命令:killall
  • 语法:#killall 进程名称

10、ifconfig 指令(重点)

  • 作用:用于操作网卡相关的指令
  • 简单语法:#ifconfig (获取网卡信息)

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_43

  • Eth0 表示 Linux 中的一个网卡,eth0 是其名称。Lo(loop,本地回还网卡,其 ip 地址一般都是 127.0.0.0)也是一个网卡的名称。

基础架构运维和业务系统运维分开 基础运维岗_运维_44

注意:inet addr 就是网卡的 ip 地址

11、reboot 指令

  • 作用:重新启动计算机
  • 语法1:#reboot 重启
  • 语法2:#reboot -w 模拟重启,但是不重启 (只写关机与开机的日志信息)

12、shutdown 指令

  • 作用: 关机 (慎用)
  • 语法1:#shutdown -h now “关机提示” 或者 #shutdown -h 15:25 “关机提示”
案例:设置Linux 系统关机时间在 12:00

基础架构运维和业务系统运维分开 基础运维岗_运维_45

如果想要取消关机计划的话,则可以按照以下方式去尝试:
  1. 针对于 centos7.x 之前的版本:ctrl+c
  2. 针对于 centos7.x (包含)之后的版本:#shutdown -c
除了 shutdown 关机以外,还有以下几个关机命令:
#init 0
#halt
#poweroff

13、uptime 指令

  • 作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间)
  • 语法:#uptime

基础架构运维和业务系统运维分开 基础运维岗_网络_46

14、uname 指令

  • 作用:获取计算机操作系统相关信息
  • 语法1:#uname 获取操作系统的类型
  • 语法2:#uname -a all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_47

15、netstat -tnlp 指令

  • 作用:查看网络连接状态
  • 语法:#netstat -tnlp

基础架构运维和业务系统运维分开 基础运维岗_服务器_48

选项说明
  • -t: 表示只列出 tcp 协议的连接;
  • -n: 表示将地址从字母组合转化成 ip地址,将协议转化成端口号来显示;
  • -l: 表示过滤出 “state(状态)” 列中其值为 LISTEN(监听)的连接;
  • -p: 表示显示发起连接的进程 pid 和进程名称;

16、man 指令

  • 作用:manual,手册 (包含了 Linux 中全部命令手册,英文)
  • 语法:#man 命令 (退出按下 q 键)
案例:通过 man 命令查询 cp 指令的用法
  • #man cp

五、练习题

  1. 如何通过命令行重启 Linux 操作系统?
  • #reboot
  1. 如何在命令行中快速删除光标前/后的内容?
  • 前:ctrl + u
  • 后:ctrl + k
  1. 如何删除 /tmp 下所有 A 开头的文件?
  • #rm -f /tmp/A
  1. 系统重要文件需要备份,如何把 /etc/passwd 备份到 /tmp 目录下?
  • #cp /etc/passwd /tmp/
  1. 如何查看系统最后创建的 3 个用户?
  • #tail -3 /etc/passwd
  1. 什么命令可以统计当前系统中一个有多少账户?
  • #wc -l /etc/passwd #cat /etc/passwd | wc -l
  1. 如何创建 /tmp/test.conf 文件?
  • #touch /tmp/test.conf
  1. 如何通过 vim 编辑打开 /tmp/test.conf ?
  • vim /tmp/test.conf
  1. 如何查看 /etc/passwd 的头 3 行和尾 3 行?
  • #head -3 /etc/passwd
  • #tail -3 /etc/passwd
  1. 如何一次性创建目录 /text/1/2/3/4 ?
  • #mkdir -p /text/1/2/3/4
  1. 如何最快的返回到当前账户的家目录?
  • #cd ~ #cd
  1. 如何查看 /etc 所占的磁盘空间 ?
  • #du -sh /etc
  1. 如何删除 /tmp 下所有的文件 ?
  • #rm -rf /tmp/*
  1. 尝试启动 Apache 的服务,并且检查是否启动成功。
  • service httpd start
  • ps -ef | grep httpd
  1. 使用已学命令杀死 Apache 的进程。
  • #killall httpd

编辑器之神 —— vim 编辑器

一、vi 介绍

Vi 编辑器是所有 Unix 及 Linux 系统下的标准的编辑器,类似于 windows 系统下的 notepad(记事本)编辑器,由于在 Unix 及 Linux 系统的任何版本,Vi 编辑器是完全相同的,因此可以在其他任何介绍 vi 的地方都能进一步了解它,Vi 也是 Linux 中最基本的文本编辑器,学会它后,我们将在 Linux 的世界里畅行无阻,尤其是在终端中。

关于 vim:

vi 和 vim 都是 Linux 中的编辑器,不同的是,vim 比较高级,可以视为 vi 的升级版本。vi 使用于文本编辑,但是 vim 更适用于 coding。

Vim 点是光标的移动,模式切换,删除,查找替换,复制,粘贴,撤销命令的使用。

二、vim 三种模式(重点)

Vim 中存在三种模式(大众的认知):命令模式、编辑模式(输入模式)、末行模式(尾行模式)。

  • 命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作 (删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
  • 编辑模式:在该模式下可以对文件的内容进行编辑;
  • 末行模式:可以在末行输入命令来对文件进行操作 (搜索、替换、保存、退出、撤销、高亮等等);

Vim 的打开文件的方式(4种,要求掌握的就前三种):

  • #vim 文件路径 作用:打开指定的文件
  • #vim +数字 文件路径 作用:打开指定的文件,并且将光标移动到指定行
  • #vim +/关键词 文件路径 作用:打开指定的文件,并且高亮显示关键词
  • #vim 文件路径 1 文件路径 2 文件路径 3 作用:同时打开多个文件

重点:先复制出一个 /etc/passwd 文件,复制当前家目录下(千万不要在 etc 下直接修改!!!)

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_49

后续的一切 vim 命令都是基于 /root/passwd 文件进行操作。

退出方式:输入:q 按下回车即可。

基础架构运维和业务系统运维分开 基础运维岗_运维_50

三、命令模式

注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)

1、光标移动

光标移动到行首
  • 按键:shift + 6 或 ^ (T 字母上的 6,不要按小键盘的 6)
光标移动到行尾
  • 按键:shift + 4 或 $(R 字母的左上角的 4,不是小键盘的 4)
光标移动到首行
  • 按键:gg
光标移动到末行
  • 按键:G
翻屏
  • 向上翻屏:按键:ctrl + b / PgUp
  • 向下翻屏:按键:ctrl + f / PgDn

2、复制操作

复制光标所在行
  • 按键:yy
  • 粘贴:在想要粘贴的地方按下 p 键
以光标所在行为准(包含当前行),向下复制指定的行数
  • 按键:数字 + yy
可视化的复制
  • 按键:ctrl + v,然后按下 ↑↓←→ 方向键来选中需要复制的区块,按下 yy 键进行复制,最后按下 p 键粘贴

3、剪切/删除

剪切/删除光标所在行
  • 按键:dd (删除之后下一行上移)

注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
  • 按键:数字 dd (删除之后下一行上移)
剪切/删除光标所在的当前行,但是删除之后下一行不上移
  • 按键:D (删除之后当前行会变成空白行)

4、撤销/恢复

  • 撤销:输入 :u(不属于命令模式) 或者 u(undo)
  • 恢复:ctrl + r 恢复(取消)之前的撤销操作

5、扩展1:光标的快速移动

快速将光标移动到指定的行
  • 按键:数字 G
以当前光标为准向上/上下移动 n 行
  • 按键:数字 ↑,数字 ↓
以当前光标为准向左/向右移动 n 字符
  • 按键:数字 ←,数字 →
末行模式下的快速移动方式:移动到指定的行
  • 按键:输入英文 “:”,其后输入行数数字,按下回车

四、模式间的切换

基础架构运维和业务系统运维分开 基础运维岗_服务器_51

五、末行模式

  • 进入方式:由命令模式进入,按下 “:” 或者 ”/(表示查找)“即可进入
退出方式:
  • 按下 Esc
  • 连按 2 次 Esc 键
  • 删除末行全部输入字符
1、保存操作(write)
  • 输入:”:w“ 保存文件
  • 输入:”:w 路径“ 另存为
2、退出(quit)
  • 输入:”:q“ 退出文件
3、保存并退出
  • 输入:”:wq“ 保存并且退出
4、强制(!)
  • 输入:”:q!“ 表示强制退出,刚才做的修改操作不做保存
5、调用外部命令(了解)
  • 输入:”:! 外部命令“
6、搜索/查找
  • 输入:“/关键词”
例如:我想在 passwd 文件中搜索 “sbin” 关键词

基础架构运维和业务系统运维分开 基础运维岗_网络_52

在搜索结果中切换上/下一个结果:N/n (next)

如果需要取消高亮,则需要输入:“:nohl”【no highlight】

7、替换
  • :s string replace
  • 😒/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
  • 😒/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
  • :%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
  • :%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
  • % 表示整个文件
  • g 表示全局(global)
8、显示行号
  • 输入:“:set nu” [number]
  • 如果想取消显示,则输入:“:set nonu”
9、扩展2:使用 vim 同时打开多个文件,在末行模式下进行切换文件
  • 查看当前已经打开的文件名称:“:files”
在%a的位置有 2 种显示可能
	%a:a=active,表示当前正在打开的文件;
	#:表示上一个打开的文件

切换文件的方式:

  • 1、如果需要指定切换文件的名称,则可以输入:“:open group”
  • 2、可以通过其他命令来切换上一个文件/下一个文件
  • 输入:“:bn” 切换到下一个文件(back next)
  • 输入:“:bp” 切换到下一个文件(back prev)

六、编辑模式

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_53

重点看前 2 个进入方式:i、a。

退出方式:按下 Esc 键

七、使用功能

1、代码着色

基础架构运维和业务系统运维分开 基础运维岗_linux_54

案例:首先创建简单的 c 语言程序

基础架构运维和业务系统运维分开 基础运维岗_基础架构运维和业务系统运维分开_55

如何控制着色显示与否?

显示:“:syntax on” syntax:语法

关闭显示:“:syntax off”

2、vim 中计算器的使用

当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim 自身集成了一个简易的计算器。

  1. 进入编辑模式
  2. 按下按键 “ctrl + R”,然后输入 “=”,此时光标会变到最后一行
  3. 输入需要计算的内容,按下回车

八、扩展(3)

1、vim 的配置(重点)

  • Vim 是一款编辑器,编辑器也是有配置文件的。
Vim 配置有三种情况:
  • 在文件打开的时候在末行模式下输入的配置(临时的)
  • 个人配置文件(~/.vimrc)
  • 全局配置文件(vim 自带,/etc/vimrc)
  • 1、新建好个人配置文件之后进入编辑
  • 2、在配置文件中进行配置
  • 比如显示行号:set nu
  • 配置好之后 vim 打开文件就会永远显示行号
  • 问题:如果某个配置项,在个人配置文件与全局配置文件产生冲突的时候应该以谁为准?
  • 测试步骤:在两个配置文件中针对同一个配置项设置不同的值
  1. 先在全局的配置中设置不显示行号,在个人的配置文件中设置显示行号,观察结果 最后显示行号:说明以个人为准
  2. 先在全局中配置显示行号,在个人中设置不显示行号,观察结果 最后的显示是不显示行号,说明以个人为准

结论:如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。

2、异常退出

什么是异常退出:在编辑文件之后并没有正常的去 wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为 异常退出;

基础架构运维和业务系统运维分开 基础运维岗_运维_56

解决办法:将转换文件 (在编程过程中产生的临时文件) 删除掉即可。

3、别名机制

  • 作用:相当于创建一些属于自己的自定义命令
  • 例如:在 windows 下有 cls 命令,在 Linux 下可能因为没有这个命令而不习惯清屏。现在可以通过别名机制来解决这个问题,可以自己创造出 cls 命令。
  • 别名机制依靠一个别名映射文件:~/.bashrc#vim ~/.bashrc

注意:如果想新创造的命令生效,必须要重新登录当前用户。

4、退出方式

  • 回顾: 之前 vim 中退出编辑的文件可以使用 “:q” 或者 “:wq”。
  • 除了上面的这个语法之外,vim 还支持另外一个保存退出方法 “:x”。
说明:
  1. “:x” 在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
  2. 如果文件没有被修改,但是使用 wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用 x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。

因此建议以后使用 “:x” 来进行对文件的保存退出。

但是:不要使用 X,不要使用 X,不要使用 X。