一、 背景
最近在学习分布式计算,涉及到服务器,而当今绝大多数服务器都是使用linux操作系统,在学习分布式计算的过程中,就要求我对linux比较熟悉。但是经过上次安装docker与hadoop环境,我发现我的linux功底还是不够,只是个入门级别,在安装过程中,很多路径和命令都要现查,这很费时间。
考虑到这一周在实习,时间比较紧张,所以我抽碎片时间从头学习了一部分linux的常用知识,想把之后大块的时间留给分布式计算的学习和研究。
二、 学习目标
掌握linux的文件目录,明白每个目录的意义;能够熟练掌握并记忆linux常用的指令,用到的时候不用去网上查;学习vim的常用操作,提升编辑文档的效率。
三、 学习内容
做一个类比,学习命令行的linux常用命令,其实对应于学习windows窗口界面中常用的操作,只不过操作目的一样,操作方法不一样而已。
1. 文件目录学习
在linux系统中,常用的目录有10个:bin, dev, etc, home, proc, root, sbin, tmp, usr, var,这些目录分别有着不同的含义与作用。
bin目录(binary):
存储的都是二进制文件,文件都是可以被运行的,可以理解为可执行程序。
dev目录:
存放的是一些外接设备(外设),比如硬盘、U盘、光盘、移动硬盘等。但是在这个目录下,不能直接使用这些外设,想要使用这些外设,需要先挂载。当我们把一些外设接到电脑上之后,linux会默认把这些外设放到dev里面去,并且没有为之分配盘符,需要我们去挂载,类似windows下的分配盘符操作。
etc目录:
存放一些配置文件,比如网站的解析软件、数据库的配置文件等。
home目录:
类似于windows的user目录,存放除了root用户之外的其它用户的文件。
proc目录(process):
进程目录,存储linux运行过程中的进程。
root目录:
root用户的目录,存放root用户的文件,权限比一般的用户高,一般可以通过命令 cd /root,或直接 cd ~ 来切换到此目录。
sbin目录(superblockbin):
存放一些可以被执行的二进制文件(可执行文件),但是相比bin目录中的文件,若想运行,用户必须有super权限,典型的如halt、shutdown、firewalld,都只有超级管理员才可以运行。
tmp目录:
存放临时文件,如系统运行过程中产生的运行文件,在系统运行完毕后,系统会自动删除其中的内容。
usr目录:
存放用户自己安装的软件,类似于windows的program files。
var目录:
存放程序或系统的日志文件,主要就是存放日志。
mnt目录(mount):
当外接设备需要挂载的时候,就挂在到mnt目录下,我们在访问硬盘等外设时,都是访问mnt目录下的设备。
2. 常用指令学习
这个模块,我的学习过程是:
1)先学习(或复习)最基本的linux指令;
2)围绕安装docker与hadoop过程中用到的指令,继续深入学习。
yum系列:
在docker与hadoop的安装部署过程中,用到最多的命令就是yum系列的命令。
yum install __ -y 顺畅安装,相当于在过程中的所有提示中输入yes;
yum clean all 删除所有缓存的包和头文件;
yum makecache 存为缓存;
yum update yum更新;
yum list 列出当前系统中安装的所有包;
rpm包下载安装相关:
在安装部署hadoop的镜像的过程中,需要安装hadoop环境依赖,rpm指令在这个过程中是我主要用到的。
rpm -ivh rpm包 安装一个rpm包
rpm -ivh --nodeeps rpm包 安装一个rpm包并忽略依赖关系警告
rpm -Uvh yum源 下载并安装网上的rpm包
rpm rpm包 更新
rpm -qa 显示系统中所有已经安装的rpm包
压缩包相关操作:
在多次尝试通过命令行直接下载最新的JDK都失败后,最终决定使用winscp软件来传输JDK压缩包:
在把JDK文件传输到linux虚拟机上后,复制到相关文件夹并解压,用到了以下命名。
tar cvf 包名 原包 压缩为tar包
tar xvf 包名.gz.tar 解压tar包,后面接压缩到什么目录在,默认为当前目录
rar a 包名 原包 压缩为rar包
rar x 包名.rar 解压rar包 ,后面接压缩到什么目录中,默认为当前目录
zip 包名 原包 压缩为zip包
unzip 包名.zip 解压zip包,后面接压缩到什么目录中,默认为当前目录
最后,还学习了一些常用的快捷键:
clear 或 ctrl+l:清屏
ctrl + c 停止进程
ctrl + z 终止程序
tab键 补写文件名
ctrl +alt、ctrl +alt+g
3. vim学习
主要参考资料为:
https://www.bilibili.com/video/BV164411P7tw?from=search&seid=2850687576970723844
其中讲的很详细,具体学习到的内容,这里就不赘述了,学到会用就行。
四、 收获与心得
可以说这次的学习过程,是上次安装docker与hadoop过程中发现自己linux功底还需要提升的一个体现。以前对linux的认识,只停留在,记住了一些最最基本的指令,其他很多常用指令都没有记住,很多时候都是要根据要实现的目标在网上现查,很浪费时间。但是这周抽取碎片时间,系统地把linux的文件目录结构、常用指令以及vim编辑器的操作都学习了之后,我一下感觉我和linux更容易“交流”了,打个形象的比方,以前,我想对linux说句话,需要先借助百度这个“翻译工”来传达,但通过这次的学习,我已经可以直接与linux“对话”了,效率确实提升了不少。
值得一提的是,下周我们的实习,主要就是要搭配基于云服务器的hadoop环境,并且基于hadoop分析Access日志,我可以询问公司的工程师相关的问题,这对我来说是非常难得的学习机会。
五、 参考资料
https://www.bilibili.com/video/BV1Sp411o7Dx?p=14
https://www.bilibili.com/video/BV1Xa4y1v7AP?from=search&seid=16892752586997990530
https://www.bilibili.com/video/BV1mW411i7Qf?p=1
https://www.bilibili.com/video/BV164411P7tw?from=search&seid=9012675908429642974