万字长文|大数据学前准备之Linux入门笔记(附资料)

2021-10-14 16:09:40 浏览数 (1)

对于大数据学习而言,Linux运维可以说是必备的技能。可以不研究的过于高深,但是基本的操作和使用一定要熟练。Linux的学习需要大量的实践,本文从linux的基本知识,实战操作,到常用的指令与软件安装等都有总结。

也是为了在掌握Linux的同时,也为今后的大数据学习做好准备。文章较长,建议收藏

相关学习资料可以通过下面的方式下载,本文只是整理了大数据会用到的linux基本知识,有精力的同学可以通过相关书籍进行更深入的学习。

本文共九章,从最基础到实际操作,希望大家多动手,多练习。

零、计算机与操作系统

确实有很多的朋友是非计算机相关专业的,但是也要接触Linux。

如果直接进入系统的学习是有一定难度的,所以就有计算机基础的章节,大佬们可以忽略本章。。。

1、电脑是什么?

我小的时候电脑还是个稀有的物件,大概是初中的时候,家里才有一个第一个台式机,而现在几乎家家都有一台电脑了。

电脑的定义不用多说,可以协助人们做大量的运算。通过输入的设备把信息传递给他,他经过运算就可以将计算结果反馈出来。

所以,观察一下电脑,台式机比较明显,笔记本都整合在了一起,但其实就分为三部分:

输入单元:键盘,鼠标等等

主机部分:看不见的那部分,里边有CPU,内存等等

输出单元:屏幕,打印机等等

好了,这三部分理解了以后,就差主机里边的东西不好理解,这也很多同学买电脑被坑的主要部位。。

这里有一个形象的比喻,来说明主机部分的几个硬件的作用:

CPU:脑袋瓜子——判断和控制身体各部分的活动

内存:脑袋中放置正在被思考的数据的区块——有点绕,比如环境,语言这些互动的信息,需要进行思考和处理的

硬盘:脑袋中的记忆区块——和内存不同,回忆就放在了记忆深处

主板:神经系统——把所有重要的元件连接起来

显卡:脑袋中的影像——将眼睛看见的转化成影像

电源:心脏——提供动力

可见最重要的就是CPU了,而这些设备都有计算单位(容量,速度等等)

容量单位:电脑对数据判断是通过电路的通电与否,所以只认识 0和1。0/1这个单位称之为bit。bit太小了,所以每份数据用8个bits来记录。

1 Byte = 8 bits 不过随着数据越来越大Byte也不够用,就有了下面的一切

也就是常说的 KB MB GB。。。

2、电脑架构与各种设备元件

下面简单说一下电脑的架构,买电脑的时候会用到。

CPU主要型号有Intel和AMD两个品牌。随着发展呢,性能也在不断的提高,就是计算的速度了,虽然这个比较复杂,但是CPU的性能排名被整理了出来,称之为天梯图,好坏很清晰的就能看出来。

笔记本CPU天梯图_2021最新笔记本CPU性能排行天梯图-太平洋电脑网diy.pconline.com.cn/tiantitu/nbcpu/

内存也是经过了一定的发展,最近的内存都是DDR(Double Data Rate)类型了,分为DDR2、DDR3、DDR4。听说DDR5也快出来了。数据越大,速度就越快。

内存多通道设计,内存要传输数据,宽度当然是越大越好,这就有了双通道的设计。所以大多主板上会有两个8GB的内存条,而不是一个16GB的。

显卡对图形的显示至关重要,如果电脑要用来打游戏,画面不断的变化,还有3D效果,那就要主要显卡的选择了,同样显卡也有天梯图。

显卡天梯图_显卡性能天梯图_2021最新显卡排行天梯图-太平洋电脑网diy.pconline.com.cn/tiantitu/gpu/

硬盘与存储设备。电脑总需要记录和读取数据的。比如软盘(暴露年龄的),硬盘,u盘,光盘等等。硬盘是圆形的,需要转动来进行读写。为了提升硬盘传输速度,硬盘与主板的连接接口也经过了多次的改版。

SATA接口的速度对比

SATA接口由于物理限制,最高也就到200的速度,所有就需要固态硬盘了。

SAS接口

SAS过于昂贵,目前大部分还是SATA接口。

USB接口

固态硬盘(Solid State Disk,SSD)

传统硬盘的速度有瓶颈,后来就有产商拿闪存去做大容量的设备。由于不像硬盘那样转动来读写,速度非常的快。

主板为各种设备提供了连接接口,这里有两个概念要注意一下。CMOS与BIOS

CMOS的功能是记录主板上的重要参数。BIOS是可以修改这些参数的程序,一般电脑开机按DEL键就能进入。

当然还有外接设备等知识,这里不做赘述。

3、数据的表示方式

电脑只认识0和1,那么就需要一些表达方式和人类建立联系。

数字系统

一个简单的例子,将十进制表示为二进制。

文字编码系统

文字是通过一定的编码标准,将01转化为文字。

常见的英文编码表示 ASCII系统 每个符号(英文 数字 符号)占用1bytes的记录,这样就有了256种变化。

中文编码经过了一段时间发展,目前大多采用UTF8编码。

4、软件程序运行

有了硬件,就要让软件运行了,要不电脑的功能就无从发挥。软件分为两类 系统软件 和 应用软件。不过了解软件前,先要了解程序。

机器程序与编译程序

电脑只认识0 1 ,CPU就根据指令对 01做运算。但这样有很大的问题,人类无法直接的理解一堆01的意义,而且也不了解机器的指令,而且这种程序无法携带保存,而且这个过程中要和硬盘各种打交道。为了解决这个问题,就需要让人类写简单的程序,然后通过编译器将这些程序转化为机器程序。

这就是编程语言了,比如JAVA,Python,C等等。

操作系统

把人类写的程序,转化为机器程序,把程序放进内存,执行,并且可以操作各种硬件。这个过程固定重复,所有操作系统就出现了,来解决这一系列的问题。

操作系统(Operating System)其实也是一组程序,但他的重点是管理电脑的各种活动让电脑的一切硬件正常的运转,这些功能就是操作系统核心(Kernel)。为了保护核心,让程序设计师比较容易开发软件,除了核心程序之外,还会提供一组开发接口,也就是系统调用层,软件开发工程师只要遵循公认的标准开发软件,这个软件就可以在核心运行了。

这里有些绕,后面讲linux的时候会具体描述。

应用程序

应用程序是参考操作系统的开发接口所开发出来的。比如office是办公用的,影像处理软件是处理影音数据的等等。

需要注意的是,应用程序和操作系统是有关系的。这就有了兼容性的问题,比如有一些软件就没有办法在mac系统中跑。

一、Linux概述

1991年托瓦斯(Linux Torvalds)开发了Linux的原型,随后Linux迅速的发展,本章就来了解下Linux的历史。

Linux就是一套操作系统。可以与硬件设备交互,也就是说可以部署在手机,电脑,服务器等等设备中。开发者就可以在Linux进行各种软件的研发了。

Linux是开源的,Linux的发展史上非常的有趣,下面我们来回顾一下。

UNIX

早在Linux出现之前二十年,1969年,就有一个稳定的操作系统存在,也就是UNIX。

早期的计算机昂贵,并不是个人能拥有的。都是用于军事或者科技研究,写程序也非常的吃力,多人同时使用都是个大问题。1969年,贝尔实验室的Ken Thompson用组合语言写出了核心程序,将其称为Unics。这个系统提供了一些小工具和文件系统,这就是unix的雏形了。

1973年,Thompson与Ritchie合作,用C语言写出了第一个正式的Unix核心,这个改变也让Unix很容易被移植到不同的机器上。

1977年,Unix的重要分支BSD诞生,增加了很多的工具和编译程序。

1979年,很多公司开始了UNIX的发展,AT&T公司的System V就是其中之一,并且将版权收了回去。

BSD 与 System V是Unix最根本的两个分支。

1984年,x86架构的Minix开始撰写并于两年后诞生。Andrew Tanenbaum教授在看到了版权问题后,决定基于X86架构自己写一套微小的Unix系统,这也就是Minix。

同年,GNU计划与FSF基金会成立。开源与自由成为了软件开发的大趋势。

无数的软件开发开始贡献自己的一份力量:https://www.fsf.org/resources

1991年,芬兰一个普通研究生购买了自己的PC,显示认真的钻研了Minix系统的代码,随后就以bash,gcc等GNU工具写了一个小小的核心程序。可以在intel的386机器上运行。

没错,就是Linus Torvalds。从此Linux横空出世。

Linux的发展

Torvalds将这个核心放在了网上,因为用了Linux这个目录,这个核心便叫做Linux了。随后Torvalds又对linux进行了不断的改造。

由于Linux是完全开源的额,很快就吸引了大量的开发者加入进来。

由于代码越来越多,Torvalds成立了核心的网站:

https://www.kernel.org/

这群素未谋面的开发者,在1994年完成Linux的核心正式版。version 1.0.

1996年完成了2.0,2011推出了3.0。2015年推出了4.0。

2019年,Linux Kernel 5.0 正式版发布。

这个Torvalds选择的可爱的小企鹅吉祥物,也越来越强大了。如今的Linux已经应用在了各种硬件设备上,电脑,手机,树莓派等等。

核心版本

后面会讲到,在centos系统中通过 uname -r 就可以获取内核版本号。

比如 3.10.0-1127.19.1.el7.x86_64

主版本.次版本.释出版本-修改版本

在2.6.X版本之前,分为两种:

主次版本为奇数:发展中版本,如2.5.xx

主次版本为偶数:稳定版本,如2.6.XX

不过从3.0版本以后,根据主线版本进行开发,比如3.10就是3.9之后的新的主线版本。

版本号:https://www.kernel.org/releases.html

请注意:后面会提到,核心版本和发布商版本 并不是一回事。

千万不要说我的linux是7.5版本。Linux的版本是3.10,而Centos的版本才是7.5.

Linux发行版

Centos又是什么呢?

Linux其实是一个操作系统最底层的核心,及一些工具。但并不是一个可以完整安装的套件。

为了让更多的人能用上Linux,很多商业公司和团体加入了进来。

简单的说 Linux Kernel 软件 工具 文档 就构成了完整的Linux发行版。

为了让这种开发不至于混乱,行业制定了一些标准来约束大家。

如FHS https://www.pathname.com/fhs/

LSB https://wiki.linuxfoundation.org/lsb/start

这种发行版大体也可以分为两类:

一种是使用RPM方式安装软件的系统:RedHat,Fedora,SuSE,CentOS等等。

另一种是使用Debian的dpkg方式安装软件的系统:Debian,Ubuntu,B2D等等。

其中 RedHat ,SuSE,Ubuntu为商业公司。

Fedora,CentOS,OpenSuSE,Debian,B2D为开源社群。

他们的官网如下:

RedHat :https://www.redhat.com/

SuSE:https://www.suse.com/

Fedora:https://getfedora.org/

CentOS:http://www.centos.org/

Debian:https://www.debian.org/

Ubuntu:http://www.ubuntu.com/

用于企业环境,大多选择商业的稳定版。

而服务器环境,可以选择Centos。

至于个人电脑,就可以选择炫酷的Ubuntu桌面版啦。

Linux的应用

Linux的应用已经非常的广泛。其实目前我们访问的手机APP,网站等等服务。大部分都是部署在Linux上的。

企业

网络服务器

这是Linux最广泛的应用。各大硬件厂商都是支持Linux的,而且Linux继承了Unix的高稳定性。

企业核心应用

比如数据库,企业内网环境等等。

高性能运算任务

可以理解为大数据运算,Linux的运算性能非常强大。

个人

桌面电脑 目前已经有很多用户在使用linux的桌面版了。

手机 安卓系统就是Google基于Linux核心做的。

嵌入式 路由,智能家电等等。

如何学习

Linux这么牛逼,是不是应该直接看一下内核源码呢?如果想深入研发可以。平时并不需要。

应该是从如何使用好Linux的角度进行学习。

学习基础

要按照下面的步骤学习,打好基础:计算机基础知识,Linux安装与指令,Linux操作系统,vi文本编辑器,Shell脚本,软件安装,网络基础。

选一本好书或者教程

这本鸟哥的Linux的私房菜非常的经典,但是内容很多。也可以通过本教程进行学习。

实践实践

实践太重要,Linux的学习不经过练习是没有任何作用的。所以一定要经常练习。之后的章节也会讲解本地虚拟机环境的搭建,让大家可以在本机上轻松练习Linux。

查找资料

解决问题的能力非常重要,在遇到问题时不要着急求助,先看看自己能不能解决,寻找解决办法。

兴趣

兴趣是最好的老师,Linux是一个非常有趣的系统,不要因为难就放弃。努力学习,会有很多的乐趣发现。

二、CentOS虚拟机环境搭建

在了解了Linux的历史以后,我们知道就要进入实战阶段了。

近些年来计算硬件发展迅速,普通的windows系统计算完全可以虚拟出一台Linux系统来。

因为硬件与操作系统本身都支持了虚拟化的技术(虚拟化技术暂不讨论,感兴趣的同学可以阅读书籍进行学习),同时一些软件支持图形化的方式快速创建虚拟机。

这也极大的方便了我们进行学习,本次我们就是要使用Vmvare软件在Win10系统中完成CentOS系统的安装,为之后的学习提供非常大的便利。

首先请准备好Vmvare软件和CentOS镜像,需要下载的同学可以在大数据流动进行软件的获取。

VMware(中文名威睿) 虚拟机软件,是全球桌面到数据中心虚拟化解决方案的领导厂商。

VMware Workstation是该公司的一款产品,可以非常方便的进行虚拟机的搭建。

安装VMware

我们使用的是VMwareWorkstation 16.1.2进行虚拟机的搭建。

打开安装包以后,按照引导一步步的进行软件的安装。

注意虚拟机安装的位置与激活产品即可。

安装Centos系统

在Vmvare中新建虚拟机,选择自定义安装。

选择稍后安装操作系统

注意选择Linux系统 CentOS7 64位,如果是其他的系统也要做对应的选择。

根据实际情况设置磁盘,内存,CPU。网络选择NAT即可,可以方便联网。

最后把镜像挂载到硬盘上,就可以安装了。

这一系列操作其实就是我们通过光盘的ISO镜像安装系统的过程,只不过是通过虚拟化的方式完成了。

此时打开虚拟机就进入了CentOS7安装页面。

设置root用户密码

重启,虚拟机安装完成!

本章我们介绍了虚拟机安装Centos操作系统的实战,为了以后可以更好的练习。

三、网络与远程连接

CentOS常见有这几种版本:

建议选择DVD ISO

标准版本安装(服务器安装推荐使用,包含一些基本的软件和图形化界面)

Mini版本,只有必要的软件,自带的软件最少(没有图形化界面),Everything带的软件比较多 很大。

安装好虚拟机进入centos系统中,看到的是这样的界面。

输入之前设置的用户名密码就可以登入。但是这相当于是看见了机器的界面,在实际工作中我们是不可能一直去机器上操作的,而是需要远程连接机器进行操作。

SSH 为Secure Shell的缩写,专为远程登录会话和其他网络服务提供安全性的协议。可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。

也就是说通过SSH就可以远程并且安全的访问机器了,CentOS默认的SSH服务就是开启的,所以我们只要进行好相关的网络配置就可以远程操作这台机器了。

网络配置

网络配置的目的就是为了让我们的本机与虚拟机的网络互通,可以彼此访问。虚拟机建立之初是没有进行这些网络设置的。

首先设置主机进行网络共享,在win10的网络设置里操作。再看一下vnet8的网络ip,我的是192.168.137.0

在vmvare的虚拟网络编辑器中,设置ip

进入虚拟机进行网卡设置 进入网卡设置目录 cd /etc/sysconfig/network-scripts/ 设置网卡 vi ifcfg-ens33 设置如下(重点是下面几个设置,固定IP)

BOOTPROTO=static

IPADDR=192.168.137.101

NETMASK=255.255.255.0

GATEWAY=192.168.137.1

ONBOOT=yes

设置完成后重启网卡

service network restart

重启后验证上网情况

ping http://www.baidu.com

如果有正常的ms返回证明成功。

此时证明虚拟机网络已通,可以远程连接操作了。

远程连接

这里推荐的是一款叫做MobaXterm的软件,使用它不仅可以远程SSH连接虚拟机。还可以把连接保存下来,这样的话,我们每次开启虚拟机,然后启动MobaXterm,就可以很方便的进行操作练习了。

软件可以在资料包中获取。

安装好以后打开MobaXterm软件,选择Session按钮,就可以新建一个远程会话。

选择SSH,并设置好IP,用户名,密码

登陆成功。左侧是文件目录,可以进行文件的上传下载操作。右侧就是CentOS系统的界面了。

现在可以进行相关的操作与练习了。

四、Linux操作命令

Linux有着非常强大的操作指令。这也是必备的技能之一。

可以理解为linux通过我们传递给它的每一条指令去完成相应的操作,本章先了解Linux命令的语法结构,再来熟悉常用的命令。

Linux命令语法结构

command [-options] parameters1 parameters2

命令1 选项2 参数3 参数4

这就是linux命令的语法,之前我们也进行网络设置的操作。

command 就是命令,后面是参数与设置。举个例子

ls是查询当前目录文件或者目录列表。不包含隐藏文件。

ls就是命令。

ls –l //显示当前目录文件详细信息,不包含隐藏文件。

-l就是设置。

cp file1 dir1 复制文件,cp是命令,后面的文件和文件夹路径就是参数。

Linux命令知识

linux的命令为什么可以在任意目录下执行,主要是由于环境变量,输入echo $PATH,可以看到,环境变量情况。

linux命令有直接向内核直接访问的内部命令。外部命令就是通过命令解析器解析为内核命令再做执行。

linux为命令设置了帮助文档。内部命令查询帮助文档:help 命令名称。

外部命令查询帮助文档:man 命令名称。

输入命令错误会有提示。

也可以通过 cp --help 这种方式来查看帮助。

快捷按键

Tab键,Tab键是linux命令最棒的功能,可以进行命令补全。

Ctrl C,可以将程序停止。

Shift page up/down,可以翻页。

Linux常用命令

下面总结linux的常用命令。

cd

功能:切换目录

语法:

cd ../ //切换上一级目录

cd ~ // 切换根目录

cd dir //切换到当前目录的dir目录

cd /root //如果是跨目录切换,必须加/

mkdir

功能:创建目录

语法:

mkdir dir //创建单个目录

mkdir dir1 dir2 //创建多个目录

mkdir dir{1..10} //创建10个目录。

pwd

功能:查询当前所在目录位置

cp:copy

功能:复制文件,或者目录

复制文件:

cp file1 file2

如果file2文件不存在,创建file2,内容也同时复制。

如果file2存在,内容覆盖。

cp file1 dir1

把单个文件file1复制目录dir1中。

cp file2 file3 dir1

把多个文件复制dir1目录

cp * dir2

把当前目录所有文件复制dir2目录

cp file* dir3

把所有以file开头文件复制dir3目录

cp ../* .

复制上一级目录文件到当前目录。

复制目录:

直接使用cp命令不能直接复制目录,不能复制复制非空目录:

cp –R dir9 dir12

如果dir12不存在,创建一个目录,复制内容。

如果dir12存在,把dir9目录复制dir12目录下面。

cp –r dir1 dir2 dir3

把dir1,dir2 复制到dir3目录中。

cp –r * dir4

把当前目录所有文件,目录复制dir4中。

cp –r ../* . //把上一级目录所有文件,或者目录复制当前目录。

cp –r dir* dir12

把所有以dir开头目录复制到dir12

mv:move

功能:剪切

mv file1 file2

如果file2不存在,他会file1重命名file2.内容不变。

如果file2存在,file1会覆盖file2。

mv file1 dir1

剪切file1文件到dir1目录。

mv file2 file3 dir1

把多个文件剪切到dir1目录中。

mv * dir3 //把所有文件,或者目录剪切到dir3目录

mv ../* . //剪切上一级目录所有文件或者目录到当前目录。

mv file* dir5

剪切所有以file开头的文件,或者目录到dir5

mv dir1 dir14

如果dir14目录不存在,重命名

存在,把dir1剪切到dir14目录。

rm:remove

功能:删除

删除文件:

rm file1

删除file1

rm –f file2

强制删除file2 ,不提示。

rm –f file3 file4

强制删除多个文件

rm –f *

删除当前目录所有文件

rm –f file*

删除当前目录所有以file开头的文件

rm –f ../*

删除上一级目录所有文件

删除目录:

rm –rf dir1

-r:递归删除

-f:强制不提示

递归强制删除dir1目录。

rm –rf dir2 dir3

删除多个目录

rm –rf *

删除当前目录下所有文件或者目录。

rm –rf ../*

删除上一级目录所有文件,或者目录。

rm –rf file*

删除所有以file开头文件或者目录。

touch

功能:创建文件

语法:

touch file1

创建单个文件

touch file2 file3

创建多个文件

touch file{1..10}

创建以file开头的10个文件。

cat

功能:查看文件,合并文件。

查看文件:

语法:cat filename

特点:cat查询文件全部内容。适合查询小文件。

添加文件:

语法:cat > filename

功能:创建文件fileName,并且光标阻塞,输入内容到文件。

合并文件:

语法:cat file1 file2 > file3

功能:把file1 flie2文件内容合并到文件file3,文件file3原有内容被覆盖。

more

功能:查看文件

特点:分页查询文件

语法:

more myfile

分页查看文件

more 6 myfle

从第6行开始分页显示文件

more -6 myfile

分页查看,每页显示6条

less:

功能:查询文件

特点:自由上下翻页

语法:less myfile

which

功能:查询命令

特定:查询命令别名,命令所在目录。

语法:which 命令

whereis

功能:查询命令

特点:命令名称,命令所在目录,命令帮助文件,命令源代码。

语法:whereis 命令

locate

功能:查询文件

特点:不能查询新文件,Linux创建新文化在Linux文件数据库中,需要更新updatedb。

语法:locate 文件名称。

head

功能:查看文件

特点:从文件头部开始查看文件

语法:

head –n 10 myfile

查询文件myfile,每页显示10条

head –c 20 myfile

查询前20个字节。

tail

功能:实时监控文件变化

语法:tail –f filename

find

功能:查找文件

语法:

find path -option [ -print ] [ -exec -ok command ] {} ;

命令:

find –name “myfile”

这个命令和下面命令基本相同,但是使用正则表达式查询,需要加引号。

find –name myfile

find /etc –name “yum”

查询指定目录etc目录下面yum文件。

find /root /etc –name “yum”

查询多个目录里面yum文件。

find /root /etc –name “[A-Z]*”

查询指定目录下所有以大写字母A-Z开头所有文件。

-exec:执行

把前面命令执行结果交给后面命令执行。

find /root/ /etc/ -name "[A-Z]*" -exec ls -al {} ;

n 查询所有A-Z大写字母开头所有文件,交给ls命令执行。

n {} : 表示查询结果在一行进行显示

n ; 命令需要分号结束,使用斜杠转义。

|

命令名称:管道命令

功能:把前面命令执行结果交给后面命令执行。

例子:ls –al | more -6

grep

功能:过滤查询

语法:

find /root/ /etc/ -name "[A-Z]*" -exec ls -al {} ; | grep S95atd

查询所有大写字母A-Z开头的文件详细信息,并过滤出S95atd文件。

ps –ef | grep svn

ps –ef | grep mysql

ln

功能:创建快捷方式

语法:ln –s myfile link

含义:给myfile创建一个快捷方式,快捷方式的名称link。

top

top显示当前系统中耗费资源的进程情况

top //每隔5秒显式所有进程的资源占用情况 top -d 2 //每隔2秒显式所有进程的资源占用情况 top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况

ps

功能:查询进程

语法:ps –ef | grep 进程名称

-e:显示所有进程

-f:全格式显示进程。

kill

功能:杀死进程

语法:kill -9 PID

df

功能:显示当前资源占用情况

语法:df

df –h //可以显示单位。

gzip

功能:解压缩文件

语法:

压缩语法:

gzip myfile

压缩单个myfile文件,myfile.gz

gzip file1 file2

压缩多个文件。File1.gz file2.gz

gzip *

压缩当前目录所有文件

gzip file*

压缩以file开头所有文件

gzip ../*

压缩上一级目录所有文件

gzip ../../*

压缩上上一级目录所有文件。

解压语法:

第一种方式:

gunzip *

解压当前目录所有以gzip压缩的文件。

gunzip myfile.gz

gunzip file1.gz file2.gz

gunzip ../*

gunzip file*

第二种方式:

gzip –dv myfile.gz

解压单个文件myfile.gz

-d:解压

-v:显示解压过程

gzip –dv file1.gz file2.gz

gzip –dv *

gzip –dv ../*

gzip –dv file*

bzip2

语法:

压缩语法:

bzip2 myfile

压缩单个myfile文件,myfile.bz2

bzip2 file1 file2

压缩多个文件。File1.bz2le2.bz2

bzip2 *

压缩当前目录所有文件

bzip2 file*

压缩以file开头所有文件

bzip2 ../*

压缩上一级目录所有文件

bzip2 ../../*

压缩上上一级目录所有文件。

解压语法:

第一种方式:

bunzip2*

解压当前目录所有以gzip压缩的文件。

bunzip2 myfile.gz

bunzip2 file1.gz file2.gz

bunzip2 ../*

bunzip2 file*

第二种方式:

bzip2 –dv myfile.bz2

解压单个文件myfile.bz2

-d:解压

-v:显示解压过程

bzip2 –dv file1.bz2 file2.bz2

bzip2 –dv *

bzip2 –dv ../*

zip

压缩语法:

zip myzip.zip myfile

把myfile压缩成myzip.zip

zip myzip.zip

解压使用zip命令压缩文件。

tar

功能:打包命令,可以把目标打包。

可以压缩包文件。

1.命令格式:

tar[必要参数][选择参数][文件]

2.命令功能:

用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的

3.命令参数:

必要参数有如下:

-A 新增压缩文件到已存在的压缩

-B 设置区块大小

-c 建立新的打包文件

-d 记录文件的差别

-r 添加文件到已经压缩的文件

-u 添加改变了和现有的文件到已经存在的压缩文件

-x 从压缩的文件中提取文件

-t 显示压缩文件的内容

-z 支持gzip解压文件

-j 支持bzip2解压文件

-Z 支持compress解压文件

-v 显示操作过程

-l 文件系统边界设置

-k 保留原有文件不覆盖

-m 保留文件不被覆盖

-W 确认压缩文件的正确性

可选参数如下:

-b 设置区块数目

-C 切换到指定目录

-f 指定打包文件

--help 显示帮助信息

--version 显示版本信息

常见解压/压缩命令

tar

解包:tar -xvf FileName.tar 打包:tar -cvf FileName.tar DirName (注:tar是打包,不是压缩!)

解压gzip压缩tar包

语法:tar –zxvf mytar.tar.gz

-z : 解压gz

-x:解包tar

-v:显示解压过程

-f:指定解压文件。

vim编辑器

vi有3个模式:插入模式、命令模式、低行模式。

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。命令模式:可以移动光标、删除字符等。低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

打开文件、保存、关闭文件(vi命令模式下使用)

vi filename //打开filename文件 :w //保存文件 :w vpser.net //保存至vpser.net文件 :q //退出编辑器,如果文件已修改请使用下面的命令 :q! //退出编辑器,且不保存 :wq //退出编辑器,且保存文件

shift z z //快捷方式必须在命令模式执行。

插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

a //在当前光标位置的右边添加文本 i //在当前光标位置的左边添加文本 A //在当前行的末尾位置添加文本 I //在当前行的开始处添加文本(非空字符的行首) O //在当前行的上面新建一行 o //在当前行的下面新建一行 R //替换(覆盖)当前光标位置及后面的若干文本 J //合并光标所在行及下一行为一行(依然在命令模式)

移动光标(vi命令模式下使用)

1、使用上下左右方向键

2、命令模式下:h 向左、j 向下 、k 向上、l 向右。空格键 向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首。

删除、恢复字符或行(vi命令模式下使用)

x //删除当前字符 nx //删除从光标开始的n个字符,n代表数字 dd //删除当前行 ndd //向下删除当前行在内的n行 u //撤销上一步操作 U //撤销对当前行的所有操作

搜索(vi命令模式下使用)

/vpser //向光标下搜索vpser字符串 ?vpser //向光标上搜索vpser字符串 n //向下搜索前一个搜素动作 N //向上搜索前一个搜索动作

跳至指定行(vi命令模式下使用)

n //向下跳n行 n- //向上跳n行 nG //跳到行号为n的行 G //跳至文件的底部

设置行号(vi命令模式下使用)

:set nu //显示行号 :set nonu //取消显示行号

复制、粘贴(vi命令模式下使用)

yy //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。nyy //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。yw //复制从光标开始到词尾的字符。nyw //复制从光标开始的n个单词。y^ //复制从光标到行首的内容。VPS侦探 y$ //复制从光标到行尾的内容。p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap 进行粘贴。P //粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用"aP 进行粘贴。

替换(vi命令模式下使用)

:s/old/new //用new替换行中首次出现的old,只针对光标所在行 :s/old/new/g //用new替换行中所有的old,行 :n,m s/old/new/g //用new替换从n到m行里所有的old,范围替换 :%s/old/new/g //用new替换当前文件里所有的old,全局替换

用户和组账户管理

linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰

保存用户信息的文件:/etc/passwd

保存用户组的文件:/etc/group

保存用户组密码的文件:/etc/gshadow

Linux用户分类

超级用户:(root,UID=0)

普通用户:(UID在500到60000)

伪用户:(UID在1到499)

伪用户不能登陆系统,而且没有宿主目录

操作用户命令

添加用户(useradd)

添加用户命令:useradd [-选项] 用户名

-u 指定用户ID(uid)

-g 指定所属的组名(gid)

-G 指定多个组,用逗号“,”分开(Groups)

-c 用户描述(comment)

-e 失效时间(expire date)

更新用户(usermod)

修改用户命令:usermod(user modify)

-l 修改用户名 (login)usermod -l a b(b改为a)

-g 添加组 usermod -g sys

-G添加多个组 usermod -G sys,root tom

–L 锁定用户账号密码(Lock)

–U 解锁用户账号(Unlock)

删除用户(userdel)

删除用户命令:userdel(user delete)

-r 删除账号时同时删除目录(remove)

操作用户组命令

添加组(goupadd)

添加组:groupadd

-g 指定gid

修改组(groupmod)

修改组:groupmod

-n 更改组名(new group)

删除组(groupdel)

删除组:groupdel

groups 显示用户所属组

五、Linux目录结构

登录系统后,在当前命令窗口下输入命令:

ls /

你会看到如下图所示:

树状目录结构:

以下是对这些目录的解释:

/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:该目录存放一些服务启动之后需要提取的数据。

/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

· sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:这个目录是用来存放一些临时文件的。

/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc:上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var:这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

六、Linux软件安装

Linux系统软件安装方式

Linux上的软件安装有以下几种常见方式:

1、二进制发布包

软件已经针对具体平台编译打包发布,只要解压,修改配置即可

2、RPM发布包

软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装

3、Yum在线安装

软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题

(注:类似于maven)

4、源码编译安装

软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署

软件安装有一个技巧,大家搜索的时候一定要指定好版本和系统,不然会有很多坑,举个例子。

JDK安装

1、上传jdk压缩包

2、解压jdk压缩包

tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local/

3、修改环境变量PATH

vi /etc/profile

在文件最后加两行:

export JAVA_HOME=/usr/local/jdk1.7.0_67

export PATH=PATH:JAVA_HOME/bin

4、让环境变量生效

source /etc/profile

即可

Mysql安装

由于CentOS7的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。

下载命令:wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

然后进行yum源的安装:

rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安装完成后,就可以使用yum命令安装mysql了:

yum -y install mysql-server

启动mysql:

systemctl start mysqld

查看mysql状态:

systemctl status mysqld

获取mysql的临时密码:

grep 'temporary password' /var/log/mysqld.log

登录mysql:(密码为上一步骤获取的临时密码)

mysql -u root -p(此处不用输入密码,按下回车后会专门要你再输入密码的)

登录成功后,做任何操作都会被要求先修改密码

show databases;

请注意:如果修改的密码太过简单,依然会提示error,修改失败

因为5.7及以上版本的数据库对密码做了强度要求,默认密码的要求必须是大小写字母数字特殊字母的组合且至少要8位长度

ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';

按照系统的默认要求,修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '-520Lemon-';

修改完成后,即可愉快的操作数据库:

show databases;

七、Yum命令

yum命令非常的重要,在大数据集群安装过程中也会频繁使用。所以单独来说明一下如何使用。

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum 语法

yum [options] [command] [package ...]

· options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。

· command:**要进行的操作。

· package**操作的对象。


yum常用命令

· 1.列出所有可更新的软件清单命令:yum check-update

· 2.更新所有软件命令:yum update

· 3.仅安装指定的软件命令:yum install

· 4.仅更新指定的软件命令:yum update

· 5.列出所有可安裝的软件清单命令:yum list

· 6.删除软件包命令:yum remove

· 7.查找软件包 命令:yum search

· 8.清除缓存命令:

· yum clean packages: 清除缓存目录下的软件包

· yum clean headers: 清除缓存目录下的 headers

· yum clean oldheaders: 清除缓存目录下旧的 headers

· yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

实例

安装 pam-devel

代码语言:javascript复制
[root@www ~]# yum install pam-develSetting up Install ProcessParsing package install argumentsResolving Dependencies <==先检查软件的属性相依问题--> Running transaction check---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel--> Running transaction check---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated

filelists.xml.gz      100% |=========================| 1.6 MB   00:05

filelists.xml.gz      100% |=========================| 138 kB   00:00-> Finished Dependency Resolution……(省略)

国内 yum 源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份)

· CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo

· CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo

运行以下命令生成缓存

yum clean all

yum makecache

成功!

八、Shell编程

Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell

Shell也是一门编程语言<解释型的编程语言>**,即shell脚本<就是在用linux的shell命令编程>

一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的

代码写在普通文本文件中,通常以 .sh为后缀名

代码语言:javascript复制
vi hello.sh


!/bin/bash   ## 表示用哪一种shell解析器来解析执行我们的这个脚本程序

echo "hello world"

执行脚本

sh hello.sh

或给脚本添加x权限,直接执行

chmod 755 hello.sh

./hello.sh

Linux Shell中的变量分为“系统变量”和“用户自定义变量”

可以通过set命令查看系统变量

系统变量:HOME、PWD、SHELL、USER等等

Linux Shell中的变量分为“系统变量”和“用户自定义变量”

可以通过set命令查看系统变量

变量

shell可以自定义变量

变量=值 (例如STR=abc)

A=ls -la ## 反引号,运行里面的命令,并把结果返回给变量A

A=$(ls -la) ## 等价于反引号

$? 表示上一个命令退出的状态码

$$ 表示当前进程编号

$0 表示当前脚本名称

$n 表示n位置的输入参数(n代表数字,n>=1)

$# 表示参数的个数,常用于循环

*和@ 都表示参数列表

运算符

expr m n 或$((m n)) 注意expr运算符间要有空格

用(()) ((1 2))

[] a=[1 2]

流程控制

if

代码语言:javascript复制
if condition
then
    statements
[elif condition
    then statements...]
[else
 statements ]
fi

while

代码语言:javascript复制
while expression
do
command
…
done

for

代码语言:javascript复制
for N in 1 2 3
do
    echo $N
done
或
for N in 1 2 3; do echo $N; done
或
for N in {1..3}; do echo $N; done

函数

代码语言:javascript复制
#!/bin/sh
# func1.sh
hello()    ## 函数定义
{
        echo "Hello there today's date is `date  %Y-%m-%d`"
        # return  2      ###返回值其实是状态码,只能在[0-255]范围内
}   
hello
# echo $?  获取函数的return值  
echo "now going to the function hello"
echo "back from the function"

函数调用:
function hello()  
或 function hello
或 hello

也是应很多初学者的建议,整理了这篇文章。从操作系统到Linux的实践,进行了笔记记录。主要是为以后的大数据学习做好准备。掌握了Linux的基础,并具有一定的编程基础,就可以进行大数据的学习和大数据集群环境的安装了。

请关注大数据流动后续的文章。

0 人点赞