linux基础命令

ls命令

ls命令的作用是列出目录下的内容

ls命令用法

-a 列出全部文件,包含隐藏的文件
-l 显示每个文件的详细信息
-h 以人性化的方式显示文件的大小,带上大小单位。需配合-l选项使用

ls命令举例

1
2
ls -a /     #列出根目录下所有文件
ls -lh /

cd命令

cd命令用于切换工作目录(change directory)

cd命令举例

1
2
cd      #切换到用户家目录下
cd / #切换到根目录

pwd命令

pwd命令可以查看当前工作目录的具体路径(print work directory)

pwd命令举例

1
pwd

mkdir命令

mkdir命令可以创建新的文件夹(make directory)

mkdir命令用法

-p 级联创建,自动创建不存在的父目录

mkdir命令举例

1
2
3
4
5
mkdir /home/sunday/test
ls /home/sunday/

mkdir -p /home/sunday/a/b/c
ls /home/sunday/

创建文件夹需要修改权限,普通用户只能在其HOME目录内创建新的文件夹!

touch命令

touch命令用来创建一个新的文件

touch命令举例

1
touch test.txt  #在当前目录下新建一个文件test.txt

tips:在linux中,文件使用-标识,文件夹使用d标识,软链接使用l标识

cat命令

cat命令用来查看文件的全部内容

cat命令举例

1
cat test.txt

more命令

more命令用来分页查看文件的内容,在文件内容过多时可以一页一页地查看。

  • 空格键翻页
  • q键退出查看文件

more命令举例

1
more /etc/services

cp命令

cp命令用来复制文件或文件夹(copy)

cp命令用法

语法:cp 要复制的文件 复制到的文件

-r 复制文件夹时需带上这个参数

cp命令举例

1
2
cp test.txt ./test222.txt
cp -r test test222 #复制文件夹,需要带上-r参数

mv命令

mv命令用来移动文件或文件夹,也可以进行文件的重命名操作(move)

mv命令举例

1
2
3
mv test.txt /home/sunday    #文件移动
mv test /home/sunday #文件夹移动
mv test.txt test222.txt #文件重命名

rm命令

rm命令用于删除文件或文件夹

rm命令用法

语法:rm [-r -f] 参数1 参数2…

-r 删除文件夹
-f force强制删除,不需要进行确认
参数n 要删除的文件列表,空格隔开

which命令

每个命令本质上都是一个个的可执行程序,在linux中,可以使用which 命令名称来查看命令本体可执行程序的位置。

which命令举例

1
2
3
which cd    #/usr/bin/cd
which pwd #/usr/bin/pwd
which java #/usr/local/software/jdk/bin/java

find命令

find命令用来在某个路径下搜索指定的文件的位置,支持文件名搜索和文件大小搜索

find命令语法
find 搜索路径 -name "要查找的文件名"
find 搜索路径 -size +|-n[kMG]

find命令举例

1
2
3
4
5
find / -name "test"
find / -name "*test*" #全盘搜索包含test的文件

find / -size -10k #全盘搜索文件大小小于10KB的文件
find / -size +100M #全盘搜索文件大小大于100MB的文件

全盘搜索需要root权限

find查找的文件支持通配符*

echo命令

echo命令可以在命令行内输出指定内容

echo命令举例

1
2
echo "Hello Linux"
echo `pwd` #echo `命令` 输出命令的执行结果而不是字符

若输出内容包含空格等特殊符号,最好使用""包裹

重定向符 >

重定向符>>>可以将左侧命令的结果,覆盖/追加写入到右侧指定的文件中。例如

1
2
3
4
5
6
7
8
9
10
echo "Hello Linux" > hello.txt
cat hello.txt
#Hello Linux
echo "Hello Hexo" >> hello.txt
cat hello.txt
#Hello Linux
#Hello Hexo
echo "Hello Java" > hello.txt
cat hello.txt
#Hello Java

再如

1
2
3
4
ls > test.txt
cat test.txt
#hello.txt
#test.txt

tail命令

tail命令可以查看文件尾部的内容,也可以持续跟踪文件的最新更改。

tail命令语法
tail [-f -num] 查看或跟踪的文件名

tail命令举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ls / >> test.txt
tail test.txt #默认查看尾部10行
#proc
#root
#run
#sbin
#srv
#sys
#tmp
#usr
#var
#www
tail -5 test.txt #查看尾部5行内容
#sys
#tmp
#usr
#var
#www
tail -f -5 test.txt
echo 123 >> test.txt
#sys
#tmp
#usr
#var
#www
#123

命令补充

vim命令

vim命令可以对文本进行编辑

vim的三种模式

  • 命令模式
  • 插入模式 i ESC
  • 底线模式 :wq

linux必备知识

linux目录结构

yum安装软件✅

yum是linux中一个rpm包管理器,可以自动化安装配置第三方软件,同时自动解决依赖问题。 注意:

  • yum安装软件需要联网
  • yum命令需要root权限
  • yum命令安装软件相当于从"linux官方应用商店"下载安装软件。与我们自行上传安装包解压安装是有区别的

临时赋予普通用户root权限执行命令(需要先修改/etc/sudoers文件):

1
sudo 命令
yum命令用法

-y 自动确认,无需手动确认安装或卸载
install 安装
remove 卸载
search 搜索

yum命令举例

1
2
3
yum search wget
yum -y install wget
yum -y remove wget
不同系统常见的软件安装包后缀
  • windows .exe .msi
  • mac .pkg
  • linux .rpm

tips:CentOS系统安装包.rpm使用yum包管理器,而Ubuntu系统安装包.deb使用apt包管理器。apt包管理器与yum包管理器用法基本一致,不再列举

systemctl服务管理✅

系统内置的服务举例

  • NetworkManager 主网络服务
  • network 副网络服务
  • firewalld 防火墙服务
  • sshd 安全的远程登录服务

systemctl命令

systemctl命令常用来控制一些软件(服务)的启动、停止、开机自启。

systemctl命令用法

start 启动服务
stop 关闭服务
status 查看服务状态(是否已启动|running dead)
enable 开机自启
disable 禁止开机自启

systemctl命令示例

1
2
3
4
5
systemctl status firewalld  #查看防火墙运行状态
systemctl stop firewalld
systemctl start firewalld
systemctl disable firewalld
systemctl enable firewalld

再比如

1
2
3
4
yum install -y httpd        #安装apache服务器软件
systemctl status httpd #启动web服务
systemctl start httpd
systemctl enable httpd #开机自启

可以看出,systemctl命令不仅可以管理系统内置的服务,也能够管理第三方软件所提供的服务,当然,前提是软件注册服务交给systemctl管理,部分软件需要手动添加服务。

ln软链接

概念

linux系统的 软链接 类似Windows系统中的快捷方式,他可以将文件链接到其他位置。注意:

  • 与文件、目录用-、d标识类似,使用l 标识一个软链接
  • 软链接和快捷方式一样,只是一个逻辑指向,并不是物理的移动或复制

ln命令创建软链接

ln命令用法

语法:ln -s 被链接的文件 软链接位置

-s 创建软链接

ln命令举例

1
2
ln -s /etc/yum.conf  ./yum.conf   #在当前目录下创建一个名称为yum.conf的软链接,指向/etc/yum.conf
ln -s /etc/yum ./yum #文件夹的软链接

date日期和时区

date命令

date命令可以查看当前日期和时间

date命令用法

语法:date [-d] [+格式化字符串]
-d 对日期进行加减操作
+格式化字符串参数列表

  • %Y 年
  • %y 年份后两位数字
  • %m 月份(01-12)
  • %d 日(01-31)
  • %H 小时(00-23)
  • %M 分钟(00-59)
  • %S 秒(00-59)
  • %s 时间戳,自1970-01-01 00:00:00到现在的秒数

date命令举例

1
2
3
4
date  #直接使用date,将采用默认格式显示当前日期和时间
date +%Y-%m-%d #格式化后的日期如2022-12-08
date "+%Y-%m-%d %H:%M:%S" #格式化后的日期如2022-12-08 17:01:55

tips:不需要死记这些参数,知道它们取的是英文单词首字母就可以了~

再比如

1
2
3
4
date -d "+1 day"  #按默认格式显示后一天的日期
date -d "+1 day" +%Y-%m-%d
date -d "+1 month" #显示后一个月的日期
date -d "-1 month" #显示前一个月的日期

类似的时间标记有year、month、day、hour、minute、second

linux系统时区的修改

默认通过date查看的日期时间并不是很准确,我们可以修改时区UTC为上海CST,来使日期时间更准确:

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

使用ntp进行时间同步和校准

ntp程序可以帮我们自动去校准系统时间,下载并启动ntp服务后会 定期 的帮我们联网校准系统时间

1
2
3
yum -y install ntp
systemctl start ntpd
systemctl enable ntpd #开机启动

当然,我们也可以手动校准(需要root权限):

1
ntpdate -u ntp.aliyun.com #通过阿里云提供的服务网址配合ntpdate命令校准时间(安装ntp后会附带这个命令)

IP地址与主机名

ifconfig命令

ifconfig命令可以查看本机的IP地址,一般CentOS系统的网卡名称默认为ens33
如果ifconfig命令无效,可以执行以下命令安装:

1
yum -y install net-tools

特殊的IP地址

  • 127.0.0.1 指代本机
  • 0.0.0.0 可以指代本机,确定端口绑定关系,在放行规则中表示任意IP访问

主机名

每台电脑都有一个主机名(可以重复),可以使用hostname命令查看本台计算机的主机名

1
hostname #centos7

hostname可以查看主机名,而hostnamectl可以修改主机名:

1
2
hostnamectl set-hostname 主机名
hostname

域名解析✅

所谓域名解析,就是将域名或主机名映射到对应的IP地址上,方便我们找到指定计算机.

当在浏览器中访问一个域名(主机名)时,会先在客户端本机中查找hosts文件,在其中查找映射关系,找不到的情况下,才会请求DNS域名解析服务器帮忙解析。这也是为什么修改本机hosts文件后可以得到与原来不一样的地址解析结果。

不同系统hosts文件路径

windows:C:\windows\system32\drivers\etc\hosts
linux:/etc/hosts

补充:如何在虚拟机中配置linux主机的固定IP地址?

  1. 第一步,设置IP地址范围
    打开VMWare 》 编辑 》虚拟网络编辑器 》选择VMnet8,设置子网IP、子网掩码 》NAT设置 》设置网关IP。例如:
  • 子网IP 192.168.88.0
  • 子网掩码 255.255.255.0
  • 网关IP 192.168.88.2
  1. 第二步,修改网卡配置文件,设置IP地址和网关
    编辑/etc/sysconfig/network-scripts/ifcfg-ens33,在末尾添加:
1
2
3
4
IPADDR="192.168.88.130"      #设置的IP要在子网IP范围内  
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2" #网关和VMWare虚拟网络编辑器中设置的一致
DNS1="192.168.88.2" #DNS服务器设置为网关即可

同时,将BOOTPROTO的值dhcp修改为static,即静态IP

  1. 重启网卡
1
systemctl restart network
  1. 使用ifconfig命令查看IP地址,此时不管虚拟机是否关机重启,IP地址都不会改变

设置好linux虚拟主机的固定IP地址后,我们使用XShell远程连接软件连接linux虚拟机时就不需要老是更改IP地址了

网络请求和下载✅

ping命令

ping命令用于检查服务器或网络是否可以连通

ping命令用法

语法:ping [-c num] ip地址或主机名

-c 指定ping的次数

ping命令举例

1
2
ping baidu.com            #不指定次数,将一直ping,直到ctrl+C停止
ping -c 3 baidu.com #ping 3次百度

wget命令

wget是非交互式的文件下载器,可以在命令行内下载网络上的文件

wget命令用法

语法:wget [-b] url

-b后台下载,将日志写入wget-log文件

wget命令举例

1
wget http://archive.apache.org/dist/.../hadoop-3.3.0.tar.gz

注意,无论下载是否完成,都会在当前目录下先生成一个即将要下载的文件,如hadoop-3.3.0.tar.gz

wget命令和yum命令的区别:

  • wget用来下载网络上的文件,只要url有效就可以下载,但需要自行寻找下载地址;
  • yum是从“软件商店”上下载,只能下载yum管理器中存在的文件

curl命令

curl的作用与python中的requests模块相同,都是用来发起一个http请求,然后得到服务器的响应。服务器响应回来的可以是HTML源码,也可以是提供的要下载的文件

curl命令用法

语法:curl [-O] url

-O 指定保存下载的网络文件
url 指定要请求的网络地址

curl命令举例

1
2
curl cip.cc   #cip.cc网站可以响应给我们的IP地址,运营商等信息
curl -O http://archive.apache.org/dist/.../hadoop-3.3.0.tar.gz #下载网络文件,需要指定-O参数

端口相关✅

概念

端口是设备与外界通讯交流的出入口,类似一个房子的门。端口可以分为两大类:

  • 物理端口:又称接口,是实际存在的,如USB接口,RJ45网口等
  • 虚拟端口:是计算机内部的端口,是不可见的,是操作系统和外部进行交互的大门

tips:通过IP+端口可以锁定一个具体的程序或进程!

端口分类规范

  • 公认端口(1~1023): 专门给系统内置或者知名的一些程序使用,如SSH的22端口,HTTPS服务的443端口
  • 注册端口(1024~49151): 用于松散地绑定一些程序或者服务,可以自定义,如MySQL的3306端口,Tomcat的8080端口
  • 动态端口(49152~65535): 通常不会固定绑定一个程序,而是当程序对外进行网络链接时自动临时分配和使用

nmap命令

nmap可以查看端口占用情况

nmap命令举例

1
2
3
4
5
6
7
8
 yum -y install nmap
nmap 127.0.0.1 #查看本机端口占用

port state service
22/tcp open ssh
25/tcp open smtp
80/tcp open http
... ...

netstat命令

我们也可以使用netstat命令查看端口占用

1
2
yum -y install net-tools
netstat -anp | grep 关键字 #查看包含指定关键字的端口状态以及被哪一个程序或进程占用

进程管理✅

概念

每一个程序在运行的时候,会被操作系统注册为系统的一个进程,方便操作系统管理。操作系统会为每一个进程分配一个独有的进程号,也称PID

ps命令

在windows系统中,可以通过任务管理器查看正在运行中的进程。

在linux系统中,可以通过ps命令查看运行中的进程相关信息,包括

  • UID 进程所属的用户
  • PID 进程号(唯一标识)
  • PPID 父进程号,启动此进程的其他进程
  • C 该进程的CPU占有率(%)
  • TIME 该进程累计占用CPU的时间,注意不是进程运行时间
  • CMD 进程对应的名称,启动路径或启动命令
ps命令用法

语法:ps [-e -f]

-e:显示所有的进程
-f:显示每个进程的全部完整信息

ps命令示例

1
2
ps -ef    #查看在操作系统中运行的所有进程信息
ps -ef | grep 关键字过滤

kill命令

在windows任务管理器内,选中一个进程,右击结束进程即可杀死一个进程
在linux系统中,我们使用kill命令来杀死一个进程

kill命令用法

语法:kill [-9] PID

-9 强制关闭

kill命令举例

1
2
ps -ef | grep tail
kill -9 98162 #杀死一个进程,其中98162是查看到的tail进程的ID

主机状态监控

top命令

top命令用来打开一个linux任务管理器,可以查看CPU、内存的使用情况,进行系统资源监控

  • top默认5秒刷新一次页面信息
  • ctrl+C或Q键可以退出top界面

top命令举例

1
top

top命令扩展

  • -p PID 只显示某一个进程资源占用情况
  • -d 设置刷新时间,默认5s
  • -c 显示产生进程的完整命令路径,默认只显示进程名
  • -n 指定刷新次数,top界面会在刷新n次后退出
  • -i 不显示正在休眠的进程,只显示当前正在运行的进程
  • -u 用户名 查看特定用户启动的进程

在top界面中,也可以直接按键来调整显示:

  • c 显示产生进程的完整命令
  • m 按进程占用内存大小排序
  • p 按进程占用CPU大小排序
  • e 切换进程内存显示单位,如k m g
  • i 不显示正在休眠的进程,只显示当前正在运行的进程

df命令

df命令可以查看磁盘空间占用

1
2
 df -h        
# -h以人性化的方式显示,带上单位M、G等

iostat命令

iostat命令用来查看每秒磁盘写入和读出的字符数

1
2
 iostat [-x] num1 num2   
#-x显示更多信息 num1刷新间隔 num2刷新几次

sar -n DEV

sar -n DEV 可以查看网卡(如ens33)每秒发送和接收的数据包大小,监控网络情况

1
2
3
4
5
 sar -n DEV num1 num2
# -n 查看网络
# DEV 查看网络接口
# num1 刷新间隔
# num2 刷新次数

网络状态主要关注以下几个指标:

  • rxKB/s 每秒接收的数据包大小,单位KB
  • txKB/s 每秒发送的数据包大小
  • IFACE 本地网卡接口的名称

环境变量✅

概念

环境变量是操作系统在运行的时候记录的一些关键性的信息,这些信息用来辅助系统运行。在linux系统中执行env命令可以查看当前系统中记录的所有环境变量

1
2
3
env | grep PATH

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

linux中的一系列命令本质上其实都是一个个的可执行程序。比如,cd命令的本体其实就是/usr/bin/cd这个程序文件。

通过在PATH环境变量中添加某个程序的可执行路径,就可以在任何目录下使用这个程序(命令)。
当执行某个命令时,操作系统会在PATH环境变量中查找是否存在该命令对应的可执行程序,若存在则执行,若不存在会提示找不到。

$符号的使用

在linux系统中,我们可以使用$符号去取到环境变量中记录的值

$符号使用举例

1
2
3
 echo $PATH    # 输出PATH环境变量的值

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

在linux中配置环境变量

在linux系统中,用户可以自定义环境变量的键和值。

export命令临时设置环境变量

语法:export 变量名=变量值

export命令举例

1
2
3
4
5
6
 export MYNAME=123
echo $MYNAME
123
export MYNAME=456
echo $MYNAME
456

tips:临时设置的环境变量值会在下次远程连接或者linux虚拟机重启时失效

永久设置环境变量
  • 在当前用户的~/.bashrc文件中配置的环境变量,仅针对当前用户有效
  • 在系统的/etc/profile文件中配置的环境变量,对所有用户有效
  • 配置后使用source 文件名来使配置立即生效

举例:

1
2
3
vim /etc/profile      # 在末尾添加 export MYNAME=sunday 保存退出
source /etc/profile #立即生效
echo $MYNAME

配置PATH环境变量时要注意,不要直接使用PATH=xxx来配置,这样会导致原来PATH中配置的变量值被覆盖丢失,正确的做法是:
export PATH=$PATH:xxx

linux上传和下载

使用FinalShell

使用FinalShell软件可以方便地远程连接云服务器或linux虚拟机,同时也可以方便地进行文件的上传和下载操作。

使用命令行

如果不使用FinalShell的图形界面传输文件,还可以使用命令行方式:

1
2
3
yum -y install lrzsz
rz #上传文件,会弹出文件选择窗口
sz 下载的文件名 #默认会下载到windows桌面/fsdownload/目录中
  • r: receive接收
  • s: send发送

打包和压缩✅

概念

打包(归档)仅仅是将多个文件合并在一起,形成一个文件,归档文件大小是所有文件的和。而压缩的目的是为了减少文件的体积大小,减少占用空间,方便传输。

在Linux系统中,常见的压缩文件后缀有.gz和.zip两种。

tar命令

tar命令用法

tar [-c -v -x -f -z -C] 要打包或解打包的文件
-c 创建压缩文件
-v 显示压缩、解压缩的过程
-f 指定要压缩或解压缩的文件,必须在所有选项的最后
-x 解压文件
-z gzip模式,默认普通的.tar格式
-C 解压到

tar命令举例

1
2
3
4
5
6
7
8
#打包或压缩
tar -cvf test.tar 1.txt 2.txt 3.txt
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt

#解打包或解压缩
tar -xvf test.tar #解压到当前目录中
tar -xvf test.tar -C /tmp/test #解压到指定目录
tar -zxvf test.tar.gz -C /tmp/test #解压到指定目录

zip命令

在linux系统中,也可以创建.zip格式的压缩包,这需要使用zip命令:

1
2
zip test.zip 1.txt 2.txt 3.txt
zip -r test.zip test 1.txt #当被压缩的文件包含文件夹时,需要带上-r参数

与之相对,unzip命令用来解压.zip格式的压缩文件:

1
2
unzip test.zip    #解压到当前目录
unzip test.zip -d /tmp/test #解压到指定目录下

1.tar包就是所说的归档文件,gz和zip才是真正的压缩文件
2.注意解压的文件会覆盖同名文件

用户和权限✅

root用户

root用户拥有系统最大的权限
普通用户的拥有其HOME目录的所有权限,但在其他目录中通常只有读权限和执行权限,而没有写入权限

su切换用户

我们可以通过su命令来切换不同的用户。(使用root用户切换到其他用户不需要密码)

su命令用法

语法:su [-] 用户名

-可选,在切换用户后加载环境变量,建议带上
exitctrl+D:退回上一个用户

su命令语法

sudo提权

sudo命令可以临时以root的身份执行一条命令,在执行完毕后,恢复普通用户权限。

不是所有普通用户都可以使用sudo命令提权,只有经过root用户认证的普通用户才能够sudo提权。root认证方式:
以root身份执行visudo命令打开编辑/etc/sudoers文件,在文件末尾添加:

1
用户名 ALL=(ALL)    NOPASSWD: ALL

sudo命令举例

1
2
3
4
5
6
[root@CenOS7 ~]# visudo
[root@CenOS7 ~]# su - sunday
Last login: Sat Dec 10 11:08:13 CST 2022 on pts/0
[sunday@CenOS7 ~] sudo mkdir /test
[sunday@CenOS7 /] ll / | grep test
drwxr-xr-x 2 root root 4096 Dec 10 11:12 test

用户和用户组✅

概念

在linux系统中,可以配置多个用户,也可以配置多个用户组。针对某一文件,既可以控制用户的权限,也可以控制用户组的权限。
另外,一个用户可以加入多个用户组中。

用户管理

以root身份执行

1
2
3
4
5
6
7
8
9
10
11
12
13
useradd [-g -d] 用户名
#添加一个用户
# -g 指定用户所属组,若不指定,会创建与用户同名的用户组并自动加入
# -d 指定用户HOME目录,默认/home/用户名

userdel [-r] 用户名
# -r 删除用户的同时一并删除其HOME目录

id 用户名
#查看用户所属组等相关信息

usermod -aG 用户组名 用户名
#将用户加入指定用户组中,一个用户可以加入多个用户组

用户组管理

以root身份执行

1
2
groupadd 用户组名
groupdel 用户组名

getent命令

getent命令可以查看当前系统中有哪些用户组或用户:

1
2
getent passwd   #查看所有用户
getent group #查看所有用户组

权限管理✅

文件权限

文件的权限说明

drwxr-xr-x 2 root root 4096 Dec 10 11:46 linux

d文件夹,-文件,l软链接
rwx 文件所属用户权限|u
r-x 文件所属用户组权限|g
r-x 其他用户权限|o

权限表示

  • r 读权限,如ls,cat
  • w 修改权限,如mkdir,rm,vim
  • x 执行权限,如cd,

chmod修改权限

文件的拥有者或root用户可以使用chmod命令去修改文件的权限。

chmod命令用法

语法:chmod [-R] 权限 文件名

-R 对文件夹中的全部文件一并修改权限

chmod命令举例

1
2
chmod u=rwx,g=rx,o=x  1.txt #或者 chmod 751 1.txt
chmod -R u=rwx,g=rx,o=x test

chown修改所属用户

与chmod命令不同,只有root用户可以使用chown命令去修改文件所属的用户和用户组。
普通用户不能够随意把自己的文件修改成别人的。

chown命令用法

语法:chown [-R] [用户:用户组] 文件名
-R 对文件夹中的全部文件一并修改

chown命令举例

1
2
3
4
chown root 1.txt    #可以只修改所属用户
chown :root 1.txt #也可以只修改所属用户组
chown root:root 1.txt
chown -R root:root test

linux补充

软件安装部署

网络适配器

虚拟机中桥接模式和NAT模式的区别:

  1. 桥接模式:直接接入windows当前的网络环境,当windows本身网络不稳定时,虚拟机的网络也不稳定,容易造成虚拟机IP地址的改变
  2. NAT模式:在windows系统中独立开辟一块新的网络空间供虚拟机使用,IP地址固定,无论windows是否接入外网,都可以访问虚拟机!(NAT模式仅能使windows本机和虚拟机连接,其他局域网内的也不行)

更改为NAT模式:

  1. 网络适配器 》选择NAT模式
  2. 虚拟网络编辑器 》更改设置 》VMnet8 NAT模式 》确定即可

重新初始化云盘

重新初始化云盘后将恢复到镜像的初始状态。
云盘所挂载的ECS实例为“停止状态”才能进行该操作

密钥对与远程连接

Workbench远程连接

  1. 网络与安全 》密钥对 》 创建密钥对 》输入密钥对名称 》确定 》将自动下载保存keyname.pem密钥对文件
  2. 绑定密钥对 》选择要绑定当前密钥对的实例 》确定
  3. 重启实例 》Workbench远程连接 》 SSH 》选择证书认证 》拖拽上传密钥对文件keyname.pem 》连接

finalshell远程连接

  1. 网络与安全 》密钥对 》 创建密钥对 》输入密钥对名称 》确定 》将自动下载保存keyname.pem密钥对文件

  2. 绑定密钥对 》选择要绑定当前密钥对的实例 》确定

  3. 重启实例 》finalshell新建SSH连接 》输入服务器公网IP,认证方法选择公钥,上传私钥keyname.pem文件 》连接

  4. 一定要记得密钥对文件keyname.pem保存在那个文件夹下面

  5. 阿里云目前单台云服务器只支持绑定单个密钥对。若您选择已经绑定过其他密钥对的云服务器,新绑定的密钥对将会覆盖以前绑定的密钥对。

  6. 绑定/解绑密钥对需要在控制台重启ECS实例才能生效

  7. Workbench远程连接是通过网页可以对ECS实例进行远程控制,支持复制粘贴文本,支持多操作系统用户登录同一台实例,支持可视化查看系统文件资源。

安装MySQL5.7

tips:安装操作需要root权限

由于MySQL并不在CentOS的官方仓库中,所以我们需要:

  • 导入MySQL仓库的密钥
  • 配置MySQLQ的yum仓库
  1. 配置yum仓库
1
2
3
4
5
# 更新密钥
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
  1. 使用yum安装MySQL
1
2
# yum安装Mysql
yum -y install mysql-community-server
  1. 启动MySQL并配置开机自启动
1
2
3
4
systemctl start mysqld		# 启动
systemctl enable mysqld # 开机自启
systemctl status mysqld #检查MySQL的运行状态

  1. 修改root密码

    • 查看MySQL的初始密码
    1
    2
    # 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
    grep 'temporary password' /var/log/mysqld.log
    • 登录
    1
    2
    mysql -uroot -p
    # 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库
    • 修改root密码
    1
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';	-- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
  2. 扩展

    • 配置root的简单密码
    1
    2
    set global validate_password.policy=0;		# 密码安全级别低
    set global validate_password.length=4; # 密码长度最低4位即可
    • 允许root远程登录,并设置远程登录密码
    1
    2
    3
    4
    5
    # 第一次设置root远程登录,并配置远程密码使用如下SQL命令
    create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!'; -- 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

    # 后续修改密码使用如下SQL命令
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

安装tomcat✅

tips:要安装tomcat,需要先安装JDK

下载JDK

  1. 点击前往JDK下载
  2. 选择并下载jdk-8u351-linux-x64.tar.gz
    ==如果没有Oracle账户,注册一个就可以==

上传安装和配置JDK

  1. 使用finalshell远程连接虚拟机或云服务器,拖拽上传刚才下载好的JDK压缩包
  2. 解压缩到指定目录下
1
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /usr/local/software/
  1. 创建软链接(建议)
1
ln -s /usr/local/software/jdk1.8.0_351   /usr/local/software/jdk
  1. 修改系统环境变量,将JDK的bin目录添加到PATH环境变量中。编辑/etc/profile文件,在末尾添加:
1
2
export JAVA_HOME=/usr/local/software/jdk    #JDK安装路径
export PATH=$PATH:$JAVA_HOME/bin

保存后使用source /etc/profile命令使配置立即生效:

1
2
source /etc/profile
echo $PATH #输出PATH的值 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/test/:/root/bin:/tmp/test/:/usr/local/software/jdk/bin

将JAVA_HOME/bin添加到PATH环境变量后,我们就可以在任意目录下执行其中的命令了

验证JDK是否安装配置成功

1
2
3
4
5
java -version

java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)

安装tomcat

tomcat建议使用非Root用户安装并启动,可以创建一个用户tomcat用以部署,提高安全性。(万一网站被黑,也拿不到root权限)

  1. 创建tomcat用户
1
2
useradd tomcat
passwd tomcat # 可选,为tomcat用户配置密码
  1. 直接联网下载tomcat-10.0.27安装包
1
wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz

==也可以先下载再上传==

  1. 解压
1
tar -zxvf apache-tomcat-10.0.27.tar.gz -C /usr/local/software
  1. 创建软链接(建议)
1
ln -s /usr/local/software/apache-tomcat-10.0.27 /usr/local/software/tomcat
  1. 修改权限
1
chown -R tomcat:tomcat /usr/local/software/*tomcat* #在root用户下执行 -R修改文件夹中所有文件

验证tomcat是否安装成功

1
2
3
4
5
6
7
8
9
10
cd /usr/local/software/
ll

总用量 157904
drwxr-xr-x 9 root root 4096 12月 9 18:40 apache-tomcat-10.0.27
-rw-r--r-- 1 root root 11984522 10月 3 23:53 apache-tomcat-10.0.27.tar.gz
lrwxrwxrwx 1 root root 13 12月 9 18:05 jdk -> jdk1.8.0_351/
drwxr-xr-x 8 root root 4096 12月 9 18:01 jdk1.8.0_351
-rw-r--r-- 1 root root 149697219 12月 9 17:58 jdk-8u351-linux-x64.tar.gz
lrwxrwxrwx 1 root root 41 12月 9 18:40 tomcat -> /usr/local/software/apache-tomcat-10.0.27
  1. 切换到tomcat用户(使用该用户去启动tomcat)
1
su tomcat
  1. 启动tomcat
1
/usr/local/software/tomcat/bin/startup.sh
  1. 检查8080端口
1
2
3
netstat -anp | grep 8080

tcp6 0 0 :::8080 :::* LISTEN 32245/java
  1. 浏览器访问 http://虚拟机或云服务器IP:8080。前提是放行防火墙放行8080端口:
1
2
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload #重新加载防火墙规则,使生效

也可以直接关闭防火墙:

1
2
systemctl stop firewalld		# 关闭防火墙
systemctl disable firewalld # 停止防火墙开机自启

image-20221017223915498

tips:如果使用的是云服务器,在控制台添加安全组规则,允许入方向0.0.0.0任何IP访问8080/8080端口即可

刚才不经意间看到以前自己在本子上做的笔记,才一个学期,已经一点不认识了,终于明白了,学东西无论当时记得多清楚,随着时间也会忘记。而就算记在本子上,我也不会去看的。倒不如放在电脑里,放在网上。
所以,不管是在本子上,还是在网上,记笔记的时候,不要非得追求笔记好看,完美,每句话考虑很久。毕竟记笔记不是为了记笔记本身。

linux快捷键

  1. ctrl+C 强制停止正在运行的程序或取消正在输入的命令
1
2
3
 tail      #直接输入tail会中断系统
^C

1
2
cd /a/b/c/d  #ctrl+C清除输错的命令,重新输入

  1. ctrl+D 退出账户登录或某程序的专属页面(不能退出vim编辑)
1
2
3
su git
#ctrl+D退出
#当前用户为root
  1. history 查看输入过的命令列表(可结合grep对历史命令进行过滤)
1
2
3
4
5
 history | grep ch
1 chown
2 chmod 777 test.text
... ...

  1. ctrl+R+内容 输入内容去匹配曾输入过的命令。回车直接执行,左右键得到命令方便修改

  2. 光标移动快捷键

  • ctrl+A 跳到命令开头
  • ctrl+E 跳到命令结尾
  • ctrl+左 向左跳一个单词
  • ctrl+右 向右跳一个单词
  1. ctrl+L 清空终端内容(相当于clear命令)