大数据技术之_01_Linux学习_01_linux的入门+VM和linux的安装+linux的目录结构+远程登录到linux服务器+vi和vim编辑器+开机、重启和用户登录注销+用户管理+用户组管理+实用指令
1 linux的入门1.1 Linux的介绍2 VM和linux的安装2.1 安装vm和Centos2.1.1 基本说明2.1.2 CentOS安装的步骤2.1.3 CentOS安装技术难点 -> 网络配置三种方式理解(难点)2.2 Centos终端的使用和联网2.2.1 Centos自带终端的使用2.2.2 在centos的火狐可以联网,可以和外部的ip拼通3 linux的目录结构3.1 linux目录结构3.2 linux目录机构的一览图3.3 对linux目录结构的小结4 远程登录到linux服务器4.1 为什么需要远程登录linux4.2 远程登录Linux -> Xshell64.3 远程上传下载文件Xftp64.4 SecureCRT的安装和使用5 vi和vim编辑器5.1 vi和vim的基本介绍5.2 vi和vim三种模式的切换5.3 vi和vim的快速入门小案例5.4 vi和vim的快捷键的使用6 开机、重启和用户登录注销6.1 关机&重启命令6.1.1 常见的指令如下6.1.2 注意细节6.2 用户的登录和注销6.2.1 基本介绍6.2.2 使用细节7 用户管理7.1 linux的用户和权限的关系示意图7.2 基本介绍7.3 添加用户7.4 指定/修改密码7.5 删除用户7.6 查询用户信息指令7.7 切换用户7.8 查看当前用户/登录用户8 用户组管理8.1 新增组8.2 删除组8.3 增加用户时直接指定用户的家目录和用户组8.4 修改用户所属的用户组8.5 用户和组的相关文件9 实用指令9.1 运行级别9.2 指定运行级别9.2.1 CentOS 6X指定当前运行级别9.2.2 CentOS 7X指定运行级别9.3 面试题9.4 帮助指令9.5 文件和目录相关的指令9.5.1 pwd指令9.5.2 ls指令9.5.3 cd指令9.5.4 mkdir指令9.5.5 rmdir指令9.5.6 touch指令9.5.7 cp指令9.5.8 rm指令9.5.9 mv指令9.5.10 cat指令9.5.11 more指令9.5.12 less指令9.5.13 >指令和>>指令9.5.14 echo指令9.5.15 head指令9.5.16 tail指令9.5.17 ln指令9.5.18 history指令9.6 时间日期类相关的指令9.6.1 date指令-显示当前日期9.6.2 date指令-设置日期9.6.3 cal指令-显示日历搜索查找类9.7 搜索查找类相关的指令9.7.1 find指令9.7.2 locate指令9.7.3 grep指令和管道符号|9.8 压缩和解压类相关的指令9.8.1 gzip/gunzip 指令9.8.2 zip/unzip 指令9.8.3 tar 指令
1 linux的入门
1.1 Linux的介绍
1、Linux怎么读? 推荐读法:里纽克斯
2、Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上。
3、常见的操作系统(Win7/Win10、IOS、Android、Mac)。
4、Linux 吉祥物。
![](https://s2.ax1x.com/2019/01/26/knvrE8.png)
该标志的由来是因为Linus在澳洲时曾被一只动物园里的企鹅咬了一口,便选择了企鹅作为Linux的标志。
5、Linux的创始人
![](https://s2.ax1x.com/2019/01/26/knvsUS.png)
6、Linux主要的发行版:
Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE
7、Linux和Unix的关系 -> Unix是怎么来的
1943年
汤普逊
出生于美国新奥尔良
。1960年就读加州大学伯克利分校
主修电气工程
,取得了电子工程硕士
的学位。1966年加入了贝尔实验室
。汤普逊参与了贝尔实验室与麻省理工学院
以及通用电气公司
联合开发的一套多用户分时操作系统
,名叫Multics
,同时他自己写了一个“star travel”游戏
可运行于Multics之上。贝尔实验室后来撤出Multics计划。汤普逊只好找到一台老式PDP-7机器,重写了他的“star travel”游戏。
在开发Multics的期间,汤普逊创造出了名为Bon的程式语言
。汤普逊花了一个月的时间开发了全新的操作系统,UNiplexed Information and Computing System(UNICS),可执行于PDP-7机器之上,后来改称为UNIX
。第一版的Unix就是基于B语言
来开发的。Bon语言在进行系统编程时不够强大,所以Thompson和Ritchie对其进行了改造,并于1971年共同发明了C语言
。1973年Thompson和Ritchie用C语言重写了UNIX。安装于PDP-11的机器之上。
1983年,美国计算机协会将杜林奖(图灵奖)
授予汤普逊与丹尼斯。
2000年12月时,汤普逊退休,离开贝尔实验室,成为了一名飞行员
。
美国贝尔实验室是晶体管
、太阳能电池
、数字交换机
、通信卫星
、有声电影
等许多重大发明的诞生地。自成立年以来,贝尔实验室共获得两万七千多项专利,平均每个工作日获得4项多专利。一共获得8项诺贝尔奖(其中7项物理学奖,1项化学奖)。
Unix 的使用成本很高,不是想用就用的起的!
1、5万美元起价 【当时可以购买一套美国别墅】
2、需要性能高端服务器
![](https://s2.ax1x.com/2019/01/26/knvg3j.png)
理查德·马修·斯托曼是世界最著名的黑客。
毕业于哈佛大学,是美国国家工程院院士。
取得最大的成就,就是发起
GNU计划
,提倡软件的源码可以被阅读并在规定下进行改版。
8、Linux和Unix的关系 -> Linux是怎么来的
伟大的GNU计划:
![](https://s2.ax1x.com/2019/01/26/knvBHf.png)
Linux的完成的称呼应该是 GNU/Linux,我们简称Linux。
![](https://s2.ax1x.com/2019/01/26/knvRvn.png)
javaEE和大数据一般使用CentOS。
Python一般使用Ubuntu。
2 VM和linux的安装
2.1 安装vm和Centos
2.1.1 基本说明
学习Linux需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个Centos系统来学习。
1) 先安装virtual machine,VM12 Pro
2) 再安装Linux (CentOS )
3) 原理示意图如下:
![](https://s2.ax1x.com/2019/01/26/knvy4g.png)
2.1.2 CentOS安装的步骤
1) 创建虚拟机
2) 开始安装系统(CentOS6.8)
3) 具体的步骤看以下链接
参考链接:
安装VMware12的补充:要先去BIOS里修改设置开启虚拟化设备支持(开机的瞬间狂按f2或f10进入BIOS),修改如下图所示:
![](https://s2.ax1x.com/2019/01/26/knvcCQ.png)
VMware10.0 && VMware12.0 Pro && VMware14.0 Pro && VMware 15.0 Pro 的安装与破解
VMware12.0 Pro 中安装 CentOS-7.5(桌面版)
VMware12.0 Pro 中安装 CentOS 6.8_超详解 + 高清大图
安装CentOS-7.5(桌面版)的补充:手动分区
Linux系统Linux至少有三个分区:
第一个分区:创建标准分区,挂载点是 /boot,文件系统类型为ext4,是Linux系统在启动或引导的时候需要的文件所放在的位置,大小一般200M足够。
第二个分区:创建标准分区,没有挂载点,文件系统类型为swap,是Linux系统的交换分区,相当于Windows的虚拟内存,大小一般跟Linux系统分配的物理内存相同或者是其2倍。作用是:当Linux系统内存不够用的时候,临时充当内存使用,效率比实际物理内存要低一点,比物理硬盘要高。
第三个分区:创建标准分区,挂载点是/,文件系统类型为ext4,是Linux系统的根分区。大小是剩余的全部可用空间。
说明:也可以使用将除去 /boot 和 swap 分区的所有空间分配给 / 根分区的方式。
2.1.3 CentOS安装技术难点 -> 网络配置三种方式理解(难点)
这里,在面试的时,有可能面试官问关于
桥接模式
、NAT模式
和主机模式
的含义和区别?
虚拟机的三种网络配置方式的说明:
![](https://s2.ax1x.com/2019/01/26/knvhD0.png)
网络连接类型的选择,网络连接类型一共有
桥接
、NAT
、仅主机
和不联网
四种。桥接
:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上。NAT
:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信。仅主机
:虚拟机与宿主机直接连起来。
桥接与NAT模式访问互联网过程,如下图所示:
![](https://s2.ax1x.com/2019/01/26/knv4bV.png)
2.2 Centos终端的使用和联网
2.2.1 Centos自带终端的使用
![](https://s2.ax1x.com/2019/01/26/knv2gs.png)
2.2.2 在centos的火狐可以联网,可以和外部的ip拼通
这里,我们仅仅简单的动态的分配ip(后面我们要学习固定分配ip)。
参考链接:虚拟机CentOS 7.5 如何固定IP地址
3 linux的目录结构
3.1 linux目录结构
Linux的文件系统是采用
级层式的树状目录结构
,在此结构中的最上层是根目录“/”
,然后在此目录下再创建其他的目录。
深刻理解Linux树状文件目录
是非常重要的,这里我给大家说明一下。
记住一句经典的话:在Linux世界里,一切皆文件。(即使是一个硬件设备,也是使用文件来标识的,即把硬件映射成一个文件)
3.2 linux目录机构的一览图
![](https://s2.ax1x.com/2019/01/26/knvfuq.png)
具体的目录说明:
1、
![](https://s2.ax1x.com/2019/01/26/knvIET.png)
2、
![](https://s2.ax1x.com/2019/01/26/knvvb6.png)
3、
![](https://s2.ax1x.com/2019/01/26/knvHC4.png)
/proc、/srv、/sys 目录是高手的修改的地方,目前水平不用去修改。【属于Linux内核部分】
4、
![](https://s2.ax1x.com/2019/01/26/knvoUU.png)
比如:
/dev 就有 cpu 、disk 等等。
/mnt 可以实现磁盘扩容。
5、
![](https://s2.ax1x.com/2019/01/26/knvT5F.png)
/opt 放将要安装的软件程序,所以工作时,我们尽量将安装软件放到这个统一的目录下。
/selinux 是一个安全系统,类似360安全卫士。当有黑客入侵到服务器后,就会触发/selinux 安全系统。
3.3 对linux目录结构的小结
1) 在linux中,目录结构有且仅有一个
根目录/
其他的目录都是在 /目录分支里。
2) 在linux中,有很多目录,每个目录都会存放相应的内容,不要随意去修改。
3) 在linux中,所有的设备都可以通过文件来体现(比如字符设备文件[键盘、鼠标等],块设备文件[硬盘])。
4) 在学习linux时,要尽快的在脑海中,形成一个目录树
。
4 远程登录到linux服务器
4.1 为什么需要远程登录linux
![](https://s2.ax1x.com/2019/01/26/knvb8J.png)
终端工具对比:
![](https://s2.ax1x.com/2019/01/26/knvq29.png)
4.2 远程登录Linux -> Xshell6
Xshell 是目前最好的远程登录到Linux操作的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员首选的软件。
Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的 TELNET 协议。
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
特别说明:如果希望安装好的XShell可以访问Linux系统的话,需要有一个前提:就是Linux启用了sshd的服务,该服务会监听22号端口。
Xshell6使用方法:
![](https://s2.ax1x.com/2019/01/26/knxp5D.png)
点击【新建】
![](https://s2.ax1x.com/2019/01/26/knvLvR.png)
填写信息
![](https://s2.ax1x.com/2019/01/26/knvXK1.png)
由于是第一次连接,点击【接受并保存】
![](https://s2.ax1x.com/2019/01/26/knxSUO.png)
输入登录Linux系统的用户名
![](https://s2.ax1x.com/2019/01/26/knvjDx.png)
输入登录密码
![](https://s2.ax1x.com/2019/01/26/knvzVK.png)
远程连接成功后的截图
![](https://s2.ax1x.com/2019/01/26/knxCPe.png)
Xshell自动保存用户名和密码后的更改方法
![](https://s2.ax1x.com/2019/01/26/knxi2d.png)
4.3 远程上传下载文件Xftp6
Xftp6是一个基于 windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。
注意:Xftp6使用方法同Xshell6使用方法!这里不再赘述。不同的地方:协议要选择SFTP
。
简便方法:我们可以在Xshell6界面点击【新建文件传输】按钮直接进入Xftp6界面。
![](https://s2.ax1x.com/2019/01/26/knxP8H.png)
效果:
![](https://s2.ax1x.com/2019/01/26/knxFxA.png)
显示中文乱码解决:
![](https://s2.ax1x.com/2019/01/26/knxMGQ.png)
点击【确定】之后,刷新,就可以解决显示中文乱码问题!
4.4 SecureCRT的安装和使用
SecureCRT是用于远程登录Linux的软件。SecureCRT 也是一款常用的远程登录Linux的软件,在
大数据开发中
使用较多。
注意:在大数据开发中使用什么终端软件都可以,没有什么是必须使用的。
SecureCRT8.1.4整合汉化绿色版:
下载链接:
https://share.weiyun.com/1b080cae17c0d66755b100228dce0f31(密码:WV98)
破解教程:自己网上下载SecureCRT v8.x 注册机。
SecureCRT v8.x 注册机使用说明:
[基本信息]
SecureCRT v8.x 注册机,TEAM Z.W.T 出品,MD5 = 44114b98d90f8bfc9e18c285937ca092
[使用说明]
1. 先不要运行 SecureCRT
2. 建议把注册机放到安装目录(放在其他目录也可以)
3. 运行securecrt8.0_注册机
4. 点击 Patch,此时会让你选择 SecureCRT.exe 和 LicenseHelper.exe 的位置
5. 应用 Patch 成功之后,会出现 SecureCRT.exe 和 LicenseHelper.exe 的 .bak 备份文件
6. 此时以管理员身份再运行 SecureCRT,会先弹要你注册,点击下一步,再点击 Enter License Manually
7. 复制粘帖注册机上的 License 里面的内容到指定的编辑框, 点击下一步,OK
注意:默认打开CRT时候会是一个输入key的页面,什么都不输入,点击下一步
SecureCRT无法启动的解决方法:
https://www.cnblogs.com/chenmingjun/p/9938765.html
使用步骤:
![](https://s2.ax1x.com/2019/01/26/knxAKI.png)
填写连接信息
![](https://s2.ax1x.com/2019/01/26/knxnIS.png)
选择SecureFX协议
![](https://s2.ax1x.com/2019/01/26/knxVqP.png)
给回话起名字,任意,原则:见名知意
![](https://s2.ax1x.com/2019/01/26/knxErt.png)
开始连接
![](https://s2.ax1x.com/2019/01/26/knxeVf.png)
接受并保存
![](https://s2.ax1x.com/2019/01/26/knxma8.png)
输入Linux系统的用户名和密码
![](https://s2.ax1x.com/2019/01/26/knxwRJ.png)
连接成功后截图:
![](https://s2.ax1x.com/2019/01/26/knxKPg.png)
中文乱码解决:
![](https://s2.ax1x.com/2019/01/26/knxGq0.png)
5 vi和vim编辑器
5.1 vi和vim的基本介绍
所有的 Linux 系统都会内建 vi 文本编辑器。
Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
我们只需要掌握它的基本使用即可。
5.2 vi和vim三种模式的切换
正常模式:
以 vim 打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。在正常模式下可以使用快捷键。
插入模式(编辑模式):
按下i(insert), I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式,一般来说按i即可。
命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中完成的。
![](https://s2.ax1x.com/2019/01/26/knx3Mn.png)
5.3 vi和vim的快速入门小案例
使用 vim 开发一个 Hello.java 程序,步骤说明和演示如下:
![](https://s2.ax1x.com/2019/01/26/knxQ2j.png)
5.4 vi和vim的快捷键的使用
1) 拷贝当前行:
yy
,拷贝当前行向下的5行:5yy
,并粘贴:p
。【该快捷键在正常模式下使用】
2) 删除当前行:dd
,删除当前行向下的5行:5dd
。
3) 在文件中查找某个单词 【在命令模式模式下:/关键字
,回车查找,输入n
就是查找下一个 】
4) 设置文件的行号,取消文件的行号【在命令行模式下:set nu
和:set nonu
]
5) 编辑 /etc/profile 文件,使用快捷键到达文档的最末行G
和最首行gg
【在正常模式下使用】
6) 在一个文件中输入 “hello”,然后又撤销这个动作u
【在正常模式下】
7) 编辑 /etc/profile 文件,并将光标移动到20行shift+g
【在正常模式下使用】
1、显示行号 :set nu
2、输入20
3、输入Shift+g
vi和vim键盘图
![](https://s2.ax1x.com/2019/01/26/knxlxs.gif)
6 开机、重启和用户登录注销
6.1 关机&重启命令
6.1.1 常见的指令如下
shutdown -h now 【立刻关机】
shutdown -h 1 【1分钟后,关机】
shutdown -r now 【立刻重启】
shutdown -r 2 【2分钟后,重启】
halt 【立刻关机】
reboot 【立刻重启】
在重启和关机前,通常需要先执行
sync 【把内存的数据,写入磁盘】
6.1.2 注意细节
建议:不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。这是个好习惯!
6.2 用户的登录和注销
6.2.1 基本介绍
1) 登录时尽量少用root帐号登录,因为它是系统管理员,拥有最大的权限,避免操作失误。可以利用普通用户登录,登录后再用
su - 用户名
命令来切换成系统管理员身份。
2) 在提示符下输入logout
即可注销用户。【不同的shell具体命令可能不同(logout或exit)】
6.2.2 使用细节
1)
logout
注销指令在图形运行级别运行该指令无效,在运行级别 3
下运行该指令有效。(简单提一下:0-6个级别)
2) 运行级别这个概念,后面给大家介绍。
7 用户管理
7.1 linux的用户和权限的关系示意图
![](https://s2.ax1x.com/2019/01/26/knx8rq.png)
7.2 基本介绍
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
Linux的用户至少需要属于一个组。
7.3 添加用户
基本语法
useradd [选项] 用户名
案例演示
添加一个用户xiaoming
细节说明
1、当创建用户成功后,会自动的创建和用户同名的家目录【/home/xiaoming】。
2、也可以通过useradd -d /home/xiaohonghome xiaohong
给新创建的用户xiaohong指定家目录【/home/xiaohonghome】。
7.4 指定/修改密码
基本语法
passwd 用户名 // 如果没有带用户名,则是给当前登录的用户修改密码
案例演示
给xiaoming用户指定密码
passwd xiaoming // 需要使用root用户,这样权限才够
![](https://s2.ax1x.com/2019/01/26/knxtaT.png)
7.5 删除用户
基本语法
userdel 用户名
案例演示
删除用户xiaoming,但是要保留家目录 userdel xiaoming
删除用户以及用户家目录 userdel –r xiaohong
【小心使用】
细节说明
是否保留家目录的讨论? [建议一般保留]
linux彻底删除用户
删除用户xiaoming,如果我们直接使用
userdel xiaoming
,那么并不能删除该用户账号所有相关信息,只是删除掉了/etc/passwd、/etc/shadow、/etc/group/、/etc/gshadow 四个文件里的该账户和组的信息。因为默认情况下创建一个用户账号,设置好密码后,会创建一个家目录和一个用户邮箱(在/var/spool/mail目录以用户名命名)。我们可以使用find命令来查找所有与该用户相关的文件信息【find / -name "xiaoming"】。如下图所示:
![](https://s2.ax1x.com/2019/01/26/knxNIU.png)
7.6 查询用户信息指令
基本语法
id 用户名
案例演示
请查询root信息
细节说明
当用户不存在时,返回“无此用户”。
![](https://s2.ax1x.com/2019/01/26/knxYZV.png)
7.7 切换用户
介绍
在操作Linux中,如果当前用户的权限不够,可以通过su -
指令,切换到高权限用户,比如root用户。
基本语法
su - 切换用户名
案例演示
创建一个用户xiaojun,指定密码,然后切换到xiaojun。
细节说明
1) 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
2) 当需要返回到原来用户时,使用exit指令。
3) 如果su – 没有带用户名
,则默认切换到root用户。
![](https://s2.ax1x.com/2019/01/26/knxdG4.png)
7.8 查看当前用户/登录用户
基本语法
whoami / who am i
![](https://s2.ax1x.com/2019/01/26/knxrs1.png)
8 用户组管理
介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理。
8.1 新增组
新增组
groupadd 组名
案例演示
groupadd wudang
8.2 删除组
删除组
groupdel 组名
案例演示
groupdel wudang
注意:
这里有一个前提,就是这个用户组没有用户,才能被删除。
8.3 增加用户时直接指定用户的家目录和用户组
1、创建一个用户,名字叫abc,主目录是/home/abc/目录,属于aabb这个组。
useradd -d /home/abc/ abc -m -g aabb
-d的意思是指定用户的主目录
-m的意思是,如果主目录不存在,那么就自动创建这个目录
-g的意思是指定该用户属于哪个组
2、增加一个用户zwj, 直接将他指定到用户组wudang。
useradd zwj -g wudang
![](https://s2.ax1x.com/2019/01/26/knxaiF.png)
8.4 修改用户所属的用户组
修改用户所属的用户组
usermod 用户名 –g 新的组名
案例演示
创建一个shaolin用户组,让将zwj用户修改到shaolin用户组。
![](https://s2.ax1x.com/2019/01/26/knxRiD.png)
8.5 用户和组的相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell的种类
![](https://s2.ax1x.com/2019/01/26/knxsqx.png)
/etc/shadow 文件
口令的配置文件。
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
![](https://s2.ax1x.com/2019/01/26/knx0z9.png)
/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息。
每行含义:组名:口令:组标识号:组内用户列表
![](https://s2.ax1x.com/2019/01/26/knxDMR.png)
9 实用指令
9.1 运行级别
基本介绍
运行级别说明:
0 :关机
1 :单用户【类似安全模式,这个模式可以帮助找回root密码】
2 :多用户状态没有网络服务
3 :多用户状态有网络服务【使用最多】
4 :系统未使用保留给用户
5 :图形界面
6 :系统重启
常用运行级别是3和5,我们可以修改默认的运行级别文件。
![](https://s2.ax1x.com/2019/01/26/knx6Z6.png)
9.2 指定运行级别
CentOS 6X 和 CentOS 7X 的指定运行级别的方式有区别!!!
CentOS 6X 是通过修改/etc/inittab 来修改默认运行级别的。
9.2.1 CentOS 6X指定当前运行级别
查看vim /etc/inittab
文件
![](https://s2.ax1x.com/2019/01/26/ku9R0I.png)
id:5:initdefault:
命令:init [012356]
通过init来切换不同的当前运行级别,比如:5、3,然后关机。
init 5
init 3
init 0
9.2.2 CentOS 7X指定运行级别
查看vim /etc/inittab
文件
![](https://s2.ax1x.com/2019/01/26/ku9o9S.png)
我们可以看到,里面除了注释,什么也没有,并没有CentOS 6X中设置默认运行当前级别的方式。
注释内容大意是说:
# multi-user.target类似于runlevel 3
# graphical.target类似于runlevel5
#获得默认运行级别的方式
systemctl get-default
#设置默认运行级别的方式
systemctl set-default TARGET.target
运行级别对应表如下图所示:
![](https://s2.ax1x.com/2019/01/26/ku92nA.png)
CentOS 7X 设置运行级别
命令格式:systemctl [command] [unit.target]
参数详解:command:
get-default 获得当前的target
set-default 设置指定的target为默认的运行级别
isolate 切换到指定的运行级别
unit.target 为运行级别对应表中列出的运行级别,如下图所示:
![](https://s2.ax1x.com/2019/01/26/ku9W7t.png)
注:上表前两行是设置默认运行级别(重启系统生效),后两行是设置当前运行级别(立即生效)。
CentOS 7X 系统演示
![](https://s2.ax1x.com/2019/01/26/ku9hAP.png)
9.3 面试题
1、请设置我们的Linux运行级别,linux运行后,直接进入到命令行终端(3级别)
。
答:对于CentOS 6X而言,编辑vim /etc/inittab
文件即可,修改为:id:3:initdefault:
对于CentOS 7X而言,命令是:systemctl set-default multi-user.target
(重启linux系统后生效)
扩展:如果将运行级别设置为0,即Linux系统一开机就立马关机,那么我们如何解决这个问题?
答:思路同下。即进入单用户运行级别,然后修改inittab文件
。
2、假设我们的root用户的密码忘记了,请问如何找回密码?
思路:进入单用户运行级别,然后修改root密码。因为单用户运行级别不需要密码就可以使用root身份登录。
答:Linux系统启动时 -> 快速输入Enter -> 输入e -> 进入到编辑界面 -> 选择中间有kernel项 ->再输入e(edit) -> 在该行的最后写入空格和1
[表示修改内核,临时生效] -> 再输入Enter ->输入b [boot] -> 进入到单用户模式【这里就可以做补救工作了】。
截图如下:
Linux系统启动时,快速输入Enter
![](https://s2.ax1x.com/2019/01/26/ku94tf.png)
输入e,进入到编辑界面,选择中间有kernel项
![](https://s2.ax1x.com/2019/01/26/ku95h8.png)
再输入e(edit),在该行的最后
写入空格和1
[表示修改内核,临时生效],再输入Enter![](https://s2.ax1x.com/2019/01/26/kuk6eJ.png)
输入b [boot],进入到单用户运行级别【这里就可以做补救工作了】
![](https://s2.ax1x.com/2019/01/26/kuksL4.png)
单用户运行级别不需要密码就可以使用root身份登录,此时我们使用root用户修改密码即可。
![](https://s2.ax1x.com/2019/01/26/kukryF.png)
思考:root用户的密码都可以随意修改,Linux的安全性体现在哪里呢?
答:上述修改root用户密码的前提:不能远程登录,必须在这个Linux服务器所在的电脑上进行操作。换言之,这个Linux服务器就在我们身边,触手可及,是我们自己的东西,我们对于我们自己的东西,想怎么整都行!何况小小的修改密码的操作。
9.4 帮助指令
- 当我们对某一个指令不熟悉的时候,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法。
- man获得帮助信息
- 基本语法:
man [命令或配置文件](功能描述:获得帮助信息)- 应用实例:
案例:查看ls命令的帮助信息- help指令
- 基本语法:
help 命令 (功能描述:获得shell内置命令的帮助信息)- 应用实例:
案例:查看cd命令的帮助信息- 百度帮助更直接
- 虽然上面两个都可以来获取指令帮助,但是需要英语功底,如果英语不太好的,我还是推荐大家直接百度靠谱。
9.5 文件和目录相关的指令
9.5.1 pwd指令
- 基本语法:
pwd (功能描述:显示当前工作目录的绝对路径)- 应用实例:
案例:显示当前工作目录的绝对路径。
9.5.2 ls指令
- 基本语法:
ls [选项] [目录或是文件]- 常用选项:
-a :显示当前目录所有的文件和目录,包括隐藏的(文件名以.开头就是隐藏)。
-l :以列表的方式显示信息
-h :显示文件大小时,以 k, m, G 单位显示- 应用实例:
案例:查看当前目录的所有内容信息。
9.5.3 cd指令
- 基本语法:
cd [参数] (功能描述:切换到指定目录)- 常用参数:
绝对路径【从 / 开始定位】和相对路径【从当前的位置开始定位】cd ~
或者cd
回到自己的家目录cd ..
回到当前目录的上一级目录- 应用实例:
案例1:使用绝对路径切换到root目录cd /root
案例2:使用相对路径到/root目录cd ../root
(用户在/home目录下)
案例3:表示回到当前目录的上一级目录cd ..
案例4:回到家目录cd ~
9.5.4 mkdir指令
- 说明:
mkdir 用于创建目录 [make directory]- 基本语法:
mkdir [选项] 要创建的目录- 常用选项:
-p :创建多级目录- 应用实例:
案例1:创建一个目录 /home/dogmkdir /home/dog
案例2:创建多级目录 /home/animal/tigermkdir -p /home/animal/tiger
9.5.5 rmdir指令
- 说明:
rmdir 用于删除空目录 [remove directory]- 基本语法:
rmdir [选项] 要删除的空目录- 应用实例:
案例1:删除一个目录 /home/dog
rmdir /home/dog
[前提 /home/dog 是空目录]- 使用细节:
rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用rm -rf 要删除的目录
9.5.6 touch指令
- 说明:
touch 用于创建空文件,还可以更新文件的修改时间。- 基本语法:
touch 文件名称- 应用实例:
案例1:创建一个空文件 hello.txttouch hello.txt
提示:如果文件存在,则表示刷新该文件的修改时间。
案例2:创建多个空文件 hello.txt haha.txttouch hello.txt haha.txt
9.5.7 cp指令
- 说明:
cp 用于拷贝文件到指定目录 [copy 拷贝]- 基本语法:
cp [选项] source【源文件或者源目录】 dest【目的目录】- 常用选项:
-r :递归复制整个文件夹 [r:recursive 递归]- 应用实例:
案例1:将/home/aaa.txt
拷贝到/home/bbb/
目录下cp /home/aaa.txt /home/bbb/
案例2:递归复制整个文件夹,举例:将/home/
整个目录拷贝到/opt/
目录下cp -r /home/ /opt/
- 使用细节:
当发现目标目录下有相同的文件,会提示是否覆盖,很烦人,强制覆盖不提示的方法:\cp
- 建议
/
表示的是根目录,/home/
和/home
都表示的是根目录下的home目录,但是建议home目录写成home/
会更专业,这样避免出现歧义。即xxx目录
最好写成xxx/
,正斜杠最好别省略!强烈推荐多使用绝对路径,少用相对路径!脑海中要有清晰的Linux目录树结构图。
9.5.8 rm指令
- 说明:
rm 用于移除文件或目录- 基本语法:
rm [选项] 要删除的文件或目录- 常用选项:
-r :递归删除整个文件夹 [r=recursive 递归]
-f :强制删除不提示 [f=force 强制]
-rf :强制递归删除整个文件夹不提示- 应用实例:
案例1:将/home/aaa.txt
删除rm /home/aaa.txt
案例2:递归删除整个文件夹/home/bbb/
命令rm –r /home/bbb/
- 使用细节
强制删除不提示的方法:带上 -f 即可rm –rf /home/bbb/
9.5.9 mv指令
- 说明:
mv 移动文件与目录或重命名- 基本语法:
1) mv oldNameFile newNameFile (功能描述:重命名)前提:要先有oldFile存在,才是重命名
2) mv /temp/moveFile /targetFolder/ (功能描述:移动文件或目录)- 应用实例:
案例1:将/home/aaa.txt文件
重新命名为pig.txt
,前提:aaa.txt文件先存在,才是重命名。
案例2:将/home/pig.txt文件
移动到/root/
目录下,前提:/root/
目录下没有改文件,是移动。
9.5.10 cat指令
- 说明:
cat 查看文件内容- 基本语法:
cat [选项] 要查看的文件- 常用选项:
-n :显示行号- 应用实例:
案例1:查看/ect/profile文件
内容,并显示行号。命令:cat -n /etc/profile | more
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more
cat xxx.txt | more (把cat xxx.txt
输出结果交给more
处理),如下图所示:
9.5.11 more指令
- 说明:
more指令是一个基于vi编辑器的文本过滤器
,它以全屏幕的方式按页显示
文本文件的内容。- 基本语法:
more 要查看的文件- 操作说明:
more指令中内置了若干快捷键,详见操作说明如下图:- 应用实例:
案例: 采用more查看more /etc/profile文件
9.5.12 less指令
- 说明:
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示
,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
。- 基本语法:
less 要查看的文件- 操作说明:
- 应用实例:
案例: 采用less查看一个大文件,比如大型日志文件
。
9.5.13 >指令和>>指令
- 说明:
> 输出重定向
和>> 追加
- 基本语法:
1) ls -l > 文件 (功能描述:把列表的内容写入文件a.txt中(覆盖写),如果文件a.txt不存在就创建并写入,如果文件a.txt存在就覆盖写)
2) ls -al >> 文件 (功能描述:那列表的内容追加到文件aa.txt的末尾)
3) cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
4) echo "内容" >> 文件- 应用实例:
案例1:将/home/
目录下的文件列表写入到/home/info.txt
中
命令:ls –l /home/ > /home/info.txt
[如果文件不存在,则会自动创建后再写入]
案例2:将当前日历信息追加到/home/mycal
文件中
命令:date >> /home/mydate
或者cal >> /home/mycal
9.5.14 echo指令
- 说明:
echo 用于输出内容到控制台。- 基本语法:
echo [选项] [输出内容]- 应用实例:
案例1:使用echo指令输出环境变量,输出当前的环境路径。
案例2:使用echo指令输出文"Hello World"。![]()
9.5.15 head指令
- 说明:
head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。- 基本语法:
1) head 文件 (功能描述:默认查看文件头10行内容)
2) head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)- 应用实例:
案例:查看 /etc/profile 的前面5行代码。
9.5.16 tail指令
- 说明:
tail 用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。- 基本语法:
1) tail 文件 (功能描述:默认查看文件后10行内容)
2) tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)该命令在工作中经常用。- 应用实例:
案例1:查看 /etc/profile文件 最后5行的内容
案例2:实时监控某文件,看到当该文件有变化时,就会实时看到变化。
最常使用查看tomcat启动日志文件命令:tail -f logs/catalina.out
9.5.17 ln指令
- 说明:
软链接[link]也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径。- 基本语法:
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)- 应用实例:
案例1:在/home/
目录下创建一个软连接,名为 linkToRoot,连接到/root/
目录
ln -s /root/ linkToRoot
案例2: 删除软连接 linkToRoot
rm –rf linkToRoot
注意:删除软连接的时候,不要带正斜杠!否则会删除掉软连接对应的目录!- 细节说明:
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
9.5.18 history指令
- 说明:
查看已经执行过历史命令,也可以执行历史指令。- 基本语法:
history (功能描述:查看已经执行过历史命令)- 应用实例:
案例1:显示所有的历史命令。history
案例2:显示最近使用过的10个指令。history 10
案例3:执行历史编号为5的指令:!5。``
9.6 时间日期类相关的指令
9.6.1 date指令-显示当前日期
- 说明:
显示当前日期- 基本语法:
1) date (功能描述:显示当前时间)
2) date +%Y (功能描述:显示当前年份)
3) date +%m (功能描述:显示当前月份)
4) date +%d (功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)- 应用实例:
案例1:显示当前时间信息。
案例2:显示当前时间年月日。
案例3:显示当前时间年月日时分秒。
9.6.2 date指令-设置日期
- 基本语法:
date -s 字符串时间- 应用实例:
案例1:设置系统当前时间,比如设置成 2020-11-11 11:22:22
9.6.3 cal指令-显示日历搜索查找类
- 说明:
查看日历指令- 基本语法:
cal [选项](功能描述:不加选项,显示本月日历)- 应用实例:
案例1:显示当前日历。
案例2:显示2050年日历。
9.7 搜索查找类相关的指令
9.7.1 find指令
- 说明:
find指令 用于将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。- 基本语法:
find [搜索范围] [选项]- 选项说明:
- 应用实例:
案例1:按文件名:根据名称查找/home/
目录下的 hello.txt文件
find /home/ -name hello.txt
案例2:按拥有者:查找/opt目录下,用户名为nobody的文件
find /opt/ -user nobody
案例3:查找整个linux系统下大于10M的文件(+n 大于、-n 小于、n 等于)
find / -size +10M
(注意:k要小写,M要大写)
9.7.2 locate指令
- 说明:
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
。- 基本语法:
locate 搜索文件- 特别说明:
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。- 应用实例:
案例1:请使用locate指令快速定位 hello.txt 文件所在目录
updatedb
// 创建locate的数据库
locate hello.txt
9.7.3 grep指令和管道符号|
- 说明:
grep 过滤查找,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。- 基本语法:
grep [选项] 查找内容 源文件- 常用选项:
- 应用实例:
案例1:请在 /etc/profile 文件中,查找 "if" 所在行,并且显示行号。
cat /etc/profile | grep -n if
[在/etc/profile 中查找 if ,并显示行,区别大小写]
cat /etc/profile | grep -ni if
[在/etc/profile 中查找 if ,并显示行,不区别大小写]
9.8 压缩和解压类相关的指令
9.8.1 gzip/gunzip 指令
- 说明:
gzip 用于压缩文件,gunzip 用于解压文件。- 基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)- 特别说明:
当我们使用gzip对文件进行压缩后,不会保留原来的文件。- 应用实例:
案例1:gzip压缩,将 /home/ 下的 hello.txt文件 进行压缩
案例2:gunzip压缩,将 /home/ 下的 hello.txt.gz文件 进行解压缩
9.8.2 zip/unzip 指令
- 说明:
zip 用于压缩文件,unzip 用于解压的,这个在项目打包发布中很有用的。- 基本语法:
zip [选项] xxx.zip 需要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] xxx.zip 需要解压缩的内容(功能描述:解压缩文件的命令)- zip的常用选项:
-r :递归压缩,即压缩目录。- unzip的常用选项
-d :指定解压后文件的存放目录。- 应用实例:
案例1:将 /home/ 下的 所有文件进行压缩成 mypackage.zip [退出home]
zip -r mypackage.zip /home/
案例2:将 mypackge.zip 解压到 /opt/tmp/ 目录下
unzip –d /opt/tmp/ mypackage.zip
[如果/opt/tmp/ 目录不存在,会自动创建]
9.8.3 tar 指令
- 说明:
tar 是打包指令,最后打包后的文件是 xxx.tar.gz 的文件。[可以压缩,和解压缩]- 基本语法:
tar [选项] xxx.tar.gz 打包的内容/目录 (功能描述:打包目录或文件,压缩后的文件格式 xxx.tar.gz)- 选项说明:
- 应用实例:
案例1:压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz,命令tar -zcvf a.tar.gz a1.txt a2.txt
案例2:将 /home/ 文件夹压缩成 myhome.tar.gz,命令tar -zcvf myhome.tar.gz /home/
案例3:将 a.tar.gz 解压到当前目录,命令tar -zxvf a.tar.gz
案例4:将 myhome.tar.gz 解压到 /opt/tmp2/目录下,命令tar -zxvf myhome.tar.gz -C /opt/tmp2/
- 特别说明:
解压到指定目录的前提:指定目录先要存在!如果指定目录没有,会报错!
【转载文章务必保留出处和署名,谢谢!】