windows和macOS是个人桌面操作系统;linux是服务器操作系统
一、入门Linux
1.1 操作系统概述
操作系统调度和管理计算机硬件进行工作,调度CPU,内存,硬盘,网卡,音响等
发消息-->操作系统-->网卡驱动-->网卡发送数据包-->服务器-->接收
计算机由硬件和软件组成,操作系统是软件的一类,主要协助用户调度硬件工作
1.2 Linux初识
https://www.kernel.org下载Linux内核
Linux系统由Linux系统内核和系统级应用程序组成;Linux内核提供了Linux的主要功能,如硬件调度管理;系统级应用程序为出厂自带的程序,如文件管理器、文物管理器、图片查看等;
比如播放音乐无论是使用自带播放器或第三方播放器都是由播放器程序调用内核提供的相关功能,由内核调度CPU解码,音响发声。
内核是免费开源的,再提供系统级应用程序就是Linux发行版,就是完整的Linux操作系统,有CentOS,ubunyu操作系统等;不同的发行版基础命令一样,部分操作不一样如软件安装
1.3 虚拟机介绍
虚拟化软件进行虚拟硬件的模拟,并给虚拟硬件安装真实的操作系统,虚拟出一个完整的电脑
1.4 安装VMware Workstation虚拟化软件
下载地址:https://www.vmware.com/cn/products/workstation-pro.html(安装完成后查看网络设置中有没有两个虚拟网卡)
1.5 Mware Workstation中安装CentOS7 Linux操作系统
1.6 远程连接Linux系统
1.6.1 操作系统的图形化,命令行两种操作方式
Windows,Linux,MacOS都支持两种方式,图形化使用操作系统提供的图形化页面,以获得图形化反馈的形式去操作系统;
命令行使用操作系统提供的各类命令,以获得字符反馈的形式去使用操作系统。
使用命令行形式效率更高,更加直观,资源占用低,程序运行更稳定
1.6.2 掌握使用FinalShell软件连接Linux操作系统
Windows里用VMware中操作Linux的命令行页面不太方便,比如内容的cv,文件的上传下载跨越VMware不方便,Windows和Linux的各类交互跨越VMware不方便。通过第三方软FInalShell远程连接到Linux并通过FInalShell去操作Linux系统
1.7 扩展Win10配置WSL(Ubuntu)环境
1.8 扩展-虚拟机快照
虚拟机关机,制作快照可以转回
二、Linux基础命令
2.1 Linux目录结构
linux的目录结构是一个树形结构,linux系统没有盘符的概念,只有一个根目录/;linux路径之间的层级关系用/表示,Windows路径之间的层级关系用\表示
2.2 Linux命令基础
命令行即终端,是一种命令提示符页面,可以使用各种字符化的命令对系统发出操作指令;
命令即linux程序,一个命令就是一个linux程序,可以在命令行(终端)提供字符化的反馈
command命令本身 [-options]命令选项,可以控制命令的行为细节;[parameter]参数,多用于命令的指向目标
2.3 基础命令
2.3.1 ls命令
ls [-a -l -h] [Linux路径]
不用选项和参数就是以平铺形式列出当前工作目录下的内容
-a:all,列出全部文件包括隐藏的,隐藏文件以.开头表示
-l:以列表(竖向排列)展示并展示更多信息如权限、用户、用户组、文件大小、创建时间(同时用-la-al-a-l都行)
-h:以易于阅读的形式列出文件大小如KMG,-h要搭配-l一起使用
linux在启动的时候默认加载当前登录用户的HOME目录作为当前的工作目录:/home/用户名
2.3.2 cd命令
cd(Change Directory)
不写参数表示回到用户的HOME目录
2.3.3 pwd命令
pwd(print work directory)
查看当前所在的工作目录
2.3.4 mkdir命令
mkdir [-p] 路径
(make directory)创建新的目录(文件夹);-p表示自动创建不存在的父目录,适用于创建连续多层级的目录;创建文件夹需要修改权限
2.4 相对路径绝对路径特殊路径符
绝对目录:以根目录为起点,以/开头
相对目录:以当前目录为起点,无需/开头
.表示当前目录,cd./Desktop切换到当前目录下的Desktop内
..表示上一级目录,cd../..
表示HOME目录,cd/Desktop切换到HOME内的Desktop目录
2.5 文件操作命令
2.5.1 touch命令
touch 路径
创建文件 touch test.txt
2.5.2 cat命令
cat 路径
查看文件内容,将内容全部显现出来cat test.txt
2.5.3 more命令
more 路径
查看文件内容,支持翻页,如果内容过多,可以一页页展示,按q退出
2.5.3 cp命令
cp [-r] 路径(参数1) 路径(参数2)
(copy)复制文件、文件夹,-r用于复制文件夹使用,表示递归,参数1表示被复制的文件或文件夹,参数二表示要复制去的地方
2.5.3 mv命令
mv 参数1 参数2
mv test.txt ./Desktop
(move)移动文件、文件夹;参数1表示被移动的文件或文件夹,参数2表示要移动去的地方,如果目标不存在则进行改名确保目标存在;
2.5.3 rm命令
rm [-r -f] 参数1 参数2 参数3 ..... 参数N
(remove)删除文件、文件夹;参数表示被删除的文件或文件夹;-r用于删除文件夹,-f(force)表示强制删除,不会提出确认信息
(普通用户删除内容不会弹出信息,只有root管理员删除内容会有提示)(su - root切换到root用户,exit退回普通用户)
通配符,即匹配任意内容(包含空),test表示匹配任何以test开头的内容,test表示任何以test结尾的内容,test*表示匹配任何包含test的内容
2.6 查找命令
2.6.1 which命令
which cd
查找命令的程序文件;Linux命令本体是一个个二进制可执行文件(类似于Windows里的.exe文件),通过which命令查看命令的程序文件存放位置
2.6.2 find命令
find 起始路径 -name "被查找文件名"
find 起始路径 -size +|-n[KMG]
find / -size +100M
查找指定文件,可以配合通配符使用,+-表示大于小于
2.7 命令进阶
2.7.1 grep命令
grep [-n] 关键字 文件路径
grep "ttt" test2.txt
从文件中通过关键字过滤文件行;-n表示在结果中显示匹配的行的行号;关键字带有带有空格或其他特殊符号,简易宏“”包裹起来;文件路径表示要过滤内容的文件路径,可作为内容输入端口(管道符)
2.7.2 wc命令
wc [-c -m -l -w] 文件路径
wc test2.txt # 3 5 29 test2.txt:行数、单词数、字节数、文件名
统计内容数量,文件的行数,单词数量等
-c统计bytes数量
-m统计字符数量
-l统计行数
-w统计单词数量
文件路径可作为内容输入端口
2.7.3 管道符
cat test2.txt | gerp ttt
cat test2.txt | gerp ttt | grep tt #嵌套
将管道符左边命令的结果作为右边命令的输入
2.7.4 echo命令
echo 输出的内容(复杂内容可以用“”包围)
echo `pwd`(反引号,飘号)
输出内容
2.7.5 tail命令
tail [-f -num] 路径
查看文件尾部内容;跟踪文件更改;-f表示持续跟踪;路径表示被跟踪的文件路径,-num表示查看尾部多少行,不填默认10行(ctrl+c强制停止命令运行;l清空终端)
2.7.6 重定向符
>将左侧命令的结果 覆盖 写入到符号右侧指定的文件中
>>将左侧命令的结果 追加 写入到符号右侧指定的文件中
echo "i an new news" >> test2.txt
ls > test2.txt
2.8 vi编辑器
vi/vim是visual interface的简称,是Linux里最经典的文本编辑器,vi是命令行下对文本文件进行编辑的绝佳选择;
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,还具有shell程序编辑的能力,可以用不同颜色的字体辨别语法的正确性
2.8.1 vi/vim编辑器的三种工作模式:
命令模式:所敲得按键编辑器都理解为命令,以命令驱动执行不同的功能,此模式下不能进行文本编辑
输入模式:编辑模式,插入模式,可以对文件内容进行自由编辑
底线命令模式:以:开始,通常用于文件的保存退出
进入vi filename直接是命令模式,输入i进入输入模式,输入esc返回命令模式
命令模式输入:进入底线命令模式,命令以回车结束运行返回命令模式,输入wq退出vi
vi/vim 文件路径(路径不存在用于编辑新文件,存在用于编辑已有文件)
vim hello.txt
命令:
i 在当前光标位置进行输入模式
I 在当前行的开头进入输入模式
a 在当前光标位置之后进入输入模式
A 在当前行的结尾进入输入模式
o 在当前光标下一行进行输入模式
O 在当前光标下一行进行输入模式
esc 任何情况下输入esc都能回到命令模式
k 向上移动光标
j 向下移动光标
h 向左移动光标
l 向右移动光标
0 移动光标到当前行的开头
$ 移动光标到当前行的结尾
Pgup 向上翻页
Pgdown 向下翻页
/ 进入搜索模式
n 向下继续搜索
N 向上继续搜索
dd 删除光标所在行的内容
ndd n是数字,删除当前光标下n行
yy 复制当前行
nyy 复制当前行和下面的n行
p 粘贴复制的内容
u 撤销修改
ctrl+r 反向撤销修改
gg 跳到首行
G 跳到行尾
dG 从当前行开始,向下全部删除
dgg 从当前行开始,向上全部删除
d$ 从当前光标开始,删除到本行的结尾
d0 从当前光标开始,删除到本行的开头
底线命令模式:
:wq 保存并退出
:q 退出
:q! 强制退出
:W 保存
:set nu 显示行号
:set paste 设置粘贴模式(从外部复制内容保证格式不会错乱)
三、Linux权限管控
3.1 Linux的root用户
无论是Windows,MacOS,Linux都采用多用户的管理模式进行权限管理,linux最大权限的账户名为root(超级管理员),前面一直用的普通用户lmcool;普通用户的权限一般在HOME目录内不收限,其他地方大多只有只读和执行权限,无修改权限
su [-] [用户名](Switch User)
-表示在切换用户后加载环境变量;用户名省略表示切换到root,切换后通过exit命令(ctrl+d)退回上一个用户;
普通用户切换到其他用户需要输入密码,root用户切换到其他用户不需密码
3.1.1 sudo命令
在其他命令之前带上sudo可为这一条命令临时赋予root权限
sudo 其他命令
为普通用户配置sudo认证:
切换到root用户,执行visudo命令,会自动通过vi编辑器打开/etc/sudoers
在文件最后添加:lmcool ALL=(ALL)[TAB]NOPASSWD:ALL
NOPASSWD:ALL表示使用sudo命令无需输入密码
wq
切换回普通用户
回到/etc/sudoers删除lmcool ALL=(ALL)[TAB]NOPASSWD:ALL就取消配置了
3.2 用户和用户组
linux系统中可以配置多个用户,配置多个用户组,用户可以加入到多个用户组中
linux中关于权限的管控级别有2个级别,分别是针对用户的权限控制,针对用户组的权限控制;比如针对某文件,可以控制用户的权限,可也以控制用户组的权限
3.2.1 创建用户组
groupadd 用户组名(root用户执行)
3.2.2 删除用户组
groupdel 用户组名(root用户执行)
3.2.3 创建用户
useradd [-g -d] 用户名(root用户执行)
-g 指定用户的组,不指定-g会创建同名组并自动加入,指定-g需要组已存在,如已存在同名组,必须使用-g
-d 指定用户HOME路径,不指定,HOME默认在/home/用户名
3.2.4 删除用户
userdel [-r] 用户名(root用户执行)
-r 删除用户的HOME目录,不使用-r删除用户时HOME目录保留
3.2.5 查看用户所属组
id [用户名]
不提供用户名则查看自身
3.2.6 修改用户所属组
usermod -aG 用户组 用户名
将指定用户加入到指定用户组
3.3 查看权限控制信息
ls -l 以列表形式查看内容,并显示权限细节:(1)文件、文件夹的权限控制信息 (2)文件、文件夹所属用户 (3)文件、文件夹所属用户组
(1)权限细节,共10个槽位:
[-或d或l](-表示文件,d表示文件夹,l表示软连接) [r或-][w或-][x或-](所属用户权限) [r或-][w或-][x或-](所属用户组权限) [r或-][w或-][x或-](其他用户权限)
r:读权限,针对文件可以查看文件内容;针对文件夹可以查看文件夹内容
w:写权限,针对文件可以修改此文件;针对文件夹可以在文件夹内创建、删除、改名等操作
x:执行权限,针对文件表示可以将文件作为程序执行;针对文件夹表示可以更改工作目录到此文件夹,即cd进入
(2)
(3)
3.4 chmod命令修改权限控制
3.5 chown命令修改权限控制
四、Linux实用操作
4.1 各类小技巧快捷键
4.1.1 强制停止
ctrl+c 强制停止某些程序的运行,命令输入错误时退出当前输入
4.1.2 退出登出
ctrl+d 退出账户的登录或退出某些特定程序的专属页面如python,不能用于退出vi/vim
4.1.3 历史命令搜索
history命令
history | grep ch
!p:通过!命令前缀,自动执行上一次匹配前缀的命令
ctrl+r输入内容匹配历史命令,回车可以直接执行
4.1.4 光标移动
ctrl+a 跳到命令开头
ctrl+e 跳到命令结尾
ctrl+<- 向左跳一个单词
ctrl+-> 向右跳一个单词
4.1.5 清屏
ctrl+l
clear命令
4.2 软件安装
操作系统安装软件一般为多种方式
下载安装包(win .exe .msi)(mac .dmg .pkg)(linux centos .rpm)(linux ubuntu .deb)
系统内的应用商店(win microsoft Store)(mac appStore)(linux yum命令)
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
yum [-y] [install | remove | search] 软件名称 【y是自动确认,无需手动确认安装或卸载】【需要root权限】
软件安装CentOS和Ubuntu使用的是不同的包管理器,centOS使用yum管理器,Ubuntu使用apt管理器
apt [-y] [install | remove | search] 软件名称 【y是自动确认,无需手动确认安装或卸载】【需要root权限】
4.3 systemctl命令
linux系统很多软件(内置或第三方)均支持使用systemctl命令控制: 启动停止开机自启
能够被systemctl管理的软件,一般也称之为: 服务
systemctl start 启动 stop 关闭 status查看状态 enable开启开机自启 disable 关闭开机自启 服务名
系统内置的服务比较多,比如:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙服务
sshd,ssh服务(Finalshell远程登录Linux使用的就是这个服务)
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
yuminstall-y ntp,安装ntp软件可以通过ntpd服务名,配合systemctl进行控制
yuminstall-y httpd,安装apache服务器软件可以通过httpd服务名,配合systemctl进行控制
部分软件安装后没有自动集成到systemctl中,我们可以手动添加
ntp是一个时间同步的软件,安装完成后会自动把自己注册为系统的服务,可以通过systemctl命令控制它的启动关闭等
4.4 软连接
将文件、文件夹链接到其他位置,类似于Windows里的快捷方式
ln -s 参数1 参数2
-s 创建软连接,参数1:被链接的文件或文件夹 餐数:要链接去的目的地
cd etc/
ls
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
cd ~
ls -l
4.5 日期和时区
date命令
date [-d] [+格式化字符串]
-d按照给定的字符串显示日期,一般用于日期计算
格式化字符串:通过特定的字符串标记控制显示的日期格式
date
date +%Y-%m-%d
date "+%Y-%m-%d %H:%M:%S"
%Y 年
%y 年份后两位数字
%m 月
%d 日
%H 时
%M 分
%S 秒
%s 时间戳1970-01-01 00:00:00 UTC
date进行日期加减
date -d "+1 day" +%Y%m%d # 显示后一天的日期
通过date查看时间日期不准确,因为系统默认时区UTC
修改时区为东八区:将系统自带的localtime文件删除,将/user/share/zoneinfo/Asia/Shanghai文件链接为localtime
rm -f /etc/localtime
sudo ln -s /user/share/zoneinfo/Asia/Shanghai /etc/localtime
通过ntp程序自动校准时间
yum -y install ntp
systemctl start ntpd
systemctl enable ntpd
手动校准
ntpdate -u ntp.aliyun.com
4.6 IP地址和主机名
什么事ip地址
每一台联网的电脑都会有一个地址,用于和其他计算机进行通讯
ip地址主要有两个版本,v4和v6,IPv4的格式是a.b.c.d,abcd代表0~255的数字
可以通过命令ifconfig查看本机的ip地址,如无法使用ifconfig命令,可以安装yum -y install net-tools
还有lo表示本地回环的网卡,还有一个是虚拟机专用的网卡,是一个虚拟的网卡
特殊的ip地址:127.0.0.1指代本机
0.0.0.0 可用于指代本机,可以在端口绑定中用来确定绑定关系;在一些ip地址限制中表示所有ip的意思,如放行规则设置为0.0.0.0,表示运行任意ip访问
设么是主机名
每台电脑除了对外联络地址IP地址外,也可以有一个名字,称为主机名,无论Windows还是linux都可以给系统设置主机名
查看主机名:
hostname
修改主机名:
hostnamectl set-hostname 主机名,修改主机名(root)
hostnamectl set-hostname centos
设么是域名解析
不仅会涉及日常,去配置一些集群化的一些软件,域名解析都是很重要的
www.baidu.com是域名
访问www.baidu.com的流程如下:
访问www.baidu.com -> 检查(1)Windows系统:c:\Windows\system32\dirvers\etc\hosts文件(2)linux系统: /etc/hosts文件是否有www.baidu.com的ip地址记录 -----> 判断【1】是 -> 打开网站【2】否 -> 联网询问公开DNS服务器是否有记录www.baidu.com的IP地址
===> 判断网站存在不存在
即先查看本机的记录(私人地址本),再联网去DNS服务器(如114.114.114.114,8.8.8.8等询问)
配置主机名映射:
FInalShell是通过ip地址连接到Linux服务器的,在Windows系统:c:\Windows\system32\dirvrs\etc\hosts文件配置记录可以通过域名(主机名)连接Linux服务器
4.7 配置Linux固定IP地址
我们虚拟机的Linux操作系统IP地址是通过DHCP服务获取的
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
配置固定IP地址:
1.在vm中配置IP地址网关和网段(IP地址的范围)
编辑:虚拟网络编辑器:VMnet8:子网192.168.88.0,nat设置网关192.168.88.2,子网掩码设置为255.255.255.0
2.在linux系统中手动修改配置文件,固定IP
使用vim编辑器/etc/sysconfig/network-scripts/ifcfg-ens33网卡的配置文件
修改:BOOTRPROTO="static"
增加:IPADDR="192.168.88.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
执行:systemctl stop network
systemctl start network
ifconfig
4.8 网络请求和下载
使用ping命令检查服务器是否可联通
ping [-c num] ip或主机名
ping -c 3 baidu.com
-c : 检查的次数
ip或主机名 :被检查的服务器的IP地址或主机名地址
使用wget命令下载文件
非交互式的文件下载器
wget [-b] url
-b : 后台下载,会将日志写入当前工作目录的wget-log文件
通过tail命令监控后台下载进度:tail -f wget-log(无论下载是否完成,都会生成要下载的文件,如果下载未完成,及时清理未完成的不可用文件)
url : 下载链接
使用curl命令发起网络请求
可以获取到网站源码,获取信息,下载文件等
curl [-o] url
-o 用于下载文件,url是下载链接是可用此保存文件
url: 要发起请求的网络地址
4.9 端口
端口是设备与外界通讯交流的出入口,端口可以分为物理端口和虚拟端口两类,物理端口又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等;虚拟端口是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的。
计算机程序之间的通讯,通过IP只能锁定计算机,无法锁定到具体的程序。通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。
linux系统支持65535个端口,分为三类:
公认端口:1~1023:通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口(FInalShell远程连接Linux使用的端口),HTTPS服务的443端口,非特殊需要不要占用这个端口
注册端口:1.02~49151:通常可以随意使用,用于松散的绑定一些程序\服务(用户自定义)
动态端口:49152~65535:通常不会固定绑定程序,而是当程序对外进行网络连接时用于临时使用。(多用于出口)
计算机A微信:50001动态端口,临时找一个端口作为出口 ---> 计算机B微信5678注册端口,长期绑定等待别人链接
查看端口占用
yum -y install nmap
namp 被查看的IP地址
查看指定端口的占用情况:
yum -y install net-tools
netstat -anp | grep 端口号
netstat -anp | grep 6000:当前端口被程序(进程4645)占用
4.10 进程管理
程序运行在操作系统中,是被操作系统所管理的。为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个进程,并为每一个进程都分配一个独有的进程ID(进程号)
查看进程:
ps [-e -f]
-e : 显示出全部的进程
-f : 以完全格式化的形式展示信息(展示全部信息)
结果从左到右分别是
UID: 进程所属的用户id
PID: 进程的进程号id
PPID: 进程的父id,启动此进程的其他进程
C: 此进程的cpu占用率
STIME: 此进程的启动时间
TTY: 启动此进程的终端信号,?表示非终端启动
TIME: 进程占用cpu的时间
CMD: 进程对应的名称或启动路径或启动命令
查看指定进程:
ps -ef | grep tail
关闭进程:
kill [-9] 进程ID
-9 : 强制关闭进程
4.11 主机状态监控
top命令
类似Windows任务管理器,查看CPU,内存,进程等信息
top
q或ctrl+c退出
结果:
第一行:top:命令名称,14:39:58: 当前系统时间,up 6 min: 启动了6分钟,2 users; 2个用户登录,oad:1,5、15分钟负载
第二行:Tasks:175个进程,1running:1个进程子在运行,174 sleeping:174个进程睡眠,0个停止进程,0个僵尸进程
第三行:%Cpu(s):CPU使用率,us: 用户CPU使用率,sy: 系统CPU使用率,n; 高优先级进程占用CPU时间百分比,id: 空闲CPU率,wa: /0等待CPU占用率,hi:CPU硬件中断率,si: CPU软件中断率st: 强制等待占用CPU率
第四行:Kib Mem:物理内存,total: 总量,free: 空闲,used: 使用,buff/cache: buff和cache占用
第五行:KibSwap: 虚拟内存(交换空间),total: 总量,free: 空闲,used: 使用,buff/cache: buff和cache占用
PID:进程id
USER:进程所属用户
PR:进程优先级,越小越高
NI:负值表示高优先级,正值表示低优先级
VIRT:进程使用虚拟内存kb
RES:进程使用物理内存kb
SHR:进程使用共享内存kb
S:进程状态(S休眠、R运行、Z僵死状态、N负数优先级、I空闲状态)
%CPU:进程占用cpu率
%MEM:进程占用内存率
TIME+:进程占用cpu时间总计,单位10ms
COMMAND:进程的命令或名称或程序文件路径
top命令选项:
-p:只显示某个进程的信息
-d:设置刷新时间,默认是5s
-c:显示产生进程的完整命令,默认是进程名
-n:指定刷新次数,比如 top -n 3,刷新输出3次后退出
-b:以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i:不显示任何闲置 (idle) 或无用 (zombie) 的进程
-u:查找特定用户启动的进程
top交互式选项:
当top以交互式运行(非-b选项启动)可以用以下交互式命令进行控制
按键 功能
h键 按下h键,会显示帮助画面
c键 按下c键,会显示产生进程的完整命令,等同于-C参数,再次按下c键,变为默认显
f键 按下f键,可以选择需要展示的项目
M键 按下M键,根据驻留内存大小(RES)排序
P键 按下P键,根据CPU使用百分比大小进行排序
T键 按下T键,根据时间/累计时间进行排序
E键 按下E键,切换顶部内存显示单位
e键 按下e键,切换进程内存显示单位
l键 按下l键,切换显示平均负载和启动时间信息。
i键 按下i键,不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示
t键 按下t键,切换显示CPU状态信息
m键 按下m键,切换显示内存信息
df命令
查看磁盘使用率
df [-h]
-h : 更加人性化的单位显示
iostat命令
磁盘信息监控;查看CPU、磁盘的相关信息如磁盘速率等
iostat[-x][num1][num2]
选项:-X,显示更多信息
num1: 数字,刷新间隔,num2:数字,刷新几次
tps: 该设备每秒的传输次数 (lndicate the number oftransfers per second that were issued to the device.)。"一次传输"意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的
结果:
rrgm/s:海秒这个设备相关的速取请求都多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个F5,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge,提高IO利用率,避免重复调用);
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;sectors
wsec/:每秒写入的扇区数;
rKB/s:每秒发送到设备的读取请求数
WKB/s:每秒发送到设备的写入请求数
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
await:每一个I0请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备1/0操作的服务时间(以毫秒为单位)
%util: 磁盘利用率
sar -n DEV命令
查看网络情况
sar -n DEV num1 num2
sar -n DEV 3 2
-n : 查看网络,DEV表示查看网络接口;num1 刷新间隔num2查看次数
结果:
IFACE本地网卡接口的名称
rxpck/s 每秒钟接受的数据包
txpck/s 每秒钟发送的数据包
rxKB/S 每秒钟接受的数据包大小,单位为KB
txKB/S每秒钟发送的数据包大小,单位为KB
rxcmp/s每秒钟接受的压缩数据包
txcmp/s 每秒钟发送的压缩包
rxmcst/s 每秒钟接收的多播数据包
4.12 环境变量
使用的一系列命令本质上就是一个个可执行程序,例如cd命令的本体是/user/bin/cd,配置环境变量后,无论当前工作目录在哪里都能执行/user/bin/cd这个程序
环境变量是操作系统在运行的时候,记录的一些关键性信息,用于辅助系统运行;环境变量是一种keyvalue型结构
env
HOMEL /home/lmcool 用户的HOME路径
USER: lmcool,当前的操作用户
PWD: 当前工作目录
...
环境变量PATH:
无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。
env | grep PATH
路径之间以:隔开
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行cd命令,就从第二个目录/usr/bin中搜索到了cd命令,并执行
$符号
在nux系统中$符号被用于取”变量”的值
环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用
取得环境变量的值就可以通过语法:$环境变量名 来取得
就可以取得PATH这个环境变量的值,并通过echo语句输出出来。
echo $PATH
echo $PWD
当和其它内容混合在一起的时候,可以通过#来标注取的变量是谁
:echo $PATHIABC
4.13 Linux文件的上传和下载
通过FInalShell,在下面的文件系统界面右键下载即可,也能将本地文件拖拽进去
也可以通过rz,sz命令
yum -y install lrzsz
rz
sz 文件名
# 文件会自动下载到桌面的fsdownload文件夹中
# rz,sz命令需要终端软件支持才能正常运行如Xshell,FInalShell,SecureCRT等
4.14 压缩和解压
五、实战软件部署
5.1 MySQL5.7在centOS安装[单机软件]
安装操作需要root权限
安装
-
配置yum仓库
# 更细秘钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 安装MySQL yum库 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
由于MySQL不在centOS的官方仓库,所以我们通过上述rpm命令导入MySQL仓库的秘钥,配置MySQL的yum仓库
2.使用yum安装MySQL
# yum安装mysql yum -y install mysql-community-server
3.安装完成后,启动mysql并配置开机自启动
systemctl start mysqld systemctl enable mysqld
mysql安装完成后,会自动配置名为mysqld的服务,可以被systemctl所管理
4.检查mysql的运行状态
systemctl status mysqld配置
配置
主要配置管理员用户root的密码及配置允许远程登录的权限
1.获取mysql的初始密码
# 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log
2.登录mysql数据库系统
# 执行
mysql -uroot -p
3.修改root用户密码
# 在mysql控制台内执行
ALERT USER 'root'@'localhost' IDENTIFIED BY '密码';
# 密码需要符合:大于8位,大小写特殊符号
4.[扩展]配置简单密码
# 降低安全级别
set global validate_password_policy=LOW;
# 长度最低4位
set global validate_password_length=4;
ALERT USER 'root'@'localhost' IDENTIFIED BY '密码';
5.[扩展]配置root运行远程登录
有风险
# 授权远程登录
grant all privileges on *.* to root@"ip地址" identified by "密码" with grant option;
# ip地址即运行登录的ip地址,填%表示允许任何地址
# 密码可以与本机密码不同
# 刷新权限
flush privileges;
6.退出控制台页面
exit
ctrl+d
7.检查端口
mysql默认绑定3306端口,可用端口号检查网络状态等
netstart -anp | grep 3306
5.2 8.0,5.7/8.0在Ubuntu安装
略
5.3 Tomcat安装部署[单机软件]
5.4 Nginx安装部署[单机软件]
5.5 RabbitMQ安装部署[单机软件]
5.6 Redis安装部署[单机软件]
5.7 Elasticsearch安装部署[单机软件]
5.8 集群化软件安装前置准备
包括创建多台虚拟机,配置主机名映射,SSH免密登录等
1.关机当前虚拟机
2.新建文件夹:虚拟机集群
管理克隆创建完整克隆
3.配置IP地址,
修改主机名为node1,固定IP地址192.168.88.131
修改主机名为node2,固定IP地址192.168.88.132
修改主机名为node3,固定IP地址192.168.88.133
su - root
hostnamectl set-hostname node1
hostname
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTRPROTO="static" #修改
IPADDR="192.168.88.130" #增加
NETMASK="255.255.255.0" #增加
GATEWAY="192.168.88.2" #增加
DNS1="192.168.88.2" #增加
:wq
systemctl restart network
ifconfig
ping 192......
finalshell -> 空白小文件夹图标 -> 添加新链接 -> SSH连接 -> 名称node1,主机192.168.88.131,用户名密码root 1234
主机名映射:
在Windows系统中修改hosts文件,填入
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
在Linux的/etc/hosts填入
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
配置SSH免密登录
SSH服务是一种用于远程登录的安全认证协议
我们通过FInalShell远程连接到Linux就是使用的SSH服务
SSH服务支持:
1.通过账户+密码的认证方式来做用户认证
2.通过账户+密钥文件的方式做用户认证
SSH可以让我们通过SSH命令远程登录到其他主机上比如:
在node1执行: ssh root@node2 将以root用户登录node2服务器,输入密码即可成功登陆
或者ssh node2,将以当前用户直接登录到node2服务器
退出:
ctrl+d
exit
SSH免密配置
ssh-keygen -t rsa -b 4096
# 回车到底
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
配置JDK环境
下载linux版的jdk
https://www.oracle.com/java/technologies/downloads/
拖到root里面执行下面的程序
Oracle账号密码:
[email protected]
rr7rwibC@
ls
mkdir -p /export/server
tar -zxvf jdk-8u381-linux-x64.tar.gz -C /export/server/
cd /export/server
ls -l
ln -s /export/server/jdk1.8.0_381 /export/server/jdk
ls -l
# 修改环境变量
vim /etc/profile
export JAVA_HOME=/export/server/jdk #添加
export PATH=$PATH:$JAVA_HOME/bin
:wq
source /etc/profile
echo $PATH
rm -f /usr/bin/java
ln -s /export/server/jdk/bin/java /usr/bin/java
java -version
关闭防火墙和SELinux
systemctl stop firewalld
systemctl disable firewalld
SELinux是Linux的一个安全模块,用来限制用户和程序的相关权限
vim /etc/sysconfig/selinux
# 第7行
SELINUX=disabled
# 保存退出后,重启虚拟机,disabled写错无法重启系统!!!
init