软件安装
CentOS系统安装软件
介绍
操作系统安装软件有许多种方式,一般分为:
•下载安装包自行安装
•如 win 系统使用 exe 文件、 msi 文件等
•如 mac 系统使用 dmg 文件、 pkg 文件等
•系统的应用商店内安装
•如 win 系统有 Microsoft Store 商店
•如 mac 系统有 AppStore 商店
Linux系统同样支持这两种方式,我们首先,先来学习使用:Linux命令行内的"应用商店",yum命令安装软件
yum命令安装软件
格式
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
yum [-y] [install | remove | search] 软件名称
•选项:-y,自动确认,无需手动确认安装或卸载过程
•install:安装
•remove:卸载
•search:搜索
yum命令需要root 权限哦,可以su切换到root,或使用sudo提权。
yum命令需要联网
例子
•yum search wget,通过yum命令,搜索是否有wget安装包
•yum [-y] install wget, 通过yum命令安装wget程序
•yum [-y] remove wget,通过yum命令卸载wget命令
遇到的问题
Linux之前学了一部分,最近又开始学习
然后又新开了一台虚拟机,就出现了不能下载的问题
root@localhost \~\]# yum search wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7\&arch=x86_64\&repo=os\&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" 说的很明确无法检索镜像列表 一种是网络没连接成功,ping一下百度发现没有问题,说明网络没有问题(网络有问题就得重新下载VMWare了)  另一种就是这个源出问题了,我试了一下我之前开的那一台虚拟机是可以下载的,现在新开的这个不可以,就很疑惑,可能是人家公司不提供服务了 **我换了阿里的源以后成功解决了** 1.先备份一下之前的源文件(虽然基本可能不会再用了) 普通用户可能没有权限,就之前说的x权限,没有copy的权限,切换到root做 ```javascript sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ``` 2.下载阿里的镜像文件(在网络能正常用的情况下做) ```javascript curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ``` 3.下载好以后可以查看一下 ```javascript cat /etc/yum.repos.d/CentOS-Base.repo ```  可以看到已经是阿里的一些网址了  4.清理旧缓存生成新缓存 ```javascript yum clean all ``` ```javascript yum makecache ``` 5.更新软件(这一步超级慢,不做也可以正常使用) ```javascript sudo yum -y update ``` 6.检查新源 ```javascript yum repolist ``` ####  #### **Ubuntu系统安装软件** **介绍** 前面学习的各类Linux命令,都是通用的。 但是软件安装,CentOS系统和Ubuntu是使用不同的包管理器。 CentOS使用yum管理器,Ubuntu使用apt管理器 通过前面学习的WSL环境,我们可以得到Ubuntu运行环境。 |---------|--------|--------| | 操作系统 | CentOS | Ubuntu | | 安装包文件类型 | rpm | deb | | 包管理器 | yum | apt | apt命令安装软件 格式 **apt \[-y\] \[install \| remove \| search\] 软件名称** 用法和yum一致,同样需要root权限 •apt install wget,安装wget •apt remove wget,移除wget •apt search wget,搜索wget **例子**  **遇到的问题** 在切换root的时候遇到问题了  这种情况一般有两种可能 一是密码输入错误了 二是没有为root设置密码 **以为是密码错了,发现修改密码是成功(需要输入原密码),所以密码没有错误**  最后发现是Ubuntu系统默认不为root设置密码,所以一直报错 **为root设置密码后成功!**  ### systemctl命令(控制软件的启动和关闭) #### 介绍 Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启 能够被systemctl管理的软件,一般也称之为:服务 #### 格式 **systemctl start \| stop \| status \| enable \| disable 服务名** •start 启动 •stop 关闭 •status 查看状态 •enable 开启开机自启 disable 关闭开机自启 #### 例子 控制系统内置服务 **系统内置的服务比较多**,比如: •NetworkManager,主网络服务 •network,副网络服务 •firewalld,防火墙服务 •sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)  控制部分第三方软件(自动集成到systemctl的) 除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。 这两个安装后会自动注册为系统服务,所以也可以进行控制 •yum install -y ntp,安装ntp软件 可以通过**ntpd服务名**,配合systemctl进行控制 •yum install -y httpd,安装apache服务器软件 可以通过**httpd服务名**,配合systemctl进行控制  控制其他第三方软件(不会自动集成的) ### 软连接 #### 介绍 在系统中创建软链接,可以将文件、文件夹链接到其它位置。 类似Windows系统中的《快捷方式》 #### ln命令创建软连接 格式 **ln -s 参数1 参数2** •-s选项,创建软连接 •参数1:被链接的文件或文件夹 参数2:要链接去的目的地 例子 实例: •ln -s**/** **etc/yum.conf** **\~/yum.conf** •ln -s **/** **etc** **/yum** **\~/yum**  ### 日期和时区 #### date命令 格式 **date \[-d\] \[+格式化字符串\]** •-d 按照给定的字符串显示日期,一般用于日期计算 •格式化字符串:通过特定的字符串标记,来控制显示的日期格式 •**%Y 年** •**%y 年份后两位数字 (00..99)** •**%m 月份 (01..12)** •**%d 日 (01..31)** •**%H** **小时** **(00..23)** •**%M** **分钟** **(00..59)** •**%S 秒 (00..60)** **%s 自 1970-01-01 00:00:00 UTC** **到现在的秒数** 查看日期和时间  **引号放在加号前面和后面都是可以的**  进行日期加减 •-d选项,可以按照给定的字符串显示日期,一般用于日期计算  •其中支持的时间标记为: •**year** **年** •**month** **月** •**day** **天** •**hour** **小时** •**minute** **分钟** •**second** **秒** •-d选项可以和 格式化字符串配合一起使用哦 #### 修改Linux时区 1.切换到root 2.删除系统自带的localtime文件 ```javascript rm -f /etc/localtime ```  3.把时区信息的文件软链接为系统自带的中国所在的东八区的时区信息文件 试了一下北京的不行,还是UST  上海的成功了,变为CST  #### ntp程序(自动校准系统时间) 需要切换到root做哦 1.安装ntp ```javascript yum -y install ntp ```  2.启动并设置开机自启 ```javascript systemctl start ntpd ``` ```javascript systemctl enable ntpd ```  3.查看状态和开机自启是否启动成功  4.当ntpd启动后会定期的帮助我们**联网**校准系统的时间 **如果觉得ntp的自动校准时间较长,也可以使用阿里的在线校准网站手动校准** 通过阿里云提供的服务网址配合ntpdate(安装ntp后会附带这个命令)命令自动校准 ```javascript ntpdate -u ntp.aliyun.com ```  ### IP地址和主机名 #### IP地址 介绍 每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯 IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及) IPv4版本的地址**格式**是:a.b.c.d,其中abcd表示0\~255的数字,如192.168.88.101就是一个标准的IP地址 ifconfig命令(查看ip地址) **如无法使用ifconfig命令,可以安装:yum -y install net-tools**  除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解: •127.0.0.1,这个IP地址用于指代本机  •0.0.0.0,特殊IP地址 •可以用于指代本机 •可以在端口绑定中用来确定绑定关系 •在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问 #### 主机名 介绍 每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名 无论是Windows或Linux系统,都可以给系统设置主机名 •Windows系统主机名  •Linux系统主机名  修改Linux主机名 •可以使用命令:hostname查看主机名  •可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)  •重新登录FinalShell即可看到主机名已经正确显示  #### 域名解析 介绍 IP地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢? 实际上,我们一直都是**通过字符化的地址**去访问服务器,很少指定IP地址 比如,我们在浏览器内打开:www.baidu.com,会打开百度的网址 其中,www.baidu.com,是百度的网址,我们称之为:域名 可以通过主机名找到对应计算机的IP地址,这就是主机名映射(域名解析) 先通过系统本地的记录去查找,如果找不到就联网去公开DNS服务器去查找 流程  配置主机名映射 1.搜索记事本右键以管理员身份打开  2.找到这个文件C:\\Windows\\System32\\drivers\\etc\\hosts进行编辑  选择为文本文档时可能找不到,选择为所以文件就可以找到了   3.添加域名和主机名的映射  4.检验成果 在FinalShell用主机名代替ip地址也可以连接成功了    #### 在VMware Workstation中配置Linux系统的固定IP地址(用于Windows系统) 介绍 当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。 DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更 原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配很麻烦 原因2:在刚刚我们配置了虚拟机IP地址和主机名的映射,如果IP频繁更改,我们也需要频繁更新映射关系 综上所述,我们需要IP地址固定下来,不要变化了。 步骤 1.在VMware Workstation中配置IP地址网关和网段(IP地址的范围) 在VMware Workstation的编辑中选择虚拟网络编辑器  选择VMnet8,使用管理员权限才能修改  设置网段和网关  进入到NET设置  设置网关  2.在Linux系统中手动修改配置文件,固定IP 进入到终端或者用FinalShell操作  切换到root  使用vim编辑器编辑这个文件/etc/sysconfig/network-scripts/ifcfg-ens33  3.重启网络服务,查看是否修改成功  ### 网络传输 #### 下载和网络请求 ping命令(检查指定的网络服务器是否是可联通状态) 格式 **ping \[-c num\] ip或主机名** •选项:-c,检查的次数,不使用-c选项,将无限次数持续检查 •参数:ip或主机名,被检查的服务器的ip地址或主机名地址 例子 检查baidu.com是否联通  wget命令(是非交互式的文件下载器,可以在命令行内下载网络文件) 格式 **wget \[-b\] url** •选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件 参数:url,下载链接 例子 •下载apache-hadoop 3.3.0版本:wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz •在后台下载:wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz •通过tail命令可以监控后台下载进度:tail -f wget-log  注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。 curl命令(发送http网络请求,可用于:下载文件、获取信息等) 格式 **curl \[-O\] url** •选项:-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件 •参数:url,要发起请求的网络地址 例子 •向cip.cc发起网络请求:curl cip.cc •向python.itheima.com发起网络请求:curl python.itheima.com •通过curl下载hadoop-3.3.0安装包:curl -O http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz #### 端口 介绍 端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类 •物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等 •虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的     查看端口占用情况(nmap命令) 安装 **yum -y install nmap** 格式 **nmap 被查看ip的地址** **例子** 127.0.0.1代表本机 可以看到,本机(127.0.0.1)上有5个端口现在被程序占用了。 其中: •22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口  查看指定端口占用情况(netstat命令) 安装 **yum -y install net-tools** 格式 **netstat -anp \| grep 端口号** **例子**  总结 1. 什么是端口? 端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口 •物理端口:USB、HDMI、DP、VGA、RJ45等 •虚拟端口:操作系统和外部交互的出入口 IP只能确定计算机,通过端口才能锁定要交互的程序 2. 端口的划分 •公认端口:1\~1023,用于系统内置或常用知名软件绑定使用 •注册端口:1024\~49151,用于松散绑定使用(用户自定义) •动态端口:49152\~65535,用于临时使用(多用于出口) 3. 查看端口占用 •nmap IP地址,查看指定IP的对外暴露端口 netstat -anp \| grep 端口号,查看本机指定端口号的占用情况 ### 进程管理 #### 介绍(进程)  #### 查看进程(ps命令) 格式 **ps \[-e -f\]** 选项:-e,显示出全部的进程 选项:-f,以完全格式化的形式展示信息(展示全部信息) 一般来说,固定用法就是: ps -ef 列出全部进程的全部信息 例子  配合管道符和grep命令使用   #### 关闭进程(kill命令) 介绍 在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。 同样,在Linux中,可以通过kill命令关闭进程。 格式 **kill \[-9\] 进程ID** 选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。 例子 第一个标签页里面开启tail  第二个标签页里面让它自己进行关闭  显示是Terminated  强制关闭  ### 主机状态 #### 查看系统资源占用(top命令) •可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器 默认每5秒刷新一次,语法:直接输入top即可,按q或ctrl + c退出      #### 磁盘信息监控 •使用df命令,可以查看硬盘的使用情况 语法:df \[-h
选项:-h,以更加人性化的单位显示
•可以使用iostat查看CPU、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
•选项:-x,显示更多信息
•num1:数字,刷新间隔,num2:数字,刷新几次

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
•使用iostat的-x选项,可以显示更多信息

rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge, 提高IO利用率, 避免重复调用);
wrqm/s: 每秒这个设备相关的写入请求有多少被Merge了。
rsec/s: 每秒读取的扇区数;sectors
wsec/: 每秒写入的扇区数。
rKB/s: 每秒发送到设备的读取请求数
wKB/s: 每秒发送到设备的写入请求数
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
%util: 磁盘利用率
网络状态监控
•可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
语法:sar -n DEV num1 num2
选项:-n,查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查看一次结束),num2:查看次数(不填无限次数)

如图,查看2次,隔3秒刷新一次,并最终汇总平均
总结
- 使用top命令可以:
•类似Windows任务管理器
•查看CPU、内存、进程的信息
- 使用df命令可以:
•查看磁盘使用率
- 使用iostat可以:
•查看磁盘速率等信息
- 使用sar -n DEV命令可以:
查看网络情况
环境变量
介绍
在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。
比如,cd命令的本体就是:/usr/bin/cd 这个程序文件。
我们是否会有疑问,为何无论当前工作目录在哪里,都能执行:/usr/bin/cd这个程序呢?
这就是环境变量的作用啦。
环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在Linux系统中执行:env命令即可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构,即名称和值,如下图:
图中记录了:
•HOME : /home/itheima ,用户的 HOME 路径
•USER : itheima ,当前的操作用户
•PWD :当前工作路径
•......
等等一系列信息,用于辅助系统在运行的时候
从环境变量中获取关键信息

无论当前工作目录是什么,都能执行某个程序是怎么做到的?
借助环境变量中:PATH这个项目的值来做到的

PATH记录了系统执行任何命令的默认搜索路径,如上图记录了(路径之间以:隔开):
•/usr/local/sbin
•/usr/local/bin
/sbin
•/usr/sbin
•/usr/bin
/root/bin
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行cd命令,就从第二个目录/usr/bin中搜索到了cd命令,并执行
$符号

自行设置环境变量
Linux环境变量可以用户自行设置,其中分为:
•临时设置(把FinalShell关闭再重新打开就找不到了)
语法:export 变量名=变量值

•永久生效
•针对当前用户生效,配置在当前用户 的: ~/.bashrc文件中

•针对所有用户生效,配置在系统 的: /etc/profile 文件中•并通过语法:source 配置文件 ,进行立刻生效,或重新登录FinalShell生效

按一下G,再按一下o即可在文件末尾编辑

自定义环境变量PATH
环境变量PATH这个项目里面记录了系统执行命令的搜索路径。
这些搜索路径我们也可以自行添加到PATH中去。
例子
•在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
•通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行
•修改PATH的值
给mkhaha添加内容



临时修改PATH:export PATH=$PATH:~/myenv,再次执行mkhaha,无论在哪里都能执行了

或将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去

Linux文件的上传和下载
我们可以通过FinalShell工具,方便的和虚拟机进行数据交换。
在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的:
•浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
•浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中
下载
选择要下载的文件,右键下载

在桌面就会出现一个fdownload的文件夹,打开就可以找到刚刚下载的文件

但是root目录下的文件是看不到的,显示加载中

需要以root用户登录,才可以看到

上传
直接选择对应的文件夹拖进去就可以了

rz(上传)和sz(下载)命令
安装
yum -y install lrzsz

sz下载

有点乱码,但是不是这里要研究的东西

rz上传(传大文件很慢)
直接输入rz,就会弹出来一个文件框让用户选择要下载的文件

注意,rz、sz命令需要终端软件支持才可正常运行
FinalShell、SecureCRT、XShell等常用终端软件均支持此操作
压缩和解压
压缩格式
市面上有非常多的压缩格式
•zip格式:Linux、Windows、MacOS,常用
•7zip:Windows系统常用
•rar:Windows系统常用
•tar:Linux、MacOS常用
•gzip:Linux、MacOS常用
在Windows系统中常用的软件如:winrar、bandizip等软件,都支持各类常见的压缩格式,这里不多做讨论。
我们现在要学习,如何在Linux系统中操作:tar、gzip、zip这三种压缩格式
完成文件的压缩、解压操作。
使用tar命令压缩或解压tar或gzip文件
介绍
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
•.tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
•.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
格式
tar [-c -v -x -f -z -C] 参数1 参数2...参数N
•-c,创建压缩文件,用于压缩模式
•-v,显示压缩、解压过程,用于查看进度
•-x,解压模式
•-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
•-z,gzip模式,不使用-z就是普通的tarball格式
•-C,选择解压的目的地,用于解压模式
常用组合
tar的常用压缩组合为:
•tar - cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
•tar - zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
注意:
•-z选项如果使用的话,一般处于选项位第一个
-f选项,必须在选项位最后一个
常用的tar解压组合有
•tar - xvf test.tar
解压test.tar,将文件解压至当前目录
•tar - xvf test.tar -C /home/itheima
解压test.tar,将文件解压至指定目录(/home/itheima)
•tar - zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
•-f选项,必须在选项组合体的最后一位
•-z选项,建议在开头位置
•-C选项单独使用,和解压所需的其它参数分开
使用zip、unzip命令压缩或解压zip文件
压缩格式
zip [-r] 压缩文件名 参数1 参数2 ... 参数N
•-r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
例子
•zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
•zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
解压格式
uzip [-d] 参数
•-d,指定要解压去的位置,同tar的-C选项
•参数,被解压的zip压缩包文件
例子
解压的时候同名文件夹会被直接替换
•unzip test.zip,将test.zip解压到当前目录
•unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)
第五章 在Linux上部署各类软件
MYSQL
快捷键
ctrl+c(强制停止)
•Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c
如停止tail的持续跟踪等等
或者输入tail什么选项也不填程序会卡住,退出使用ctrl+c

•命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入

ctrl+d(退出或者登出)
•可以通过快捷键:ctrl + d,退出账户的登录
•或者退出某些特定程序的专属页面(不能用于退出vi/vim)

历史命令搜索
•可以通过history命令,查看历史输入过的命令,选择历史命令进行复制和粘贴
粘贴以后是不用回车自动执行的

•可以通过:!命令前缀,自动执行上一次匹配前缀的命令
•可以通过快捷键:ctrl + r,输入内容去匹配历史命令
如果搜索到的内容是你需要的,那么:
•回车键可以直接执行
•键盘左右键,可以得到此命令(不执行)
