对于大数据学习而言,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命令模式下使用)

/old/new //用new替换行中首次出现的old,只针对光标所在行 /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 <package_name>

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

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

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

· 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

[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/(操作前请做好相应备份)

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

· CentOS6http://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为后缀名

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

if condition
then
statements
[elif condition
then statements...]
[else
statements ]
fi

while

while expression
do
command

done

for

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

函数

#!/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的基础,并具有一定的编程基础,就可以进行大数据的学习和大数据集群环境的安装了。

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

万字长文|大数据学前准备之Linux入门笔记(附资料)的更多相关文章

  1. 大数据学习路线之linux系统基础搭建

    学习大数据是必须掌握一定Linux知识的,工欲善其事,必先利其器.在学习之前,首先需要搭建Linux系统,本节将讲解VMware Workstation的安装和CentOS 7系统的安装. 1.2.1 ...

  2. 《Hadoop大数据架构与实践》学习笔记

    学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心:     #,HDFS,分布式文件系统 ...

  3. 大数据入门第二十天——scala入门(一)入门与配置

    一.概述 1.什么是scala  Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序. ...

  4. GIS-"地理空间大数据与AI的碰撞"学习笔记

    1.关系 人工智能>机器学习>神经网络>深度学习 2.机器学习-两个过程 训练/学习过程:样本数据.学习器.模型参数 测试/预测过程:预测.预测值 3.神经网络 机器学习模拟人脑神经 ...

  5. 大数据学习之Hadoop快速入门

    1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效 ...

  6. 《大数据日知录》读书笔记-ch1数据分片与路由

    目前主流大数据存储使用横向扩展(scale out)而非传统数据库纵向扩展(scale up)的方式.因此涉及数据分片.数据路由(routing).数据一致性问题 二级映射关系:key-partiti ...

  7. “网易大数据讲堂第一期:数说”直播活动资料:课程回放收看及PPT下载

    欢迎访问网易云社区,了解更多网易技术产品运营经验. "网易大数据讲堂第一期:数说"直播活动昨晚顺利举行.感谢各位"数"友的支持和参与. 本次活动PPT可点击这里 ...

  8. hadoop大数据平台安全基础知识入门

    概述 以 Hortonworks Data Platform (HDP) 平台为例 ,hadoop大数据平台的安全机制包括以下两个方面: 身份认证 即核实一个使用者的真实身份,一个使用者来使用大数据引 ...

  9. Linux 入门笔记

    一开始对linux总有些抵触,黑黑的命令框不知道如何下手,这次因为工作交接的缘故需要负责之前同事的Node后端部分,node,redis这些都是部署在Linux上的,看了几次运维的同学噼里啪啦的敲命令 ...

  10. 大数据基础Hadoop 2.x入门

    hadoop概述 存储和分析网络数据 三大组件 MapReduce 对海量数据的处理 思想: 分而治之 每个数据集进行逻辑业务处理map 合并统计数据结果reduce HDFS 储存海量数据 分布式存 ...

随机推荐

  1. 字符串匹配|kmp笔记

    很久之前学的了. 我很懒,不太喜欢画图. 做个笔记回忆一下: kmp 朴素比对字符串 所谓字符串匹配,是这样一种问题:"字符串 T 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置 ...

  2. 数据库安装以及Navicat for MySQL 15安装

    1.数据库安装 2.安装数据库遇到的问题,解决方案:1,2 3.Navicat for MySQL安装 4.注册码

  3. Python 正则表达式(RegEx)指南

    正则表达式(RegEx)是一系列字符,形成了一个搜索模式.RegEx 可用于检查字符串是否包含指定的搜索模式. RegEx 模块 Python 中有一个内置的包叫做 re,它可以用于处理正则表达式.导 ...

  4. 完蛋!我被 Out of Memory 包围了!

    是极致魅惑.洒脱自由的Java heap space? 是知性柔情.温婉大气的GC overhead limit exceeded? 是纯真无邪.活泼可爱的Metaspace? 如果以上不是你的菜,那 ...

  5. HarmonyOS 高级特性

    引言 本章将探讨 HarmonyOS 的高级特性,包括分布式能力.安全机制和性能优化.这些特性可以帮助你构建更强大.更安全.更高效的应用. 目录 HarmonyOS 的分布式能力 HarmonyOS ...

  6. Vivado生成bitstream时报错[Opt 31-67] Problem: A LUT3 cell in the design is missing a connection on input pin I1, which is used by the LUT equation

    这个原因主要是因为有一个引脚没有用到,解决方法. 1.打开Schematic. 2.根据提示的模块去找,比如说我的报错. [Opt 31-67] Problem: A LUT3 cell in the ...

  7. CON2 工单重估 效率提升

    CON2 工单重估 效率提升 业务背景:月结CON2 每次只能允许一个进程操作 集团公司较多的话,很影响月结效率. SAP提供了专家模式程序 RKAZCON2 ,可以选平行运行   平行处理 需要选服 ...

  8. 循环返回结果结果集(connect 函数使用)

    --示例: SELECT 0 + ROWNUM sonID FROM DUAL /*区间范围*/ CONNECT BY ROWNUM <= 20;

  9. K8s 里多容器 Pod 的健康检查探针工作机制分析

    目录 1. 开篇 2. 聊啥 3. 结论(TL;DR) 4. 测试过程 4.1 准备测试用镜像 4.2 准备 Deployment YAML 4.3 准备 Service YAML 4.4 准备第二个 ...

  10. 累加器Adder

    ① java8引⼊的,相⽐较是⼀个⽐较新的类 ② ⾼并发下LogAdder⽐AtomicLog效率⾼,不过本质是空间换时间 ③ 竞争激烈的时候,LongAdder把不同线程对应到不同的Cell上进⾏修 ...