运维基础【(上部)】
因为笔记所记内容太多,所以我分成了上下两部分来分享给大家查看学习!同时我会持续更新博客发布更加优质的文章,希望大家多多支持与关注!感谢!
一、运维概述
1、运维岗位的收入情况
%202、运维的职位定义
%20- %20
什么是运维?
%20%20在技术人员之间,一致对运维有一个开玩笑的认知:运维就是修电脑、装网线的、背锅的岗位。
%20%20其实不然,运维是一个非常广泛的定义,在不同的公司不同的阶段有着不同的职责与定位,如果以operation(运维英文)字面的含义去理解,认为就是敲几行操作命令的工作,那就错了。
%20%20对于初创公司,运维工程师的工作可能需要从申请域名开始,购买/租用服务器上架,调整网络设备的设置,部署操作系统和运行环境,部署代码,设计和部署监控,防止漏洞和攻击等等。(基础运维)
%20%20对于大型的公司,对于运维工作的要求越来越高,也催生了更细化的运维分工,从大的方向,可以分为网站运维、基础运维、系统运维、网络运维、数据库运维,IT运维、运维开发、大数据运维、云计算运维、运维安全、运维架构师、运维专家等方向。
%20
3、运维的诞生
%20%20从最早的网管开始,九十年代初期,互联网欠发达的时候,还少有%20“服务器”%20的概念,电脑价格昂贵,大多数人并不具备在家上网的条件,网吧应运而生。
%20%20网吧的电脑、猫等设备需要进行日常维护,于是%20“网管”%20岗位应运而生,这就是早期运维的雏形。
%204、90年代初网吧图
%20%20%20%205、运维行业前景(了解)
%20- 从行业角度来看,随着中国互联网的高速发展、网站规模越来越大、架构越来越复杂,对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱。
- 从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人,越来越得到重视。
- 互运维是一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给运维工程师提供了一个很好的个人能力与技术的发展空间。
- 运维工作的相关经验将会变得非常重要,而且也将成为个人核心竞争力,优秀的运维工程师具备很好的各层面问题的解决能力及方案提供、全局思考的能力等。
- 由于运维岗位所接触的知识面非常广阔,**更容易培养或发挥个人某些方面的特长或爱好,**如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。
- 当前国内外对运维人才的需求非常迫切,运维工程师的薪资也水涨船高,与研发、测试等技术部门持平,甚至超出。
二、企业运作模式
%201、四大部门
%20- %20
四大部门:%20研发、测试、运维、(系统管理)
%20 - %20
流程走向:%20产品设计%20—>%20项目研发%20—>%20运维%20—>%20系统数据管理
%20 - %20
职责描述:
%20%20研发部:根据项目需求设计项目(程序员/Java工程师/php%20工程师/码农)
%20%20测试部:项目%20bug%20的测试(项目内测部门)
%20%20运维部:%20负责项目的上线以及后期项目所在的服务器的维护
%20%20系统管理部:%20在不同的公司架构中可能不一样,有的公司可能有这个部门,有的可能没有。
%20%20其工作职责主要是去使用这个项目。
%20%20铁三角:研发、测试、运维。
%20
2、上线与生产
%20以某个%20web站点(网站)为例
%20%20在项目的从无到有的过程中,可以将其分为两个阶段:研发阶段、生产阶段。
%20运维在其中承担了承上启下的作用,衔接了研发阶段与生产阶段,属于其中最重要的一环。
%203、网站的概念
%20%20简单地说,网站是一种沟通工具,人们可以通过网站来发布自己想要公开的资讯,或者利用网站来提供相关的网络服务。人们可以通过网页浏览器来访问网站,获取自己需要的资讯或者享受网络服务。
%20扩展:了解网站的分类: 根据网站所以编程语言分类:例如:asp网站、php网站、jsp网站、Asp.net网站等; 根据网站的用途分类:例如门户网站(综合网站)、行业网站、娱乐网站等; 根据网站的功能分类:例如单一网站(企业网站)、多功能网站(网络商城)等等。 根据网站的持有者分类:例如个人网站、商业网站、政府网站,教育网站等。 根据网站的商业目的分类:营利性网站(行业网站、论坛)、非营利性网站(企业网站、政府网站、教育网站)。 根据网站的面向终端的分类:web网站(电脑端)和wap网站(手机端)
%204、网站的运作模式
%20%205、重要概念
%20- 域名:也就是在浏览器地址栏中输入的那一串字母和数字的组合,例如:www.baidu.com,这个就是域名,域名主要是方便用户记忆。
- 服务器:就是给用户提供服务的机器(电脑)。服务器可以分为四大类:塔式服务器、几式服务器、刀片服务器、柜式服务器
- IP地址:形式%20IPv4、IPv6
- 公网:www(万维网),%20全世界都可以互相访问的网。
- 局域网/内网/私网:在某个单元内部(家庭/教室/公司)能够进行互相访问的网络。
6、普通台式机能否充当服务器
%20问题:普通台式机/笔记本能否充当服务器来使用?
%20如果从提供服务角度来考虑的话,的确是可以充当服务器的,但是一般不会用普通电脑来充当服务器。原因如下:
%20- 稳定性不如专门服务器。(开机时间长之后,服务器保证稳定运行不卡机)
- 性能上不如专门服务器。(硬件)
- 服务器的标准上不及专门的服务器统一。
7、企业真实服务器有哪些特点
%20- 服务器的稳定的特性
- %20服务器的高性能特性%20
- 服务器的标准化统一特性
8、服务器重要结构组成
%20家用电脑:cpu、主板、硬盘、内存、电源、显卡、显示器、声卡、键盘、鼠标
%208.1、CPU
%20- %20
CPU发展史
%20
8.2、内存
8.3、风扇
8.4、电源
机柜式服务器、塔式服务器
刀片式服务器、几式服务器
8.5 硬盘
8.6 主板
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操作系统
- 性能问题:Windows 服务器操作系统不如Linux高;
- 稳定性问题:
- 底层架构:Linux 更加稳定,其开机时间可以达到好几年不关机;
- 开源:因为开源,人人都可以看到源代码,就可以为其提供自己的补丁,补丁可以提高 稳定性和安全性;
- 安全性问题:
- Linux 操作系统:相对于Windows 操作系统更加安全;
- PE 工具 大白菜、老毛桃(windows 操作系统)
- 远程管理方面:QQ 远程协助(mstsc)
- Windows 不及 Linux 操作高效。
- 服务器价格昂贵的,需要对资源进行充分利用,充分把计算机资源用到项目上(访问并发、性能),而不是把资源浪费在图形化界面或者方便程度上。
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 诞生
上述所提及的版本号并不是分支版本,而是指 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 命令行模式。在终端中可以输入需要执行的一些指令,同样可以通过终端进行关机(注意:以后在工作中很少会去使用关机命令,会使用重启比较多)。
终端的形式:
终端组成部分:
如何使用终端命令进行关机?
在Linux 中关机命令,有以下几个:shutdown(正常关机)、halt(关闭内存)、init 0
shutdown -h now
8、使用 VMware 备份操作系统
在 vm 中备份的方式有 2 种:快照、克隆。
快照:又称还原点,就是保存在拍快照时候的系统的状态(包含了所有的内容),在后期的时候随时可以恢复。【侧重在于短期备份,需要频繁备份的时候可以使用快照,做快照的时候虚拟的操作系统一般处于开启状态】
-
在菜单 ”虚拟机“ - ”快照“ - ”拍摄快照“
%20输入相关信息,点击拍摄快照
%20
克隆:就是复制的意思。【侧重长期备份,做克隆的时候是必须得关闭】
%20三、Linux%20系统的文件
%201、文件与文件夹(目录)
%20什么是文件?
%20%20一般都是一个独立的东西,可以通过一些特定的工具进行打开,并且其中不能在包含除了文件以外的东西。
%20什么是文件夹?
%20%20可以在其中包含其他文件的东西。
%20为什么先讲文件?
%20- %20
日常运维工作中,有近一半以上的工作内容%20精力%20其实都是对文件的操作
%20 - %20
Linux%20本身也是一个基于文件形式表示的操作系统
%20Linux%20一切皆文件
%20%20%20- 在%20Windows%20是文件的,在Linux%20下同样也是文件;
- 在%20Windows%20不是文件的,在%20Linux%20下也是以文件的形式存储的;
日常学习中和日常工作中,对于文件的操作的都有哪些种类?
%20%20创建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件、恢复文件。
%202、Linux%20系统的文件目录结构
%20目录结构:
%20- %20
Bin:全称%20binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的
%20 - %20
Dev%20:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似%20Windows%20下的分配盘符)。
%20 - %20
Etc:%20该目录主要存储一些配置文件。
%20 - %20
Home:表示%20”家“,表示除了%20root%20用户以外其他用户的家目录,类似于%20Windows%20下的%20User/用户目录。
%20 - %20
Proc:%20process,表示进程,该目录中存储的是%20Linux%20运行时候的进程。
%20 - %20
Root:%20该目录是%20root%20用户自己的家目录。
%20 - %20
Sbin:%20全称%20super%20binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有%20super%20权限的用户才能执行。
%20 - %20
Tmp:%20表示%20”临时“%20的,当系统运行时候产生的临时文件会在这个目录存着。
%20 - %20
Usr:%20存放的是用户自己安装的软件。类似于%20windows%20下的%20program%20files。
%20 - %20
Var:存放的程序/系统的日志文件的目录。
%20 - %20
Mnt:%20当外接设备需要挂载的时候,就需要挂载到%20mnt%20目录下。
%20
Linux%20的基本指令
%20一、指令与选项
%20什么是%20Linux%20的指令?
%20%20指在%20Linux%20终端(命令行)中输入的内容就称之为指令。
%20%20
一个完整的指令的标准格式:Linux%20通用的格式
%20#指令主体%20[选项]%20[操作对象]
%20%20一个指令可以包含多个选项
%20%20操作对象也可以是多个
%20二、基础指令
%201、ls%20指令
%20含义:ls(list)
%20- %20
用法1:#ls
%20%20%20- 含义:列出当前工作目录下的所有文件/文件夹的名称
- %20
用法2:#ls%20路径
%20%20%20- %20
含义:列出指定路径下的所有文件/文件夹的名称
%20
%20关于路径(重要):路径可以分为两种:相对路径、绝对路径相对路径:相对首先得有一个参照物(一般就是当前的工作路径); 相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录】、“../”【上一级目录下】。绝对路径:绝对路径不需要参照物,直接从根%20“/”开始寻找对于路径;
- %20
- %20
用法3:#ls%20[选项]%20[路径]
%20%20%20- %20
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
%20 - %20
常见的语法:
%20%20#ls%20-l%20路径
%20%20#ls%20-la%20路径
%20 - %20
选项解释:
%20%20-l:表示list,表示以详细列表的形式进行展示
%20%20-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
%20上述列表中的第一列字符表示文档的类型,其中 “-” 表示改行对应的文档类型为文件,“d” 表示文档类型为文件夹。
在 Linux 中隐藏文档一般都是以 “.” 开头。
- %20
-
用法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: 表示递归
-
删除一个文件
在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入 ”y/yes“,否则输入 ”n/no“按下回车。
注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项 ”-f“,表示 force(强制)。
-
删除一个文件夹
注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除访问,所以移除目录的时候一般需要使用 -rf 选项。
-
删除多个文档
-
要删除一个目录下有公共特性的文档,例如都以 Linux 开头
其中 称之为通配符,意思是表示任意的字符,Linux,表示只要以文件以 Linux 开头,后续字符则不管**。
9、vim 命令
-
指令: vim(vim是一款文本编辑器)
-
语法:#vim 文件的路径
-
作用:打开一个文件(可以不存在,也可以存在)
-
使用 vim 来打开文件
退出打开的文件,在没有按下其他命令的时候,按下 shift+英文冒号,输入 q,按下回车即可。
10、输出重定向
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中,进行后续的分析/统计,则这时候需要使用到的 输出重定向技术。
“>”:覆盖输出,会覆盖掉原先的文件内容
“>>”:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
-
语法:#正常执行的指令 >/>> 文件的路径
注意:文件可以不存在,不存在则新建
-
使用覆盖重定向,保存 ls -la 的执行结果,保存到当前目录下的 ls.txt
-
使用追加重定向,保存 ls -la 的执行结果到 ls.txt 中
11、cat 指令
- 作用1:cat 有 直接 打开一个文件的功能。
- 语法1:#cat 文件的路径
- 作用2:cat 还可以对文件进行 合并
- 语法2:#cat 待合并的文件路径1 待合并的文件路径2 … 文件路径 n > 合并之后的文件路径
- 合并 3 个文件,并存到一个文件中【配合输出重定向使用】
三、进阶指令(重点)
1、df 指令
- 作用:查看磁盘空间
- 语法:#df -h -h 表示以可读性较高的形式展示大小
2、free 指令
- 作用:查看内存使用情况
- 语法:#free -m -m 表示以 mb 为单位查看
剩余的真实可以用的内存为 1665mb
Swap: 用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存。
3、head 指令
- 作用:查看一个文件的前 n 行,如果不指定 n,则默认显示前 10 行。
- 语法:#head -n 文件路径 【n 表示数字】
4、tail 指令
- 作用1:查看一个文件的末 n 行,如果 n 不指定默认显示后 10 行
- 语法:#tail -n 文件的路径 n 同样表示数字
- 作用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(全限定 域名)
2、id 指令
- 作用:查看一个用户的一些基本信息 (包含用户 id,用户组 id,附加组 id…),该指令如果不指定用户则默认当前用户。
- 语法1:#id 默认显示当前执行该命令的用户的基本信息
- 语法2:#id 用户名 显示指定用户的基本信息
-
验证上述信息是否正确?
- 验证用户信息:通过文件 /etc/passwd
- 验证用户组信息:通过文件 /etc/group
3、whoami 指令
- 作用:“我是谁?” 显示当前登录的用户名,一般用于 shell 脚本,用于获取当前操作的用户名方便记录日志。
- 语法:#whoami
4、ps -ef 指令(重点)
-
指令:ps
-
作用:主要是查看服务器的进程信息
-
选项含义:
-e: 等价于 “-A”,表示列出全部的进程
-f: 显示全部的列(显示全字段)
-
执行结果:
-
列的含义:
- UID: 该进程执行的用户 id;
- PID: 进程 id;
- PPID: 该进程的父级进程 id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程;
- C: CPU的占用率,其形式是百分数;
- STIME: 进行的启动时间;
- TTY: 终端设备,发起该进程的设备识别符号,如果显示 “ ?”则表示该进程并不是由终端设备发起;
- TIME: 进程的执行时间;
- CMD: 该进程的名称或者对应的路径;
-
案例:(100%使用的命令)在 ps 的结果中过滤出想要查看的进程状态
- #ps -ef | grep [进程名称]
5、top 指令
-
作用:查看服务器的进程占的资源
-
语法:
- 进入命令:#top (动态显示)
- 退出命令:按下 q 键
-
输出结果:
表头含义:PID:进程id;USER:该进程对应的用户;PR:优先级;NI::用户进程空间内改变过优先级的进程占用CPU百分比;VIRT:虚拟内存;RES:常驻内存;SHR:共享内存 计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)*S:表示进程的状态(sleeping,其中 S 表示睡眠,R 表示运行);*%CPU:表示 CPU 的占用百分比;*%MEM:表示内存的占用百分比;TIME+:执行的时间;*COMMAND:进程的名称或者路径;
-
在运行 top 的时候,可以按下方便的快捷键
- M: 表示将结果按照内存(MEM)从高到底进行降序排列;
- P: 表示将结果按照 CPU 使用率从高到低进行降序排列;
- 1: 当服务器拥有多个 cpu 的时候可以使用 “1” 快捷键来切换是否展示显示各个 cpu 的详细信息。
6、du -sh 指令
-
作用:查看目录的真实大小
-
语法:#du -sh 目录路径
-
选项含义:
- -s: summarles,只显示汇总的大小
- -h: 表示以高可读性的形式进行显示
-
案例:统计 “/root/yunweiheiniux” 目录的实际大小
-
案例:统计 “/etc” 目录实际大小
7、find 指令
-
作用:用于查找文件 (其参数有 55个之多)
-
语法:#find 路径范围 选项 选项的值
-
选项:
- -name: 按照文档名称进行搜索(支持模糊搜索)
- -type: 按照文档的类型进行搜索
- 文档类型:“-” 表示文件(在使用find 的时候需要用 f 来替换),“d” 表示文件夹
-
案例:使用 find 来搜索 httpd.conf
- #find / -name httpd.conf
-
案例:搜索 etc 目录下所有的 conf 后缀文件
- #find / etc -name .conf
-
案例:使用 find 来搜索 /etc 目录下所有的文件
- #find /etc/same.d/ -type f
-
案例:使用 find 来搜索 /etc/目录下所有的文件夹
- #find /etc -type d
8、service 指令(重点)
-
作用:用于控制一些软件的服务启动/停止/重启
-
语法:#service 服务名 start/stop/restart
-
例如:需要启动本机安装的 Apache(网络服务器软件),其服务名 httpd
- #service httpd start
-
通过 ps 命令来检查 httpd 服务是否启动:
9、kill 指令(重点)
-
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
-
语法:#kill 进程 PID (语法需要配合 ps 一起使用)
-
案例:需要 kill 掉 Apache 的进程
-
与 kill 命令作用相似但是比 kill 更加好用的杀死进程的命令:killall
-
语法:#killall 进程名称
-
10、ifconfig 指令(重点)
- 作用:用于操作网卡相关的指令
- 简单语法:#ifconfig (获取网卡信息)
- Eth0 表示 Linux 中的一个网卡,eth0 是其名称。Lo(loop,本地回还网卡,其 ip 地址一般都是 127.0.0.0)也是一个网卡的名称。
注意:inet addr 就是网卡的 ip 地址
11、reboot 指令
- 作用:重新启动计算机
- 语法1:#reboot 重启
- 语法2:#reboot -w 模拟重启,但是不重启 (只写关机与开机的日志信息)
12、shutdown 指令
-
作用: 关机 (慎用)
-
语法1:#shutdown -h now “关机提示” 或者 #shutdown -h 15:25 “关机提示”
-
案例:设置Linux 系统关机时间在 12:00
-
如果想要取消关机计划的话,则可以按照以下方式去尝试:
- 针对于 centos7.x 之前的版本:ctrl+c
- 针对于 centos7.x (包含)之后的版本:#shutdown -c
除了 shutdown 关机以外,还有以下几个关机命令:#init 0#halt#poweroff
13、uptime 指令
- 作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间)
- 语法:#uptime
14、uname 指令
- 作用:获取计算机操作系统相关信息
- 语法1:#uname 获取操作系统的类型
- 语法2:#uname -a all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
15、netstat -tnlp 指令
- 作用:查看网络连接状态
- 语法:#netstat -tnlp
-
选项说明
- -t: 表示只列出 tcp 协议的连接;
- -n: 表示将地址从字母组合转化成 ip地址,将协议转化成端口号来显示;
- -l: 表示过滤出 “state(状态)” 列中其值为 LISTEN(监听)的连接;
- -p: 表示显示发起连接的进程 pid 和进程名称;
16、man 指令
-
作用:manual,手册 (包含了 Linux 中全部命令手册,英文)
-
语法:#man 命令 (退出按下 q 键)
-
案例:通过 man 命令查询 cp 指令的用法
- #man cp
五、练习题
- 如何通过命令行重启 Linux 操作系统?
- #reboot
- 如何在命令行中快速删除光标前/后的内容?
- 前:ctrl + u
- 后:ctrl + k
- 如何删除 /tmp 下所有 A 开头的文件?
- #rm -f /tmp/A
- 系统重要文件需要备份,如何把 /etc/passwd 备份到 /tmp 目录下?
- #cp /etc/passwd /tmp/
- 如何查看系统最后创建的 3 个用户?
- #tail -3 /etc/passwd
- 什么命令可以统计当前系统中一个有多少账户?
- #wc -l /etc/passwd #cat /etc/passwd | wc -l
- 如何创建 /tmp/test.conf 文件?
- #touch /tmp/test.conf
- 如何通过 vim 编辑打开 /tmp/test.conf ?
- vim /tmp/test.conf
- 如何查看 /etc/passwd 的头 3 行和尾 3 行?
- #head -3 /etc/passwd
- #tail -3 /etc/passwd
- 如何一次性创建目录 /text/1/2/3/4 ?
- #mkdir -p /text/1/2/3/4
- 如何最快的返回到当前账户的家目录?
- #cd ~ #cd
- 如何查看 /etc 所占的磁盘空间 ?
- #du -sh /etc
- 如何删除 /tmp 下所有的文件 ?
- #rm -rf /tmp/*
- 尝试启动 Apache 的服务,并且检查是否启动成功。
- service httpd start
- ps -ef | grep httpd
- 使用已学命令杀死 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 下直接修改!!!)
后续的一切 vim 命令都是基于 /root/passwd 文件进行操作。
退出方式:输入:q 按下回车即可。
三、命令模式
注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)
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 字符
- 按键:数字 ←,数字 →
-
末行模式下的快速移动方式:移动到指定的行
- 按键:输入英文 “:”,其后输入行数数字,按下回车
四、模式间的切换
五、末行模式
-
进入方式:由命令模式进入,按下 “:” 或者 ”/(表示查找)“即可进入
-
退出方式:
- 按下 Esc
- 连按 2 次 Esc 键
- 删除末行全部输入字符
-
1、保存操作(write)
- 输入:”:w“ 保存文件
- 输入:”:w 路径“ 另存为
-
2、退出(quit)
- 输入:”:q“ 退出文件
-
3、保存并退出
- 输入:”:wq“ 保存并且退出
-
4、强制(!)
- 输入:”:q!“ 表示强制退出,刚才做的修改操作不做保存
-
5、调用外部命令(了解)
- 输入:”:! 外部命令“
-
6、搜索/查找
-
输入:“/关键词”
-
例如:我想在 passwd 文件中搜索 “sbin” 关键词
在搜索结果中切换上/下一个结果: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)
-
-
六、编辑模式
重点看前 2 个进入方式:i、a。
退出方式:按下 Esc 键
七、使用功能
1、代码着色
-
案例:首先创建简单的 c 语言程序
-
如何控制着色显示与否?
显示:“:syntax on” syntax:语法
关闭显示:“:syntax off”
-
2、vim 中计算器的使用
当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim 自身集成了一个简易的计算器。
- 进入编辑模式
- 按下按键 “ctrl + R”,然后输入 “=”,此时光标会变到最后一行
- 输入需要计算的内容,按下回车
八、扩展(3)
1、vim 的配置(重点)
-
Vim 是一款编辑器,编辑器也是有配置文件的。
-
Vim 配置有三种情况:
-
在文件打开的时候在末行模式下输入的配置(临时的)
-
个人配置文件(~/.vimrc)
-
全局配置文件(vim 自带,/etc/vimrc)
-
-
1、新建好个人配置文件之后进入编辑
-
2、在配置文件中进行配置
-
比如显示行号:set nu
-
配置好之后 vim 打开文件就会永远显示行号
-
-
问题:如果某个配置项,在个人配置文件与全局配置文件产生冲突的时候应该以谁为准?
-
测试步骤:在两个配置文件中针对同一个配置项设置不同的值
-
先在全局的配置中设置不显示行号,在个人的配置文件中设置显示行号,观察结果
最后显示行号:说明以个人为准
-
先在全局中配置显示行号,在个人中设置不显示行号,观察结果
最后的显示是不显示行号,说明以个人为准
结论:如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。
-
2、异常退出
什么是异常退出:在编辑文件之后并没有正常的去 wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为 异常退出;
%20解决办法:将转换文件%20(在编程过程中产生的临时文件)%20删除掉即可。
%203、别名机制
%20- %20
作用:相当于创建一些属于自己的自定义命令
%20 - %20
例如:在%20windows%20下有%20cls%20命令,在%20Linux%20下可能因为没有这个命令而不习惯清屏。现在可以通过别名机制来解决这个问题,可以自己创造出%20cls%20命令。
%20 - %20
别名机制依靠一个别名映射文件:~/.bashrc
%20#vim%20~/.bashrc
%20注意:如果想新创造的命令生效,必须要重新登录当前用户。
4、退出方式
-
回顾: 之前 vim 中退出编辑的文件可以使用 “:q” 或者 “:wq”。
-
除了上面的这个语法之外,vim 还支持另外一个保存退出方法 “:x”。
-
说明:
- “:x” 在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
- 如果文件没有被修改,但是使用 wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用 x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
因此建议以后使用 “:x” 来进行对文件的保存退出。
但是:不要使用 X,不要使用 X,不要使用 X。