Linux

Linux操作系统

组成:

Linux系统内核:调控硬件

系统级应用程序:系统自带的应用程序

用户通过第三方应用程序或者系统程序调用内核调度硬件

操作:Linux系统通过命令行的形式进行操作

虚拟机

通过软件:模拟计算机硬件,并给虚拟硬件安装真实的操作系统

软件:VMware

远程控制

电脑Windows系统和虚拟机的Linux系统之间文件交互麻烦,所以需要通过软件在Windows中远程遥控

通过软件 :FinalShell

安装完成之后 在虚拟机中打开终端

输入:ifconfig

在ens33的内容中找到inet 后面的地址为虚拟机的IP地址

打开FinalShell 中左上角的文件夹图标,打击第一个文件夹图标使用SSH连接

在主机位置输入虚拟机IP地址,并填入相关数据完成

双击连接的系统,选择接收并保存即可

注意:虚拟机关闭或者重启之后,IP地址可能改变,需要重新修改FinalShell中的IP地址

虚拟机快照

在使用过程中,Linux系统可能出现损坏,通过快照将虚拟机当前的状态保存下来,之后可以通过快照恢复

虚拟机关机后,右键选择快照,快照拍摄,快照管理选择想恢复的快照,选择转到即可

基础

目录结构

和Windows不同,Linux系统是没有盘符结构的

全部文件都在**根目录/**下面

路径描述为 /XXX/xx.txt 开头的/表示根目录,之后的表示层级关系

命令基础

命令基础格式:command [-options] [parameter]

  • **command: ** 命令本身
  • -options:[可选,非必填]命令的一些选项,可以控制命令的行为细节
  • parameter:[可选,非必填] 命令的参数,多用于命令的指向目标

实例:

ls -l/home/xxxx 以列表的形式,显示/home/xxxx的内容

ls:是命令本身

-l :是选项

/home/xxxx :是参数

cp -r test1 test2 复制文件test1成为test2

cp:是命令本身

-r :是选项

test1 test2 :是参数

命令入门

ls命令

ls [-a -l -h] [路径]

如果不使用选项和参数,直接使用本体ls:表示以平铺的方式,列出当前工作目录的内容

当前工作目录:home目录 终端启动时,默认的路径为home目录下的个人用户目录

home目录 :linux系统的每个操作用户在 /home/用户名 下都有个人用户目录

-a: 表示all 列出所有文件(包括隐藏文件)

-l: 表示以列表(竖向排列)的形式展示内容,并展示更多信息

-h:表示以易于阅读的形式,列出文件大小 如:K,M,G (要和-l一起使用)

选项可以组合使用: ls -a -l ls -al ls -la

cd/pwd命令

cd [参数] 表示切换目录

如果不写参数 ,表示回到用户的home目录

pwd 无选项,无参数,直接执行即可 表示查看当前所在的工作目录

相对路径,绝对路径和特殊路径符

相对路径:以当前目录为起点 如:cd Desktop 表示切换到当前目录下的Desktop目录中

绝对路径:以根目录为起点,以/开头 如:cd /home/yzf522/Desktop

特殊路径符:

. :表示当前目录 如:cd ./Desktopcd Desktop 一样表示切换到当前目录下的Desktop目录中

.. :表示上一级目录 如:cd .. 切换回上一级目录 cd ../.. 表示切换到上两级目录

~:表示home目录 如 :cd ~ 表示切换到home目录 cd ~/Desktop 表示切换到home目录下的Desktop

mkdir命令

mkdir [-p] 路径/文件名 表示创造文件夹

-p :表示自动创造不存在的父目录,适用于创造连续多层级目录

案例:mkdir /home/yzf522/001 表示在yzf522中创造001文件

案例mkdir -p /home/yzf522/001/002/003 表示在001中创造002,在002中创造003

注意:创造文件夹涉及权限问题,无法在home外创建

touch命令

touch 路径/文件 在该路径下创造文件

案例:touch /home/yzf522/001/abc.txt 在001文件夹创造abc.txt文件

小细节:ls -la 的时候,前面为d的就是文件夹,为 - 的就是文件

cat命令

cat 路径 表示查看该路径的文件(全部显示)

案例:cat ./001/abc.txt 查看当前目录下的001文件夹的abc.txt文件

more命令

more 路径 表示查看该路径的文件(支持翻页:如果内容过多,可以一页页展示 )

操作:空格翻页,按q退出

案例 :more /etc/services 表示查看这个路径下的系统文件

cp命令

cp [-r] 参数1路径 参数2路径 表示将参数1复制到参数1

-r 用于文件夹复制

案例:

cp 001/abc.txt 001/002 表示将001的TXT文件复制到002

cp 001/abc.txt 001/002/abc2.txt 可以改文件的名字

cp -r 001/002 001/003 表示复制002文件夹到003中(会自动创造003文件夹)

mv命令

mv 参数1 参数2 表示移动参数1到参数2

参数1:表示被移动的文件或文件夹

参数2:表示要移动到的地方,如果目标不存在,则进行改名,确保目标存在

rm命令(支持通配符)

rm [-r -f ] 参数1 参数2.......参数n 表示删除文件

-r:删除文件夹

-f:强制删除 通过su - root切换root权限权限用户使用该选项,密码和普通用户默认一样,输入exit 退回普通用户

通配符:

***** 表示通配符,即匹配任意内容(包含空)

如:

test*:表示匹配任何以test开头的内容

*test:表示匹配任何以test结尾的内容

test:表示匹配任何包含test的内容

案例:rm -r *00 表示删除所有00开头的文件夹

注意:rm是一个危险命令 ,不要在root权限下使用rm -rf/rm -rf /*这相当于在c盘进行格式化

which命令

which 命令 前面的命令本质上是二进制程序,可以通过which查找命令程序的存放位置

案例: which cd

find命令(支持通配符)

find 起始路径 -name "查找的文件名称" 表示按文件名进行查找文件

案例:find / -name "*00*" 在根目录下查找所有包含00的内容

find 起始路径 -size +/-n[kMG] 表示按文件大小进行查找文件

+,-:表示大于和小于

n:表示数字

kMG:表示单位

案例:find / -size +100M表示在根目录下查找大于100MB的文件

grep命令

grep [-n] 关键字 文件路径 从文件中通过关键字过滤文件行 文件路径可作为内容输入端口

-n:表示在结果中显示匹配行的行号

关键字:用于筛选关键行,如果有空格等特殊符号,可以使用“”进行包围

案例:grep yzf522 /hame/yzf522/002/abc.txt 查找abc.txt中包含yzf522的行

grep -n boy /hame/yzf522/002/abc.txt 查找abc.txt中包含boy的行,并显示行号

wc命令

wc [-c -m -l -w ] 文件路径 表示统计文件的行数,单词数等 文件路径可作为内容输入端口

-c:统计字节数

-m:统计字符数

-l:统计行数

-w:统计单词数

如果直接执行wc命令,则显示 行数,单词数,字节数,文件位置

案例:wc /home/yzf522/002/abc.txt 显示abc.txt的行数,单词数,字节数,文件位置

管道符:|

A命令 | B命令 表示将A命令的结果作为B命令的输入

案例:cat /home/yzf522/002/abc.txt | wc -m 表示将查看abc.txt的内容作为wc命令的内容输入

案例:cat /home/yzf522/002/abc.txt | grep yzf522 表示将查看abc.txt的内容作为grep命令的内容输入

案例:ls /home/yzf522 | grep 001 表示将显示yzf522的文件夹作为筛选001的内容输入

注意:管道符可以重复使用,如:A|b|c|d

[照片上传不了,可进入链接看]: “https://bu.dusays.com/2024/07/24/66a10a9702128.png

echo命令

echo 输出内容 表示在命令行内输出指定内容 带空格等特殊符号时用“ ”包裹

案例:echo "yzf is good boy"

反引号`

1
`命令`

搭配echo使用,用反引号包裹的命令字符可以直接执行,而不是输出命令字符

案例:echo ~pwd~ 显示当前文件夹

重定向符>和>>

A命令 > 文件 A命令的结果覆盖写到文件中

A命令 >> 文件 A命令的结果追加写到文件中

案例:echo "yzf522" > /home/yzf522/002/abc.txt 将yzf522覆盖写入abc.txt

案例:echo "good" >> /home/yzf522/002/abc.txt 将good追加写入abc.txt

案例:ls > /home/yzf522/002/abc.txt 将yzf522的文件夹覆盖写入abc.txt

tail命令

tail [-f -数字 ] 路径 查看文件尾部的内容,追踪文件的最新更新

-f:表示持续追踪,如果有多个窗口操作同一个文件,则持续更新,通过CTRL+C结束追踪

-数字:表示查看尾部多少行,不填默认10行

案例:tail -5f /home/yzf522/002/abc.txt 先显示abc.txt的最后5行,并持续追踪

vi、vim编辑器

vim是vi的加强版,一般情况下使用vim

vim有3个模式:

  • 命令模式:初始模式,所有按键都是快捷键,不能对文本进行自由编辑

  • 输入模式:插入模式,可以对文本进行自由编辑

  • 底线命令模式:开始,通常用于文件的保存,退出

vi/vim 文件路径 如果文件存在就打开文件,如果文件不存在,就创建新文件

常见快捷键:

模式 命令 描述
命令模式 i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置 之后 进入输入模式
命令模式 I 在当前行的开头,进入输入模式
命令模式 A 在当前行的结尾,进入输入模式
命令模式 o 在当前光标下一行进入输入模式
命令模式 O 在当前光标上一行进入输入模式
输入模式 esc 任何情况下都能通过esc回到命令模式
命令模式 PGUP/PGDN 向上翻页/向下翻页
命令模式 0/$ 光标移动到开头/结尾
命令模式 / 搜索模式
命令模式 n/N 向下/向上搜索
命令模式 dd/ndd 删除光标所在行,n是数字删除光标向下n行
命令模式 yy/nyy 复制当前行,n是数字复制向下n行
命令模式 p 粘贴
命令模式 u 撤销
命令模式 ctrl+r 反撤销
命令模式 gg 跳到首行
命令模式 G 跳到尾行
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到行尾
命令模式 d0 从当前光标开始,删除到行首
底线命令模式 :w,q,wq 保存,退出,保存并退出
底线命令模式 :q! 强制退出
底线命令模式 :set nu 显示行号
底线命令模式 :set paste 设置为粘贴模式:确保从外部复制的格式一致

进阶

root用户

root用户拥有最大的系统操作权限,普通用户在很多地方的权限是受限的,如:

普通用户只能在home目录内操作,出了home目录,普通用户仅有只读和执行的权限,无修改权限

su命令

su [-] [用户名] 切换用户

-:表示是否在切换用户后加载环境变量

用户名:如果不填,默认切换到root用户

注意:普通用户切换其他用户需要密码(密码不显示),root用户不用

exit命令

exit 表示退回上一个用户

也可以使用 Ctrl键+d

sudo命令(需要配置sudo认证)

sudo 其他命令为其他命令临时赋予root授权

不建议长期使用root用户,避免造成系统损坏

可以使用sudo命令为普通命令授权,临时以root权限运行

但并不是所以用户都能使用sudo命令,需要为普通用户配置sudo认证

配置sudo认证

切换到root用户,执行visudo命令

在文件最后一行添加 用户名 ALL=(ALL) +TAB键+NOPASSWD:ALL

回到命令模式,保存并退出

用户,用户组

Linux系统关于权限管控有2个级别:

  • 针对用户的权限控制
  • 针对用户组的权限控制

比如:针对某个文件,可以控制用户的权限,也可以控制用户组的权限

用户组管理(root用户执行)

  • 创建用户组:groupadd 用户组名
  • 删除用户组:groupdel 用户组名

用户管理(root用户执行)

  • 创建用户:useradd [-g -d] 用户名

    -g:指定用户组,如果不指定,会自动创建同名组并加入,指定需要组存在,如果存在同名组,必须使用-g

    -d:指定用户home路径,如果不指定,home目录默认在:/home/用户名

    案例:useradd -g yzf001 -d /home/yzf533 yzf533 创建用户yzf533,用户组为yzf001,目录放在/home/yzf533

  • 删除用户:userdel [-r] 用户名

    -r:删除用户的home目录,如果不填,删除用户时,home目录保留

    案例:userdel -r yzf533

  • 查看用户所属组:id [用户名]

    如果不填用户名,则查看当前用户的用户组

  • 修改用户所属组:usermod -aG 用户组 用户名

    将指定用户加入用户组

    案例:usermod -aG yzf522 yzf533 将yzf533加入yzf522组

getent命令

  • 查看当前系统中有哪些用户:getent passwd

​ 共有7份信息

​ 用户名:密码(x):用户id:组id:描述信息(无用):home目录:执行终端(默认bash)

  • 查看当前系统中有哪些用户组:getent group

    共有3份信息

    组名称:组认证(显示为x):组id

权限控制

查看权限控制

在通过 ls -l 查看内容的时候,会展示权限细节

  • 序号1:表示文件,文件夹的权限控制信息
  • 序号2:表示文件,文件夹所属的用户
  • 序号3:表示文件文件夹所属的用户组

权限控制信息中

  • r:读权限:对文件或文件夹有查看的权限

  • w:写权限:对文件或文件夹有修改操作的权限

  • x:执行权限:对文件有作为程序执行的权限,对文件夹有更改工作目录到此文件的权限,即cd加入权限

修改权限控制

修改文件权限控制:chmod [-R] 权限 文件/文件夹

-R:对文件夹内所有文件进行相同的操作

权限:

  • u=?,表示用户所属权限
  • g=?,表示组所属权限
  • **o=?**,表示其他用户权限

案例:chmod u=rwx,g=rw,o=x /home/yzf522/002/abc.txt 修改用户权限为全部,修改组权限为可读写,修改其他用户权限为可作为程序执行

注意:只有文件所属的用户或root用户可以使用这个命令

除此之外,还有快捷写法:chmod 751 /home/yzf522/002/abc.txt u=7,g=5,o=1

r=4,w=2,o=1;本质上是二进制

修改文件,文件夹的所属用户和用户组:chown [-R] [用户][:][用户组] 文件/文件夹

-R:对文件夹内所有文件进行相同的操作

:用于分隔,修改用户组必须前面带:

案例:chown : yzf001 /home/yzf522/002/abc.txt修改abc.txt的用户组为yzf001

注意:普通用户无法修改所属用户和组,只有root可以

小技巧

快捷键 功能
Ctrl键+D 退出,常用于退出账户登录或者某些特定软件的退出 ps:不能退出vim
Ctrl键+C 强制停止,常用于程序强制停止,命令输入错误,重新输入
Ctrl键+R 历史命令搜索,回车执行,常用于历史久远的命令搜索,不想执行可按←→键获取命令
Ctrl键+a/e/←/→ 移动光标,a为到命令开头,e为到命令结尾,←为左跳一个单词,→为右跳一个单词
Ctrl键+L 清空终端屏幕,命令clear效果相同

历史命令查看:

history:查看历史命令

!?:历史命令搜索,?是指开头,该命令会自下而上搜索,并匹配最近的一条执行,常用于近期的命令搜索

软件安装

yum命令(需要root权限和联网)

yum [-y] [install | remove | search] 软件名 RPM包软件管理器,自动安装软件并解决依赖问题

-y:自动确认,无需手动确认安装或卸载过程

  • install:安装
  • remove:卸载
  • search:搜索

案例:yum search wget 搜索是否有wget安装包

yum -y install wget安装wget程序

systemctl命令

systemctl start |stop |status |enable |disable 服务Linux有很多软件支持用该命令控制:启动,停止,开机自启,一般能被该命令控制的软件称为 服务

  • start :启动
  • stop :关闭
  • status:查看状态
  • enable :开启开机自启
  • disable:关闭开机自启

案例:sudo yum install ntp下载ntp时间同步软件

systemctl status ntpd 查看ntpd的状态

systemctl start ntpd 启动ntpd服务(需要root权限)

systemctl enable ntpd 开启开机自启(需要root权限)

注意:有的第三方软件没有自动集成到systemctl中,需要手动添加

软链接(快捷方式)

ln -s 参数1 ~ 参数2 将参数2变成参数1的软链接(快捷方式)

  • -s:表示创造软链接
  • 参数1:被链接的文件或文件夹
  • 参数2:要链接去的地方

案例:ln -s /home/yzf522/002/abc.txt~/home/yzf522/abc.txt 在用户目录创造abc.txt的软链接

注意:软链接会指向原来的地址

时间和日期

通过date 命令可以查看时间

修改时区:东八区

1
sudo rm -f /etc/localtime
1
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

上面安装的ntp可以联网自动校准时间

IP地址和主机名和域名

IP地址

每一台联网的电脑都会有一个ip地址,用于和其他计算机进行通讯

IP地址有2个版本:v4,v6

IPv4:地址格式:a.b.c.d ,abcd表示0~255的数字 ,如:192.168.88.101就是一个标准的IP地址

可以通过ifconfig

特殊的IP地址:

  • 127.0.0.1:用于代指本机

  • 0.0.0.0:

    1.可以用于代指本机

    2.可以在端口绑定中用来确定绑定关系

    3.在一些IP地址限制中,表示所有IP的意思,如:放行规则设置为0.0.0.0,表示允许任意IP访问

主机名

每一台联网的电脑除了都会有一个ip地址外,也有一个名字,称为主机名

通过hostname命令查看

通过hostnamectl set-hostname 主机名 修改主机名(需要root权限)

域名解析(先查电话簿,没有打114)

由于IP地址难以记忆,我们可以通过主机名或字符地址代替数字化的IP地址

实际上,我们一直通过字符化的地址去访问服务器,很少指定IP地址

字符化的地址我们称为域名 如:www.baidu.com,这是百度的网址

通过域名解析,我们可以拿到IP地址进行访问服务器:

当我们访问一个网址的时候,游览器会先检查本地的hosls文件,查看是否有匹配的IP地址记录

  • 如果有,就会打开网站,没有就显示网站不存在
  • 如果没有,就会联网访问公开的DNS服务器中是否有记录匹配的IP地址,有就打开,没有就显示网站不存在

DNS服务器一般为:114.114.114.114或者8.8.8.8

配置主机名映射

Windows中:用管理员权限打开Windows/System32/drivers/etc的hosts文件

在下面添加: IP地址 主机名(测试之后发现需要将文件的只读关闭,然后主机名不能使用数字

配置Linux系统的固定IP地址

用于当前虚拟机的Linux系统的IP地址是通过DHCP服务获取的

DHCP:动态获取IP地址,每次重启设备都会获取一次,可能导致IP地址频繁变更

如果IP地址变更,导致我们连接Linux系统失败,需要修改IP地址适配和主机名映射,比较麻烦,所以需要固定IP地址

  • 第一步:在VM中配置IP地址网关和网段

    在VM左上角的编辑中的虚拟网络编辑器中的VMnet8,启动修改设置

    修改子网ip为192.168.66.0,66部分可以任意修改,表示66.0~254的网段

    子网掩码确认为255.255.255.0

    在NAT设置中,网关设置为66.2,66部分和子网上面保持一致

  • 第二步:在Linux系统中修改配置文件,固定IP地址

    使用 VIM编辑 /etc/sysconfig/network-scripts/ifcfg-ens33(需要root权限)

    BOOTPROTO=”dhcp”改为BOOTPROTO=”static”(动态改静态)

    新增:

    IPADDR="192.168.89.130"(IP地址)

    NETMASK="255.255.255.0"(子网掩码)

    GATEWAY="192.168.89.2"(网关)

    DNS1="192.168.89.2"(域名解析服务器,同网关一样即可,VM会帮我们自动解析域名)

  • 第三步

    重启网卡:

    sudo systemctl restart network

网络传输

ping命令

ping [-c 数字] ip或主机名 检查指定网络服务器是否是可联通状态

-c:检查次数,如果不指定,将会无限次数持续检查,可Ctrl键+C退出

案例:ping yzf522.github.io检查本网站的状态

wget命令

wget [-b] url 文件下崽器,在命令行内下载网络文件

-b:后台下载,下载日志写入到当前工作目录的wget-log

注意:文件下载到当前工作目录,无论是否下载完成,都会产生文件,记得删除

curl命令

curl [-o] url 可以发送网络请求,可用于下载文件,获取信息

-o:用于下载文件,当url是下载链接时,可用此选项保存文件

案例: curl cip.cc cip.cc是一个获取网络信息的网站

本质上就是访问网站,但是获取回来的HTML源码没有办法渲染出来网页

端口

端口是设备与外界交流的出入口,分为:

  • 物理端口:又称为接口,可见,如USB接口
  • 虚拟端口:指计算机内部的端口,不可见,用来操作系统和外界进行交互

计算机之间可以通过ip地址进行相互访问,但是无法锁定具体的应用程序

通过端口可以锁定计算机上的具体程序,如A计算机的QQ的为(50001端口)B计算机的QQ为(12345端口)

通过端口,两台计算机的QQ可以继续沟通访问

ip地址类似于小区地址,端口类似于住户(程序)的门牌号

Linux系统的端口:

Linux支持65535个端口,分为3类:

  • 公认端口(1~1023):给一些系统内置软件和知名软件预留使用的端口,如ssh服务为22端口,非特殊需要,不要占用
  • 注册端口(1024~49151):通常可以随意使用,用于松散的绑定一些程序或服务,如自己写的程序
  • 动态端口(49152~65535):通常不会固定绑定程序,而是当程序对外进行网络连接时,用于临时使用

查看端口占用

查看全部端口:nmap 被查看的IP地址

安装:sudo yum -y install nmap

案例:nmap 127.0.0.1 查看本机的端口占用

查看指定端口:netstat -anp | grep 端口号

安装:sudo yum -y install net-tools

案例:netstat -anp | grep 111 查看包含111的端口

576为进程号,0.0.0.0为本机,111为使用的端口

进程管理

程序运行在操作系统中,被操作系统管理,

每个程序在运行的时候,被系统注册为系统中的一个进程并分配一个独有的id进程号

查看进程

ps [-e -f] 查看全部进程

-e:显示全部进程

-f:以完成格式化的形式展示全部信息

案例:ps -ef

从左到右分别是:用户ID,进程号,进程的父ID(启动次进程的其它进程),CPU占用率,进程启动时间,启动此进程的终端序号(?为非终端启动),进程占用CPU的时间,进程的启动命令或路径

通过管道符可以查看指定进程

案例:ps -ef | grep tail 通过管道符筛选包含tail的进程,一般在tail卡住时,复制一个新窗口进行

关闭进程

kill [-9] 进程号ID 不加-9,就是发送信息加进程关闭,送把刀让他自杀

-9:强制关闭,直接刀了

主机状态

查看系统资源占用(类似Windows任务管理器)

通过top命令,按Q或者Ctrl键+C退出(默认5秒刷新一次)

重点:

第一行:负载达到1的话,代表一颗CPU核心使用100%

第三行:us的用户CPU使用率,sy的系统CPU使用率

第四,五行:free我们用了多少,used我们剩余多少

进程中:PID进程号,RES物理内存

选项:**-p PID** 显示进程的信息 ,**-i** 不显示闲置的进程

交互式:P键 根据CPU使用率进行排序

查看磁盘信息监控

通过df [-h]命令

-h:以人性化的单位显示

通过iostat [-x] [数字1] [数字2] 查看CPU和磁盘信息

-x:显示更多信息

数字1:刷新间隔

数字2:刷新次数

查看网络状态监控

通过sar -n DEV [数字1] [数字2]

数字1:刷新次数,不填为1次

数字2:查看次数,不填为无限次

环境变量

简而言之,环境变量就是一个记录的关键信息的变量,用来辅助系统的运行

通过env命令查看系统中记录的环境变量

环境变量:PATH

PATH记录了系统执行任何命令的搜索路径,路径之间以:隔开

执行命令的时候,会搜索每个路径,找到匹配的程序本体执行

所以无论我们在哪个工作目录中都能使用命令

$符号

$ 环境变量名 用于取变量的值,一般搭配echo使用

搭配echo使用时,建议加{},如echo ${PATH} ABC 输出变量值的同时在后面加上ABC

设置环境变量

临时:

export 变量名=变量值 关机之后就无了

永久:

  • 针对当前用户:配置在当前用户的:~/.bashrc文件中
  • 针对所有用户:配置在系统的:/etc/profile文件中
  • 通过语法:source 配置的文件 生效

自定义环境变量PATH

在我们自己写了一个程序之后,我们要把路径写入PATH中,不然无法使用

如:

mkdir /home/yzf522/hahaha 在yzf522中创造一个hahaha文件夹

cd hahaha , vim ha 到hahaha文件夹中创造ha文件

echo "哈哈哈",在文件中写入命令

chmod 755 ha 修改文件权限为可以以程序执行

vim /etc/profile , export PATH=$PATH:/home/yzf522/hahaha 在配置文件中,先取PATH本来的值,再在后面加上新的路径(路径不要包括程序文件)

source /etc/profile 刷新文件

https://bu.dusays.com/2024/07/26/66a38f211b544.png

上传和下载

下载:

在远程操控软件中,在窗口下面有文件管理器,找到需要下载的文件右键下载即可,会下载到桌面

有的文件需要修改软件中登录用户为root才能查看和下载

上传:

直接将文件拖到软件中相应的文件即可

压缩和解压

tar [-c v x f z C] 参数~N命令

  • .tar方式:

    只是简单的封装,没有减少什么体积

  • .gz方式:

    通过压缩算法,极大减少体积

压缩:

  • 组合1:

    tar -cvf abc.tar 1.txt 2.txt 3.txt 将1,2,3文件压缩为压缩包abc.tar

  • 组合2:

    tar -zcvf abc.gz 1.txt 2.txt 3.txt 将1,2,3文件压缩为压缩包abc.gz

注意: -z一般放在最前,**-f一定放在最后,-C**在命令最后

解压:

  • 组合1:

    tar -xvf abc.tar 将tar压缩包解压到当前目录

  • 组合2:

    tar -xvf abc.tar -C 路径 将压缩包解压到指定目录

  • 组合3:

    tar -zxvf abc.gz -C 路径 将gz压缩包解压到指定目录


zip [-r] 参数~N 命令压缩

-r :压缩中文件夹

unzip [-d] 压缩包解压到文件夹

-d:同-C一样,指定解压地点

注意:解压时如果有同名文件和文件夹会直接覆盖

提升

MySQL8.0版本

  1. 配置yum仓库:

    更新秘钥

    1
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

    安装MySQL的yum库

    1
    rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
  2. 使用yum安装MySQL

    1
    yum -y install mysql-community-server
  3. 启动并配置开机自启

    1
    systemctl start mysqld
    1
    systemctl enable mysqld
  4. 获取MySQL密码 (+开头)

    1
    grep 'temporary password' /var/log/mysqld.log
  5. 登录MySQL数据库系统

    1
    mysql -uroot -p
  6. 修改root密码(数字>8,大写字母,特殊符号)

    1
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
  7. [扩展],配置root的简单密码(123456.)

    1
    2
    set global validate_password.policy=0:		# 密码安全级别低
    set global validate_password.length=4; # 密码长度最低4位即可
  8. 允许root远程登录,并设置远程登录密码

    1
    2
    create user 'root'@'%'IDENTIFIED WITH mysql_native_password BY'密码!';	#第一次设置
    ALTER USER 'root'@'%'IDENTIFIED WITH mysql_native_password BY'密码'; #修改密码

    注意:默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登陆MySQL系统

  9. 退出

    1
    exit或者Ctrl键+d
  10. 检查端口

    1
    netstat -anp | grep 3306

Tomcat

web应用程序托管平台

  1. 下载JavaLinux版本并上传root用户的文件夹(在远程软件上使用root登录)

  2. 创建文件夹,用来部署JDK,将JDK和Tomcat都安装部署到:/export/server内

1
mkdir -p /export/server
  1. 解压jdk安装文件
1
tar -zxvf 文件.gz -C /export/server
  1. 配置jdk的软链接
1
2
3
cd /export/server/             	#转到安装目录
ls -l #查看版本名称
ln -s /export/server/版本名称 /export/server/jdk
  1. 配置JAVA_HOME环境变量,以及将$JAVA_HOME/bin文件央加入PATH环境变量中
1
2
3
4
vim /etc/profile 						
export JAVA_HOME=/export/server/jdk #添加进文件
export PATH=$PATH:$JAVA_HOME/bin #添加进文件
source /etc/profile #刷新文件
  1. 替换系统Java

    1
    2
    3
    4
    5
    which java  				#找到系统Java的地址
    rm -f /usr/bin/java #删除系统Java
    ln -s /export/server/jdk/bin/java /usr/bin/java 复制我们的Java到系统Java处
    ./java -version #查看两个Java版本是否一致
    java -version
  2. 安装并部署Tomcat

建议用非root用户部署,防止网站被黑后,被别人拿到root权限

创造一个Tomcat用户部署

1
useradd tomcat
  1. 下载Tomcat

注意:官方更新后会输出部分版本连接,可官网程查询版本号修改

1
2
3
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
#如果出现https相关错误,可以使用-n0-check-certificate选项
wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.26/bin/apache-tomcat-10.1.26.tar.gz
  1. 解压
1
tar -zxvf 压缩包.gz -C /export/server
  1. 创造tomcat软链接(版本记得核对)
1
2
3
ln -s /export/server/apache-tomcat-10.1.26 /export/server/tomcat
chown -R tomcat:tomcat tomcat #修改用户和用户组
chown -R tomcat:tomcat apache-tomcat-10.1.26 #修改用户和用户组
  1. 切换tomcat用户
1
su - tomcat
  1. 启动tomcat

    1
    /export/server/tomcat/bin/startup.sh
  2. 查看端口

    1
    netstat -anp | grep 8080
  3. 放行tomcat需要使用8080外部访问权限

    CentOS系统默认开启防火墙,防止外部网络流量访问内部系统,

    如果想要tomcat正常使用,需要对8080端口放行

    方法1:关闭防火墙

    1
    2
    systemctl stop firewalld		#关闭
    systemctl disable firewalld #停止自启动

    方法2:配置防火墙规则,放行8080端口

    1
    2
    firewalld -cmd --add-port=8080/tcp --permanent 	#前面表示放行,--permanent表示永久生效
    firewalld -cmd --reload #重新载入防火墙使其生效
  4. 可以使用192.168.89.130:8080访问查看效果

NGINX

可以托管web应用程序成为网页服务,也可以作为流量代理服务器,控制流量中转

  1. 安装yum依赖程序

    1
    yum install -y yum-utils
  2. 手动添加,nginx的yum仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# root执行
# 创建文件使用vim编辑
vim /etc/yum.repos.d/nginx.repo
# 填入如下内容并保存退出
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  1. 通过yum安装最新稳定版的nginx
1
yum install -y nginx
  1. 启动
1
2
3
4
5
systemctl start nginx		#启动了
systemctl stop nginx #停止
systemctl status nginx #运行状态
systemctl enable nginx #开机自启
systemctl disable nginx #关闭开机自启
  1. 配置防火墙放行

方法1:关闭防火墙

1
2
systemctl stop firewalld		#关闭
systemctl disable firewalld #停止自启动

方法2:配置防火墙规则,放行80端口

1
2
firewalld -cmd --add-port=80/tcp --permanent 	#前面表示放行,--permanent表示永久生效
firewalld -cmd --reload #重新载入防火墙使其生效
  1. 可以使用192.168.89.130:80访问查看效果

完结撒花