admin 管理员组

文章数量: 887007

大数据学习笔记 第1天 Linux(一)

一、GNU/Linux 简介与下载

1.1 简介

1.1.1 定义与起源

GNU/Linux 是类 Unix 操作系统。GNU 计划是要创建自由操作系统,Linux 是林纳斯・托瓦兹开发的内核,二者结合形成了 GNU/Linux。

1.1.2 内核(Linux 内核)的作用

内核是核心,管理硬件资源,像调度 CPU、分配回收内存,还控制设备驱动程序,让软件和硬件能通信。

1.1.3 软件生态系统(GNU 软件)

GNU 提供很多软件,如 GCC 编译器、Bash 命令行解释器、GNU Emacs 文本编辑器,它们是系统重要部分。

1.1.4 开源与自由软件的特点

源代码公开,任何人可修改和分发。用户有使用、复制等多种自由,能根据需求定制软件。

1.1.5 应用场景

在服务器领域地位重要,很多大型网站、企业级服务器都用它。在桌面领域也有用户,可高度定制。在嵌入式系统领域也发挥作用,能为不同硬件裁剪定制。

1.2 分支

Linux 发行线路图 GitHub 地址:https://github/FabioLolix/LinuxTimeLine/releases

1.2.1 RedHat
(1)RHEL

(2)CentOS

1.2.2 Debian
(1)Debian

(2)Ubuntu

1.3 选择

  • 企业级应用:RHEL/CentOS
  • 桌面平台:Ubuntu
  • 开源服务器:CentOS

1.4 下载

本文使用 CentOS 7 作为主要讲解版本,其生命周期到 2024 年 6 月 30 日:

  • Linux 官网:https://linux/
  • Linux 下载页面:https://linux/pages/download/
  • CentOS 下载地址:https://wiki.centos/Download
  • 阿里云 CentOS 镜像站:https://mirrors.aliyun/centos-vault/
  • CentOS7.6 下载地址:http://vault.centos/7.6.1810/

安装镜像文件版本解析:

  • DVD.iso:标准安装版
  • Everything.iso:完整版,集成所有软件
  • Minimal.iso:最小安装版,自带的软件最少,用什么装什么(学习阶段我们使用这个镜像)
  • NetInstall.iso:网络安装镜像,联网进行安装,可自行选择需要安装的软件
  • LiveGNOME.iso:GNOME 桌面版
  • LiveKDE.iso:KDE 桌面版
  • LiveCD.iso:光盘上运行的系统,类拟于 Windows PE

二、虚拟机安装与配置

2.1 虚拟化技术

  • 可以更好的利用计算机闲置的资源
  • 我们可以在计算机中虚拟出多台虚拟机帮助我们执行程序或者业务
  • 虚拟机的各种组成理论上和真实主机是一样的
  • 如果要使用这种技术只需要安装对应的软件即可
    • VMware
    • Virtualbox
    • VirtualMachine

2.2 安装VMware

我自己的VM17安装包和密钥:链接:https://pan.baidu/s/1EygbZKfkUhY5toPYOFM4HQ?pwd=ce54

安装教程去网络上找,有很多详细的。

2.3 创建虚拟机

安装版本为CentOS-7-x86_64-Minimal-1810,最小安装版,安装教程去网络上找,网络上很详细。

每一步都点默认,只有分配磁盘时改成100G。

2.4 配置虚拟机

2.4.1 初始化

安装完后点击开启此虚拟机。

底部提示信息直接关闭即可,然后点击屏幕用键盘上下键切换至 Install CentOS 7 ,回车。

接下来耐心等待虚拟机初始化,直到出现选择语言界面,选择英文并点击Continue

点击DATE & TIME设置时区和时间,后面通过命令也可以实现修改。

设置完成后点击Done返回。

点击INSTALLATION DESTINATION设置硬盘分区。

选择自定义分区并点击Done开始设置。

点击号开始设置分区。

引导分区/boot设置256M并点击Add mount point进行添加。

交换分区swap设置2G并点击Add mount point进行添加。

然后选择/并点击Add mount point将剩余所有空间分配给/分区。

分区设置完成后点击Done

点击Accept Changes接受修改内容。

接下来点击Begin Installation开启安装。

安装时可通过ROOT PASSWORD给虚拟机设置密码。

设置密码后点击Done返回安装界面,耐心等待安装。

USER CREATION用于创建用户,我们暂时不创建,使用默认用户root即可。后期我们学习通过命令创建用户-组-
权限等。

直到出现以下界面,表示虚拟机安装完成,点击Reboot重启虚拟机。

输入默认用户 root 与密码回车登入虚拟机。注意:考虑到安全问题,输入密码时是不会显示在屏幕上的。

2.4.2 网络

首先打开虚拟机的虚拟网络编辑器,查看 NAT 设置中的 IP 段和网关信息。

NAT 设置中的 IP 段和网关信息如下。

然后输入以下命令打开网络配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

注意:切记不要手动输入,使用 Tab 键自动补齐,因为有的人是 ifcfg-ens33 有的是 ifcfg-ens32 防止出错。

原文内容如下:


修改后的内容:

TYPE=Ethernet # 网卡类型(通常是Ethernet以太网)
PROXY_METHOD=none # 代理方式:为关闭状态
BROWSER_ONLY=no # 只是浏览器:否
BOOTPROTO=static # 网卡的引导协议(static:静态IP dhcp:动态IP none:不指定,不指定容易出现各种各样的网络受限)
DEFROUTE=yes # 默认路由
IPV4_FAILURE_FATAL=no # 是否开启 IPV4 致命错误检测
IPV6INIT=yes # IPV6 是否自动初始化:是(现在还未用到 IPV6,不会有任何影响)
IPV6_AUTOCONF=yes # IPV6 是否自动配置:是
IPV6_DEFROUTE=yes # IPV6 是否可以为默认路由:是
IPV6_FAILURE_FATAL=no # 是否开启 IPV6 致命错误检测
IPV6_ADDR_GEN_MODE=stable-privacy # IPV6 地址生成模型
NAME=ens33 # 网卡物理设备名称
UUID=070892f0-514c-46c5-8593-c379854dcce1 # 通用唯一识别码,每一个网卡都会有,不能重复,否则两台 Linux 机器只有一台可上网
DEVICE=ens33 # 网卡设备名称,必须和‘NAME’的值一样
ONBOOT=yes # 是否开机启动网络,要想网卡开机就启动或通过`systemctl restart network`控制网卡,必
须设置为 yes
IPADDR=192.168.100.100 # 本机 IP
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.100.2 # 默认网关
DNS1=192.168.100.2 # DNS 服务器
DNS2=114.114.114.114 # DNS 服务器
DNS3=8.8.8.8 # DNS 服务器

我们只需要修改 2 行,删除 1 行,新增 6 行即可。首先i键进入编辑模式,然后开始编辑文件:

修改

ONBOOT=yes #是否开机启动网络
BOOTPROTO=static #使用静态网络 IP,就是自己手动设置(dhcp 表示动态获取网络 IP,也就是自动获取)

删除:

UUID=xxxxx
#每一个网卡都会有,不能重复,否则两台Linux机器只有一台可上网。因为后期我们会通过这台虚拟机克隆新的虚拟机,所以删除UUID 。

新增:

IPADDR=192.168.100.100 #按自己的子网IP来 第三位是100
NETMASK=255.255.255.0
GATEWAY=192.168.100.2 #按自己的子网IP来
DNS1=192.168.100.2 #按自己的子网IP来
DNS2=114.114.114.114
DNS3=8.8.8.8

文件操作完毕后Esc退出编辑模式,然后:进入底行模式:wq保存并退出文件。

然后输入以下命令重启网络:

systemctl restart network

然后ping一下百度,如果出现以下效果则表示网络配置成功(Ctrl + C 终止 ping 命令的执行)。

2.4.3 防火墙

防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。也可以理解为保护本机的端口不被别人访问,如果端口需要被别人访问到,需要添加端口的防火墙例外。为了方便学习,我们直接将防火墙关闭并禁用,命令如下:

# 查看防火墙状态
systemctl status firewalld
# 本次服务内关闭防火墙(重启虚拟机后会自动开启)
systemctl stop firewalld
# 启动防火墙
systemctl start firewalld
# 重启防火墙
systemctl restart firewalld
# 禁用防火墙服务
systemctl disable firewalld
2.4.4 SELINUX

SELinux 是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux 的一个扩张强制访问控制安全模块。我们在使用 Linux 系统过程中,SELinux 对未知软件的安装有可能会拒绝或者警告,同样为了方便学习,我们禁用这个功能。

vi /etc/selinux/config

修改SELinux=disabled,然后:wq保存并退出。

  • enforcing:强制执行

  • permissive:放行

  • disabled:禁用

2.4.5 修改主机名
hostname node01 #本次启动中有效,重启虚拟机后还是原来的名字。
vi /etc/hostname #修改完成后需要重启生效。

2.5 关闭虚拟机

  • halt :相当于直接拔掉电源,不推荐。

  • poweroff:直接关闭机器,但是有可能当前虚拟机有其他用户正在使用,不推荐。

  • shutdown -h now:马上关闭计算机 ,但是会给其他用户发送消息,推荐。

  • reboot:重启虚拟机。

2.6 快照和克隆

2.6.1 拍摄快照

可以通过拍摄快照记录当前虚拟机的状态,以防出问题时可以及时还原。虚拟机运行时也可以拍摄快照,只不过速度会非常慢,且运行时虚拟机也会不停的产生数据,为了防止数据丢失或出错,建议关闭虚拟机后再拍摄快照。

2.6.2 转到

后期可通过快照管理器选择回到某一个历史快照的节点。

2.6.3 克隆

除此之外,还可以通过克隆复制虚拟机的当前状态或某一个历史快照节点。

克隆又分为链接克隆和完整克隆,推荐使用完整克隆。

将克隆后的新机器重新进行上面的配置。

2.7 移除虚拟机

可以通过右键虚拟机→移除来移除此虚拟机,但是这种方式只是将虚拟机从 VMware 界面中移除而并非从磁盘上删除。

如果要从磁盘上删除虚拟机,从管理中删除或自行找到虚拟机存储在磁盘上的位置并进行删除。

2.8 连接虚拟机

  • Xshell:负责向虚拟机输入命令
  • Xftp:负责向虚拟机传输文件

Xshell配置:虚拟机名称,SSH协议,虚拟机ip,端口号22,用户名root,密码123456(自己设置的)

三、Linux的文件系统

3.1 万事万物皆文件

文件系统:操作系统如何管理文件,内部定义了一些规则或者定义。在 Linux 中所有的东西都是以文件的方式进行操作,在 Linux 中,文件的访问和 Window 的不一样。Window 依靠的是通过盘符进行访问,而 Linux 维护着一个树状结构的文件模型,只有一个根节点,他的名字叫做 / ,一个节点上可以有多个子节点。

在 Linux 中,查找文件的方式分为:

  • 相对路径
    以当前路径为基准点,查找其他资源

    vi ../etc/sysconfig/network
    
  • 绝对路径
    以根目录为基准点,查找其他资源

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    

3.2 Linux二级文件目录

/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:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有
/var/run 目录,应该让它指向 run。


/etc 配置
/opt 大数据软件装到opt
/usr 类比windowsC盘,不要乱动
/var 数据日志

3.3 Linux的文件操作

ls #显示出指定目录下所有的文件,文件的类型如下:
ll
ls -l # 等同于ll
ls -a #列出全部文件目录 包括隐藏的
ll -a
whereis

cd #回主目录 root hmoe
cd - #回上一次的目录
cd a #到a目录

mkdir a #创建文件夹
rmdir a #删除文件夹
cp a b#拷贝文件或者文件目录 # cp 源文件 目标目录
cp -r a b #拷贝文件夹下所有的内容 recursion 递归
mv a b#移动文件或者文件夹 全部移走
rm a#删除文件
rm -r abcd #删除文件夹
rm abcd -rf #谨慎使用,从删库到跑路 最后写-rf避免误操作
touch a{1..5}.txt #创建文件
stat a #查看文件状态
ln a1 a2 #硬链接 # ln [选项] 源文件 目标文件 #目标文件没有写文件名,会和原名一致
ln -s a1 a2 #软链接 修改任意一个文件其他文件跟着一起改变,删除源文件,软链接文件会失效
ln -f a1 a2 #强制创建。如果目标文件已经存在,则删除目标文件后再建立链接文件;
# 硬链接指的就是给一个文件的 inode 分配多个文件名 
# 类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件
#建软链接时使用了相对路径,那么移动链接文件也会造成软链接的失效,所以创建软链接时建议使用绝对路径
#如果移动了源文件,软链接也会失效

3.4 读取文件信息

cat a.txt #整个文档加载到内存中,并进行一次性显示
tac a.txt #一次性按行逆序显示
more less a.txt #分页查看文档内 #回车 下一行  #空格 下一页 #b 回退 #q 退出
head -n a.txt #从文章开始读取n行,默认10行
tail -n a.txt #从文章末尾读取n行,默认10行
head -3 profile | tail -1 #利用管道只读取第N行
ping www.baidu >>baidu #读取新增数据
tail -F baidu

3.5 VI和VIM编辑器

如果上次异常退出(比如文件正在编辑忽然断电或者直接把 Shell 窗口关闭了)会保留同名隐藏文件。

每次启动会给与提示。如果确定当前文件没问题,请删除隐藏文件。

  • o :只读模式打开文件。
  • e :读写模式打开文件。
  • r :通过 .swp 文件恢复文件内容。
  • d :删除 .swp 文件。
  • q :退出文件。
  • a :终止操作(也会退出文件)。

3.6 计算机间的数据传输

3.6.1 Window - Linux
  • lrzsz

    yum -y install lrzsz
    rz #将文件从window上传到Linux
    sz a.txt #将文件从Linux传输到Window
    
  • xftp

3.6.2 Linux - Linux

(1)scp

Linux 机器之间互相传输文件使用 scp 命令即可。 s :SSH 协议的意思, cp :拷贝。
scp 表示安全复制,该命令可以在两个位置之间安全地复制文件和目录。使用 scp,可以复制文件:

[root@localhost ~]# scp 源数据地址(source) 目标数据地址(target)
# A 端的 ~/test 目录拷贝到 B 端的 ~ 目录,B 端 ~ 目录下会出现 test 目录
[root@localhost ~]# scp -Crp -l 1 test/ root@192.168.100.101:~
#已知主机列表文件叫 known_hosts 在 /root/.ssh/known_hosts 。

常用选项

  • -C (大写):允许传输过程中压缩,可提高效率
  • -r :递归传输整个目录(如果传输的是文件则不需要这个参数)
  • -p (小写):保留源文件的修改时间和访问权限等
  • -P (大写):指定远程主机的 ssh 端口
  • -l :limit 限制传输带宽 KB/s, -l 1 表示限制每秒 1kb 的传输效率
  • -v :详细模式,打印有关其进度的调试消息的选项,这有助于调试连接、身份验证和配置问题(调试可以使用)

(2)rsync

rsync 也是一个比较实用的命令,用于通过远程 Shell 在两个位置之间同步文件,它通传输源和目标之间的差异来提供更快的文件传输。使用前需要先安装命令(传输的双方都必须安装 rsync):

[root@localhost ~]# yum -y install rsync
[root@localhost ~]# scp 源数据地址(source) 目标数据地址(target)
# A端的~/test目录拷贝到B端的~目录,B端~目录下不会出现test目录,而是把A端的~/test目录下的所有文件拷贝到B端的~目录
[root@localhost ~]# rsync -az --exclude 'log' --bwlimit=1 test/ root@192.168.88.100:~
# A 端的 ~/test 目录拷贝到 B 端的 ~ 目录,B 端 ~ 目录下会出现 test 目录
[root@localhost ~]# rsync -az --exclude 'log' --bwlimit=1 test/ root@192.168.88.100:~/test

常用选项:

  • -r :递归传输目录下所有文件
  • -a :归档模式,保持所有文件属性。递归同步并保留符号链接、组、所有者和权限,它比 -r 更常用
  • -v :显示 rsync 过程的详细信息, -vvvv 可以获取更加详细的信息
  • -z :传输时进行压缩处理
  • -exclude=PATTERN :排除不需要传输的文件格式
  • -exclude-from=FILE :排除 FILE 中指定格式的文件
  • -bwlimit :限制 I/O 带宽 KB/s
  • –partial :恢复因某些原因而中断的传输
  • –progress :显示传输进度
  • -P (大写):由两个参数组成。 --partial :恢复某些原因而中断的传输, --progress :显示传输进度
  • –delete :从目标目录中删除无关文件。例如某一端删除了某些文件,使用该参数后另一端对应的文件也会被删除

rsync 和 scp 在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。原因是 scp 是复制:若目的地文件不存在则新建,若存在则覆盖。而 rsync 是同步,比较两边文件是否相同,相同的话,就什么都不做,若存在差异就直接更新。
起到同步的作用时用 rsync 会快一些,起到复制作用时两者均可(目的地无文件)。视情况来选择 rsync 或 scp,如果小文件非常多(过万),且只改动了一两个,使用 rsync 就不见得比 scp 快,因为 scp 无脑全部覆盖,rsync 还需要一个个去比较,比较会浪费大量时间。

rsync a root@192.168.100.101:~ 
rsync a/ root@192.168.100.101:~
#两者不同,第一个含文件夹,第二个不含,只同步文件夹中的内容

3.7 文件大小

df -h #分区信息
du -h --max-depth=1 apache-tomcat-7.0.61 #指定文件目录大小
  • swap
    • 一个特殊分区,以硬盘代替内存
    • 当内存使用满的时候,可以将一部分数据写出到swap分区

3.8 文件压缩

3.8.1 tar
tar -zxvf lucky.tar.gz #解压缩 tar -zx(解压)v(过程)f(文件) lucky.tar.gz
tar -zcf a.tar.gz a.txt #压缩 tar -zc(压缩)f(文件) a.tar.gz(压缩后的名字) a.txt(源文件)
tar -zxf a.tar.gz -C /opt/ #-C 指定解压缩的文件目录
3.8.2 zip和unzip
yum install zip unzip -y
zip -r a.zip a.txt
unzip a.zip

本文标签: 学习笔记 数据 Linux