• 以上6个目录的所有命令在linux任何目录都可以执行,不需要./

虚拟控制台

  • 当启动Linux系统进入字符工作方式后,系统提供了多个(默认为6个)虚拟控制台
  • 每个控制台可以独立使用互不影响,可以使用快捷键<Alt+F1>~<Alt+F6>进行多个控制台之间的切换
  • Linux系统中有两类用户:普通用户和超级用户(root)
  • 超级用户(root)的提示符是#;普通用户的提示符是$
  • 使用su -命令(-表示同时切换用户工作环境)切换为超级用户身份,当执行系统管理类命令时再使用exit命令退回普通用户身份
  • 注销登录:在当前的登录终端输入logout命令或使用<Ctrl+D>快捷键
  • Linux系统严格区分大小写

shell编程

  • 1.shell是Linux的一个外壳,它包裹在Linux内核的外面,为用户和内核之间的交换提供一个接口
  • 2.shell是一种解释器,用户的命令都交给shell解释执行
  • 3.shell程序就是一系列的Linux命令和控制语句
  • 4.最简单的shell程序就是不包含一条语句,表示无意义

1.shell脚本程序

  • 1.shell脚本的第一句需要指定它的解释器

    #!/bin/bash(默认解释器)
    
  • 2.shell脚本的第二句可以写注释行
    #说明程序的功能,开发者,开发时间等
    
  • 3.shell脚本的程序体
    #顺序结构
    #分支结构(注意结束符,then等)
    if..then..else...fi
    if...then...elif...then...else...fi
    case...esac
    #循环结构
    while...
    for...
    until...
    

2.启动shell程序的方式

  • 1.通过chmod命令把文件的权限设置成可读,可执行,用./shell程序直接运行
  • 2.bash(或sh) 脚本所在的路径 shell程序
  • 3.bash < 脚本所在路径 shell程序
  • 4.source 脚本所在路径 shell程序

3.变量

  • 1.环境变量:

    • shell预定义变量,用于设置系统运行环境,该变量都是大写(例:HOME)
  • 2.位置变量:
    • 命令 参数1 参数2 …
    • $0表示第0个位置对应的变量
  • 3.普通变量:
    • 无类型,可以直接赋值
    • 有read赋值和=赋值两种方式;其中=赋值两边不能有空格,read赋值可以同时给多个变量赋值,enter键结束
    • 对该变量引用:$ i 或 $ {i},后者一般用于对数组元素的引用
  • 4.数组变量(一维):
    • 数组变量名=(元素1 元素2 元素3…),例:Users=(Zsan lisi wangwu)
    • 输出指定下标数组元素:echo ${ Users[0/1/2…] }
    • 输出数组中的全部元素:echo $ {Users[*] }
    • 输出数组的长度:$ { #Users[*]}
    • 数组赋值:新的数组变量名=(“${旧数组变量名[*]}”),只能把旧数组的指定元素赋值给新数组的第一个元素
  • 5.特殊变量:
    • bash自动定义和赋值,用户不能改变
    • $$:表示当前进程号
    • $?:表示前一个命令的退出状态
    • $#:表示命令的参数个数
    • $0:表示命令本身
    • $ 1~$ n:表示命令参数
    • $*:表示全部命令参数

4.shell变量的输出

  • 1.echo $变量名1 变量名2注意对变量的引用主要使用变量名2 注意对变量的引用主要使用2使
  • 2.printf 格式串

5.算术运算

  • 1.$[表达式]
  • 2.expr命令
    • expr的内容需要用`引用,且中间内容必须空格隔开
  • 3.let命令
    • 需要将表达式用双引号引起来
  • 4.((表达式))

6.条件测试



  • 注意:if…then…else…fi在一行需要用分号隔开

test相当于中括号[],可以互换,但是主语[]与内容需要用空格隔开

分支结构if

结构一
if 表达式
then 命令表
[else 命令表]
fi
结构二
if 表达式;then 命令表;[else 命名表];fi
多层嵌套结构
if 表达式
then 命令表
[elif 表达式;then 命令表]
...
[elif 表达式;then 命令表]
fi

分支结构case

case 表达式 in
模式11 | [模式12] |... )命令表1;;
模式21 | [模式22] |...) 命令表2;;
...
*) 命名表n;;
esac

  • 表达式:判断条件,通常是一个变量名称
  • 命令表:可以是一个或多个命令
  • 每一个模式必须以)结尾
  • 每一个分支以;;结尾
  • 表示不与以上任何一个模式匹配时运行此命名表

循环结构
select选择结构
语法格式

select 变量 in 列表
do
命令表
done


select选择结构可以以一种更简便的方式生成具有编号的菜单
select会给列表中的内容自动生成菜单标号,下标从0开始,selsect会根据输出的编号选择相应的内容并且赋值给相应的变量,对应相应的菜单编号可以使用case语言进行相应的操作,即do和done中可以是case语句

while循环结构
通常在无法确定循环的具体次数时,使用while循环语句
语法格式

while((表达式))
do
命名表
done




for循环结构
通常用于知道具体循环次数的情况
语法格式
for 变量 [in 列表]
do
命令表
done
do和done相当于大括号
若省略了in 列表,则传递位置参数



until循环
until是在条件为假时继续执行循环,条件为真时,停止执行
语法格式
until ((表达式))
do
命令表
done

break语句
使用break结束循环,跳出循环后,将转到done语句后继续执行
continue语句
用来跳过本次循环,即直接跳回到循环的开始位置(条件判断处)

函数
Shell函数类似于shell脚本,里面存放了一系列命令
使用一个函数之前,必须创建该函数
定义(声明)函数的格式
[function] 函数名 ()
{
命令表
[return]
}
函数名后面的括号里面没有参数,参数是通过位置变量传递
函数中使用exit命令,则可以退出整个脚本
如果函数退出,就返回脚本中调用该函数的地方
使用break语句可以中断函数的执行


[]和内容需要空格隔开,[]和test可以互换
可以使用相应的格式
不能使用else if只能使用elif

如果函数和脚本不再同一文件中
需要在需要运行的文件中加载相应的函数
source 文件名



如果没有read,可以使用位置参数,即
函数名 位置参数1 位置参数2 。。。

安装c语言开发环境
rpm
yum

yum groupinstall "Development tools"

安装的是开发工具组,包含c,c++等多种语言,还有gdb调试器
光安装c语言,可以按照gcc即可

yum -y install gcc

按照vim编辑器及插件

yum -y install vim-*

安装vim编辑器
编写程序实现将百分制成绩转换为等级制成绩
编译程序,运行程序
gdb调试程序
安装gdb调试程序

yum -y install gdb

编译用gcc编译器
gcc scoreGrade.c

gcc scoreGrade.c -o score
-o执行文件的名字,即重命名
运行程序
./score
如果需要调试程序,需要在编译时加上-g选项
gcc -g scoreGrade.c -o score
调试
gdb score
运行
./score

默认编译输出是a.out,不管编译的是哪一个c语言程序都会输出一个a.out

./a.out

执行可执行文件名用-o指定

可以同时编译多个可执行文件
gcc 文件名1 文件名2

调试内部命令:
file 文件名
y
l查看源码
b 行码 设置断点,注意b和行码之间有空格

r 表示运行
运行到断点会停止
n(next)会进行下一步
s(step)也是进行下一步
如果有函数存在,s会进入函数体中调试,n不会进入函数体中,没有函数调用时,s和n效果一样
q退出

Linux网络配置

window下网络配置
自动获取ip地址:指所在的网络中有一台或多台DHCP服务器,DHCP服务器负责给上网的机器分配ip地址
手动ip地址
需要配置ip地址,子网掩码,默认网关,子网掩码是用来识别该台机器的,默认网关,指该电脑需要上网需要的第一个结构,一般指路由器
DNS服务器
www.baidu.com是域名,ip才是唯一标识相应机器的地址,要访问某一个机器,需要ip地址
域名到ip的映射需要DNS服务器
1.网络配置文件

2.网卡配置文件
保存网卡的设备名,IP地址,子网掩码,默认网关等配置信息
一块网卡对应一个配置文件
网卡配置文件在CentOS7中位于/etc/sysconfig/network-scripts目录中
格式

ifcfg-网卡类型以及网卡的序号

如:ifcfg-ens33 , ifcfg-eno16777736

3.网卡的配置
vim编辑网卡的配置

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
[root@bogon network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="a6167286-12aa-4419-91d8-a757aac6ccee"
DEVICE="ens33"
ONBOOT="yes"
[root@bogon network-scripts]# cat ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
[root@bogon network-scripts]#


DEVICE:当前网卡设备名称
BOOTROTO:static|none|dhcp,IP获取方式,静态分配|引导时不使用协议|BOOTP协议/DHCP协议
BROADCAST=x.x.x.255:广播地址
HEADDR=00.0C:29:6A:08:39:MAC地址
IPADDR=x.x.x.x:IP地址
PREFIX=24 子网掩码
GATEWAY= :网关
DNS1 =
ONBOOT=yes 开机自动启动

4.一块网卡绑定多个IP地址
每个绑定的IP地址需要一个虚拟网卡
IPADDR1=x.x.x.128 IP地址
PREFIX1=24 子网掩码
IPADDR2=x.x.x.154 IP地址
PREFIX2=24 子网掩码

5.手工设置生效的方法
方法1:(针对NetworkManager服务)
ifdown 网卡接口设备名 : 禁用网卡
ifup 网卡接口设备 : 启用网卡
方法2:nmcli网络管理工具
nmcli connection reload :重新装载
nmcli device disconnect 网卡接口设置名 :断开
nmcli con up ifname 网卡接口设备:连接
方法3:(针对network服务)
Systemctl restart network.service或service.network restart:重启

6.修改主机名
在网络中主机名具有唯一性
查看主机名:hostname
临时设置/更改主机名:hostname 新主机名
永久性修改主机名
Hostnamectl set-hostname 新主机名


1代表第一块网卡,网卡设备名是lo,第一块设备是一个回送设备,自己访问自己,自己给自己发送数据的一个设备,inet后面跟的是ip地址,ip地址是127.0.0.1
2代表第二块网卡,网卡设备名是ens33,ip地址是192.168.216.131,link/ether跟的是它的MAC地址

BOOTPROTO:表示自动获取,通过dhcp服务器自动获取
改变ip地址



改变多个ip地址

ifdown不能在远程连接的情况下执行,ifdown禁用网卡后,远程客户端就连接不到本台机器
所以需要在本机做



使用ip命令配置网络
1.使用ip命令查看

ip命令配置的网络是临时生效,如果重启网卡或重启连接或重启机器就会无效

2.使用ip命令更改IP网络地址

ip addr [add|del] <CIDR形式的IP地址> dev <网络接口>

1.修改网络接口的IP

ip addr del 192.168.140.3/24 dev 网卡设备名
ip addr add 192.168.1.3/24 dev 网卡设备名

删除和添加网卡设备名,临时并且即时生效




2.为网络接口绑定多个IP

ip addr add 192.168.10.3/24 dev eth1
ip addr add 192.168.100.3/24 dev eth1

使用ip命令设置静态路由

ip route [add|del] default | <主机地址> | <网络地址> via <网关地址> [dev <流出设备接口>]

1.添加/删除到主机的路由

ip route add 192.0.2.1 via 10.0.0.1 dev eth0
ip route del 192.0.2.1 via 10.0.0.1 dev eth0

2.添加/删除到网络的路由

ip route add 192.0.2.0 via 10.0.0.1 dev eth0
ip route del 192.0.2.0 via 10.0.0.1 dev eth0

3.添加/删除默认路由

ip route add default via 10.0.0.1 dev eth0
ip route del default via 10.0.0.1 dev eth0

3.使用工具配置网络NetworkManager
NetworkManager是一项管理网络接口和配置网络连接的系统服务
由后台服务进程,感知网络状态变化的DBUS以及控制管理工具组成
NetworkManager支持动态的管理和配置方式来保持网络接口激活和连接的可用性

nmcli永久生效
使用nmcli显示网络接口设备
显示所有网络接口
nmcli device status
nmcli dev s
nmcli d s
nmcli d

显示指定网络接口信息,q退出,文本显示
nmcli device show ens33
nmcli dev show ens33
nmcli d sh ens33


显示所有连接的信息
nmcli connection show [–active]
nmcli con s [–active]
nmcli c s [–active]
nmcli c

显示指定连接的信息
nmcli connection show ens33
nmcli con s ens33
nmcli c s ens33

断开指定设备上的连接
nmcli device disconnect ens33
nmcli dev disc ens33
nmcli d d ens33
激活指定网络接口上的连接
nmcli connection up ifname ens33
nmcli con up ifname ens33
nmcli c up ifname ens33
ifname可省略

修改IP地址获得方式
nmcli con mdify eno33 ipv4.method
manual | auto
设置IP地址,网关和DNS解析
nmcli c m eno33 ipv4.addresses 10.0.0.30/24
nmcli c m enoee ipv4.gateway 10.0.0.1
nmcli c m eno33 ipv4.dns “10.0.0.1 8.8.8.8”

绑定多个IP地址(通过添加ip的方式)
nmcli c m eno33 +ipv4.addr “10.0.1.30/24”
修改DNS解析
nmcli c m eno33 -ipv4.dns “8.8.8.8”
nmcli c m ens33 +ipv4.dns “114.114.114.114”
注意+和-和ens33之间有空格,和ipv4之间没有空格

使上述改动生效需要重启连接


改动永久有效




测试本主机和目标主机连通性
1.ping
ping [参数] 主机名或IP地址
参数选项

-c count:共发出count次信息,不加此项,则发无限次信息,按Ctrl+C停止

-s 字节数:指定发送的报文的大小,以字节B为单位,预设值是56B,加上8字节的ICMP头,共是64B

-W timeout:等待接收回应报文的时间间隔,以秒为单位

ping -c 4 192.168.0.1
ping -c 10 -s 2048 192.168.0.1

traceroute:跟踪显示从当前主机到指定主机所经过路径
traceroute [主机名称或IP地址]
traceroute www.sina.com.cn

Talnet远程登录
Telnet是TCP/IP协议族中应用最广泛的应用层协议之一
以联机方式访问网上资源
Telnet协议可以在任何主机(任何操作系统)或任何终端之间工作

主要用途
使用远程计算机上的资源
Telnet服务器架设方法
1.查看是否安装telnet服务和xinetd服务
Xinetd是服务管理程序,telnet服务挂载在xinetd服务下,受xinetd管理
rpm -qa|grep telnet-server
rpm -qa xinetd
2.按照telnet-server和xinetd
yum install talnet-server
yum install xinetd
3.将xinetd服务和telnet服务设置为开机自启动
systemctl enable xinetd.service(或service xinetd enable)
systemctl enable telnet.socket(或service telnet.socket enable)
disable开机不自动启动
4.手动启动xintd服务和telnet服务,第一用需要手动启动
systemctl start xinetd.service(或service xinetd start)
systemctl start telnet.socket(或service telnet start)
停止:start-stop
重启:start-restart
查看状态:start-stuts
5.开始root登录,默认情况下talnet远程登录不允许root账户登录,需要改变安全策略才可以用root登录
方法1:通过关闭安全的方法实现
cd/etc/
mv securetty securetty.bak
方法2:在安全终端配置文件中添加:pts/0 pts/1
vim /etc/securetty
在文件末尾加上 pts/0 pts/1

6.配置防火墙规则或直接关闭防火墙
如果想查看服务器有没有架设成功,可以直接关闭防火墙,如果想长久让防火墙通过它的运行,需要在防火墙上开放23端口,并且重新装载防火墙
开放23端口
firewall-cmd --permanent --add-port=23/tcp
重新装载防火墙
firewall-cmd --reload
直接关闭防火墙
systemctl stop firewalld.service

window和linux都可以登录
物理机windows系统中远程登录linux系统
1.windows系统中安装telnet客户端
2.打开cmd
3.telnet Linux系统IP地址

VMware

1.安装VMware

  • 1.下载安装包
  • 2.按步骤安装






2.创建新的虚拟机







3.启动CentOS 7

  • 1.配置语言
  • 2.配置安装位置
  • 3.配置网络
  • 编辑-虚拟网络编辑器-VMnet8-NAT设置




4.Linux快照

  • 快照:相当于windows系统中的备份

5.Linux克隆

  • 克隆:根据现有机器复制出一台和原机器配置及状态一致的机器
  • 注意: 必须是关机或者关机的快照才可以克隆

1.克隆向导




2.修改克隆机IP

  • 1.编辑网络配置

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

  • 2.修改IP地址
    IPADDR="192.168.73.101"
    
  • 重启网络服务
    systemctl restart network
    

3.正确的网络配置

  • 如果虚拟机无法连接网络,可以根据以下步骤修改

5.远程连接工具MobaXterm

  • 下载第一个免安装版,然后通过ssh session输入虚拟机ip即可连接

附录一:Linux目录结构

1.目录结构图

2.目录说明

/       根目录bin   存放用户二进制文件boot  存放内核引导配置文件dev   存放设备文件etc   存放系统配置文件home  普通用户主目录lib   动态共享库lost+found 文件系统恢复时的恢复文件media  可卸载存储介质挂载点mnt   文件系统临时挂载点opt   附加的应用程序包proc  系统内存的映射目录,提供内核与进程信息root  root超级用户主目录sbin  存放系统二进制文件srv   存放服务相关数据sys   sys 虚拟文件系统挂载点tmp   存放临时文件usr   存放用户应用程序 var   存放邮件、系统日志等变化文件

3.目录路径

  • 绝对路径

    • 从根目录开头的路径
    • /表示根目录
  • 相对路径
    • 从当前目录开始定位
    • ..表示当前目录的上一目录

附录二:Linux命令

1.帮助命令

1.help

[root@localhost /]# cp --help

2.man

[root@localhost /]# man help

2.开关机命令

1.reboot

# 重启
[root@localhost /]# reboot

2.shutdown/poweroff

#  关机
[root@localhost /]# poweroff
[root@localhost /]# shutdown now

3.输出打印命令

1.echo

# 输出数据到窗口
[root@localhost /]# echo "hello"
hello

4.ip命令

1.dhclient

# 动态分配一个ip,通过ip命令查看后可以发现多出一个动态ip
[root@localhost /]# dhclient

2.ip

# 其中address可以任意简写 例:a,ad,add,addr,addre,addres
[root@localhost /]# ip address

3.ifconfig

# centos 7之前版本查看ip的命令,已经遗弃
[root@localhost /]# ifconfig
-bash: ifconfig: 未找到命令

4.ping

# 检测出网络连通情况
[root@localhost /]# ping 172.20.10.2C:\Users\32929>ping 192.168.73.100

5.日期命令

1.date

# 显示当前系统时间
[root@localhost ~]# date
20221021日 星期五 19:27:26 CST
# 显示年月日时分秒
[root@localhost ~]# date '+%F %T'
2022-10-21 19:29:43

6.清屏命令

1.clear

[root@localhost /]# clear

7.终止命令

  • Ctrl+c:终止当前命令

8.查看历史命令

  • 通过上下箭头即可查看历史命令

9.自动补全命令

  • 通过Tab键可以自动补全已存在内容

10.目录命令

1.pwd

# 查看当前目录
[root@localhost home]# pwd
/home

2.cd

# 切换目录
[root@localhost home]# cd /opt

3.ls

# 显示当前目录下的组成
[root@localhost home]# ls
test2.txt  test.txt
# 显示隐藏文件
[root@localhost home]# ls -a
.  ..  test2.txt  test.txt
# 显示文件的详细信息
[root@localhost home]# ls -l
总用量 8
-rw-r--r--. 1 root root  15 1022 12:35 test2.txt
-rw-r--r--. 1 root root 836 1022 12:59 test.txt
# 组合使用
[root@localhost home]# ls -al
总用量 8
drwxr-xr-x.  2 root root  39 1022 12:59 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
-rw-r--r--.  1 root root  15 1022 12:35 test2.txt
-rw-r--r--.  1 root root 836 1022 12:59 test.txt
# 显示指定目录中的文件
[root@localhost home]# ls /home
test2.txt  test.txt

4.mkdir

创建目录

[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test2.txt  test.txt
# 级联创建目录
[root@localhost home]# mkdir -p test/spring/springboot

11.文件命令

1.touch

# 创建一个空文件
[root@localhost home]# touch frist.txt
[root@localhost home]# ls
frist.txt  test  test2.txt  test.txt

2.rm

# 1.删除文件
[root@localhost home]# rm frist.txt
rm:是否删除普通空文件 "frist.txt"?y
[root@localhost home]# ls
test  test2.txt  test.txt
# 2.删除目录
[root@localhost home]# rm -r test
rm:是否进入目录"test"? y
rm:是否进入目录"test/spring"? y
rm:是否删除目录 "test/spring/springboot"?y
rm:是否删除目录 "test/spring"?y
rm:是否删除目录 "test"?y
# 3.强制删除文件
[root@localhost home]# rm -f test.txt
[root@localhost home]# ls
test2.txt
# 4.强制删除目录
[root@localhost home]# rm -rf test

3.cp

# 1.复制文件
[root@localhost home]# cp test2.txt test1.txt
[root@localhost home]# ls
test1.txt  test2.txt
[root@localhost home]# cat test1.txt
test springmvc
# 2.复制到指定目录下
[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cp test1.txt test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cd test
[root@localhost test]# ls
test1.txt
# 3.添加-r参数复制文件夹
[root@localhost home]# cp -r a b     // a,b是目录,a中的所有内容(包含a)复制到b中
[root@localhost home]# cp -r a/* b   // a中的所有内容(不包含a)复制到b中

4.mv

[root@localhost home]# mv test2.txt test2
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# cd test2
[root@localhost test2]# ls
test  test2.txtmv a/abc.txt b          #   b是目录,则将a中的abc.txt移动到b目录中
mv a/abc.txt b/bcd.txt   #  将a中的abc.txt移动到b中并改名为bcd.txt(可重命名)
mv a b                   #  a,b是目录,将a的所有内容(包括a)移动到b目录中
mv a/* b                 #  将a中所有内容(不包括a)移动到b目录中

5.find

# 查找文件
# find 起始路径 -name 文件名
[root@localhost home]# find / -name test2.txt
/home/test2/test2.txt

6.scp

# linux机器间进行文件的远程复制
# scp A机器中源文件路径  B机器的用户@B机器ip:目标文件路径
# 进行文件复制的时候需要确定(yes),然后输入目标机器的密码
# 复制文件
[root@localhost home]# scp test1.txt root@192.168.73.100:/home
The authenticity of host '192.168.73.100 (192.168.73.100)' can't be established.
ECDSA key fingerprint is >   SHA256:feZSpWqNvo1WZWc8kTmO6vJ95xUTZw++EjUnFUEOiII.
ECDSA key fingerprint is MD5:29:83:54:61:f7:79:81:8f:d3:c3:22:74:4b:6c:e6:78.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.73.100' (ECDSA) to the list of known hosts.
root@192.168.73.100's password:
test1.txt                                     100%   15    12.7KB/s   00:00
# 复制目录 加上-r参数
[root@localhost home]# scp -r test root@192.168.73.100:/home
root@192.168.73.100's password:
test1.txt                                     100%   15     4.6KB/s   00:00
[root@localhost home]#

12.文本命令

1.cat

# 1.将文件全部内容打印到屏幕上(适用于内容较少的)
[root@localhost home]# cat test1.txt
test springmvc
# 2.显示文件全部内容,非空的行输出行号,空行会输出,但不标记行号
[root@localhost home]# cat -b test1.txt
# 3.显示文件全部内容,所有行都输出行号
[root@localhost home]# cat -n test1.txt1  test springmvc

2.tac

从最后一行开始,倒序输出文件的内容
[root@localhost home]# tac test1.txt

3.nl

# 显示文件内容,输出行号,默认情况下空行不记录行号
[root@localhost home]# nl test1.txt
# 空行也输出行号
[root@localhost home]#nl -b a test1.txt
# 默认设置
[root@localhost home]# nl -b t test1.txt
# 设置行号字段占用的位数
[root@localhost home]# nl -w 100 test1.txt

4.more

# 可以实时显示阅读百分比(less不支持)
# 按空格往下翻一页(适用于内容较多的)
# 按Enter往下翻一行(不能往上一行一行的翻回去)
# 按B键往上翻一页
# :f 可以显示文件名和现在的行数
# q 退出more
[root@localhost home]# more test1.txt

5.less

# more命令的所有按键less都支持
# ↑↓箭头可以实现一行一行的上下翻
# PageDown/PageUp可以实现一页一页的上下翻
# more会将查看过的内容打印在屏幕上,而less不会
[root@localhost home]# less test1.txt

6.head

# 默认只显示文件的前10行文本内容
[root@localhost home]# head test1.txt
# head -n 行数 行数指定显示文件的前n行
[root@localhost home]# head -n 5 test1.txt
# 负数表示除去文件结尾的n行,其他的从头开始的所有行都显示出来
[root@localhost home]# head -n -5 test1.txt

7.tail

# 1.默认只显示从文件最后一行开始的10行文本内容(正序)
[root@localhost home]# tail test1.txt
# 2.tail -n 行数 行数指定显示文件的最后几行
[root@localhost home]# tail -n 5 test1.txt
# 3.tail命令不支持负数,-n -5 执行结果同 -n 5
# 4.tail -c n 文件名表示输出文件最后n 个字节的内容
[root@localhost home]# tail -c 5 test1.txt
fsd3
# 5.tail -f 文件名 默认显示文件的最后 10 行内容,而且光标不会退出命令,每隔一秒会检查一下文件是否增加新的内容,如果增加就追加到原来的输出结果后面并显示(新终端中通过echo命令向文件中追加数据)
# 6.Ctrl+c 中断 tail 命令
[root@localhost home]# tail -f test1.txt
# tail -f 与 tail -F 与 tailf的区别
# 1.tail -f 根据文件描述符进行追踪,当文件改名或被删除,追踪停止
# 2.tail -F根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。
# 3.tailf 等同于tail -f -n 10(tail -f或-F默认也是打印最后10行),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问

8.grep

# 1.grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子
# 2.如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。
# 3.正则表达式是描述一组字符串的一个模式,正则表达式的构成模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式
# 4.正则表达式的通配符# 1.c*  将匹配 0 个(即空白)或多个字符 c(c 为任一字符)[root@localhost home]# grep -n boot* test1.txt2:spring boot# 2. . 将匹配任何一个字符,且只能是一个字符[root@localhost home]# grep -n .  test1.txt1:test# 3.[xyz]   匹配方括号中的任意一个字符[root@localhost home]# grep -n [boot]  test1.txt1:test2:spring boot3:spring boot24:spring boot35:boot spring boot3# 4.[^xyz] 匹配除方括号中字符外的所有字符[root@localhost home]# grep -n [^boot]  test1.txt1:test2:spring boot3:spring boot24:spring boot35:boot spring boot3# 5.^   锁定行的开头[root@localhost home]# grep -n ^boot  test1.txt5:boot spring boot3# 6.$ 锁定行的结尾[root@localhost home]# grep -n boot$  test1.txt2:spring boot# grep [选项] 模式 文件名# 选项:# -c    仅列出文件中包含模式的行数# -i    忽略模式中的字母大小写# -l  列出带有匹配行的文件名# -n  在每一行的最前面列出行号# -v 列出没有匹配模式的行# -w   把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行# 1.文件中搜索关键字,显示包含关键字的行
[root@localhost home]# grep boot test1.txt
spring boot
# 2.grep -n 关键字 文件 显示包含关键字的行以及行号
[root@localhost home]# grep -n boot test1.txt
2:spring boot

9.管道

# 管道是一种通信机制,通常用于进程的通信。它的表现是可以组合多个命令,将前一个命令的输出作为下一个命令的输入
# 在屏幕上直接显示所有信息
[root@localhost home]# ls -al
# ls -al 的输出,将作为 less 的输入
[root@localhost home]# ls -al | less
# 在 ls -al 的输出中查找test
[root@localhost home]# ls -al | grep test

10.wc

# 对文件内容进行统计
# wc -l 文件 统计行数
[root@localhost home]# wc -l test1.txt
5 test1.txt
# wc -w 文件 统计单词
[root@localhost home]# wc -w test1.txt
10 test1.txt
# wc -c 文件 统计字符数
[root@localhost home]# wc -c test1.txt
61 test1.txt

13.编辑文件命令

1.命令行模式

  • 1.该模式是进入vi编辑器后的默认模式
  • 2.任何模式下,通过ESC都可以进入命令行模式
  • 3.该模式下输入 vi 命令,输入的任何字符都被当作编辑命令来解释
  • 4.若输入的字符是合法的 vi 命令,则完成相应的动作(所输入的命令并不回显在屏幕上)
  • 5.若输入的字符不是合法的 vi 命令,vi 会响铃报警
  • 6.合法的vi命令
    • 1.【行数】yy 从当前行向下复制指定行数
    • 2.【行数】dd 从当前行向下删除指定行数
    • 3.p 配合yy将复制的内容粘贴到指定位置

2.文本输入模式

  • 1.该模式只能从命令行模式进入
  • 2.该模式进入方式有多种方式,进入成功后底部会显示INSERT
    • 1.附加命令:a 从当前光标的后一位开始输入
    • 2.修改命令:cc 删除当前行并从行首开始输入
    • 3.输入命令:i 从当前光标的前一位开始输入
    • 4.取代命令:r+取代字符 将当前光标字符用取代字符取代
    • 5.替换命令:s 将当前光标字符删除然后从删除位开始输入
    • 6.换行命令:o 将光标移动到当前行的下一行开始输入

3.末行模式

  • 该模式只能从命令行模式进入
  • 命令行模式下,通过进入末行模式,此时 vi 会在显示窗口的最后一行
  • 末行模式命令
    • 1.:q:退出不保存
    • 2.:q!:强制退出不保存
    • 3.:wq:退出并保存
    • 4.:w [文件名]:写入指定文件,若未指定文件则写入当前文件,即vi启动时打开的文档
    • 5.:e!:放弃修改,编辑区恢复为文件原样
    • 6.:e 文件名:打开指定的文件,调入编辑区
    • 7.:r 文件名:读入指定的文件,将文件内容插入到光标位置
    • 8.:f: 在屏幕末行显示文件相关信息

4.vi命令

1.编辑文件命令
# 1.打开(若已存在)或新建文件,并将光标置于第一行首
[root@localhost home]# vi test.txt
# 2.打开文件,并将光标置于第 n 行首
[root@localhost home]# vi +4 test.txt
# 3.打开文件,并将光标置于最后一行首
[root@localhost home]# vi + test.txt
# 4.打开文件,并将光标置于第一个与 redis 匹配的行的行首
[root@localhost home]# vi +/redis test.txt
# 5.恢复上次 vi 编辑时发生系统崩溃
[root@localhost home]# vi -r test.txt
# 6.打开多个文件,依次进行编辑
[root@localhost home]# vi test.txt test2.txt
2.屏幕翻滚命令
  • Ctrl+u:向上翻半屏
  • Ctrl+d:向下翻半屏
  • Ctrl+f:向下翻一屏。同pageDown键
  • Ctrl+b:向上翻一屏,同pageUp键
3.光标定位命令
  • 0:光标移至行首,同home键
  • ^ :光标移至行首第一个非空格字符
  • $:光标移至行尾,同end键
  • [n]G:光标移到第n行,未指定n时移到末行
  • H、M、L:光标移到屏幕首、中、尾行行首
4.光标移动命令
  • h、j、k、l :光标左、下、上、右移一个字符,同箭头键
  • b、w:光标移到上一个词,下一个词首
  • e:光标移到词尾
  • 注意
    • 以上光标移动命令前带数字n时,表示重复移动n次例:2h:左移2格;3e:移到后面第三个词词尾)
5.删除命令
  • x、X:删除光标处、光标前的字符
  • dd:删除光标所在的行
  • D:删除光标右边的文本
  • J:删除当前行尾的换行符,使当前行与下一行合并为一行
  • d+定位符:删除从光标位置到指定位置范围内的字符
    • d0、d^ :删除光标左面的文本,0或^代表行首
    • d$:删除光标右面的文本。$代表行尾
    • dG:删除光标所在行之后的所有行,G代表最后一行
    • db:删除光标处前的字符直到词首,b代表词首
    • de:删除光标处的字符直到词尾,e代表词尾
    • dw:删除光标处的字符直到下一个词的词首,w代表下一次词尾
  • 注意
    • 以上命令带数字n时,表示删除的范围扩大n倍(例:4dd:删除4行;3de:删除从光标开始的三个词)
6.文本修改与替换
1.修改:先删除指定范围内的文本,然后插入新文本
  • cc:修改光标所在的行
  • C:修改光标处到行尾的文本
  • c+定位符:修改光标到指定范围内的文本,常用的有:
    • c0、c^:修改光标左边的文本
    • c$:修改光标右面的文本
    • cG:修改光标所在行之后的所有行
    • cb:修改光标处前的字符直到词首
    • cw:修改光标处的字符直到词尾
    • cl:修改光标处的字符
  • 注意
    • 以上命令前带数字n时,表示修改的范围扩大n倍(例:5cc:修改从光标所在处开始的5行;3cw:修改从光标开始的3个词)
2.替换(replace):用一个字符替换另一个字符,这是覆盖操作,替换后文本的长度保持不变
  • r:用输入的字符替换光标处的字符
  • R:用输入的文本逐个替换从光标处开始的各个字符,直到按下Esc键
3.替代(substitute):用多个字符取代一个字符或一行,这是先删除后插入操作,替代后的文本的长度一般会发生变化
  • s:用输入的文本替代光标处的字符,用Esc键结束输入,等同于cl
  • S:用输入的文本带带光标处所在的行,用Esc键结束输入,等同于cc
  • 注意
    • 以上命令前带数字n时,表示替换或替代的范围扩大n倍(例:5r:用输入的字符替换从光标处开始的5个字符)
7.文本拷贝与粘贴
1.拷贝(copy):将光标处的文本复制到一个缓冲区中
  • yy:拷贝光标所在的行至缓冲区
  • y+定位符:拷贝光标到指定范围内的文本,常用的有:
    • y0、y^: 拷贝光标左面的文本
    • y$:拷贝光标右面的文本
    • yG:拷贝光标所在行之后的所有行
    • yb:拷贝光标处的字符直到词首
    • yw: 拷贝光标处的字符直到词尾
2.粘贴(paste)是将缓冲区中的内容插入到光标处
  • p:若缓冲区中的内容是完整的行,则将这些行插入到光标所在行之后;若不是完整的行,则将这些文本插入到光标处之后
  • P:若缓冲区中的内容是完整的行,则将这些行插入到光标所在行之前;若不是完整的行,则将这些文本插入到光标处之前
  • 注意
    • 以上命令前带数字n时,表示拷贝的范围扩大n倍(例:5yy:拷贝光标所在的行及下列共5行至缓冲区)
8.撤销与重做
1.撤销(undo)即消除上一个命令所做的修改,恢复到命令执行前的样子
  • u:撤销上一个命令所做的修改
  • U:撤销最近针对这一行所做的全部修改,在对一行连续做了多处修改后,用此命令可以一次恢复全行
2.重做(redo)就是重复执行上一个命令
  • .:重复前一个命令
9.搜索与替换命令
  • 命令行模式下,输入/字符都将进入末行模式,随后的输入被解释为行命令
1.字符串搜索:执行搜索命令后,光标将停留在第一个匹配字符的首字符处,按 n 或 N 则移到下一个匹配字符串之首,如果不存在匹配的字符串,则会在末行显示“找不到该字符串”
  • / 字符串:从光标处向后搜索与指定模式匹配的字符串,按n向后查找
  • ?字符串:从光标处向前搜索与指定模式匹配的字符串,按N向前查找
2.字符串替换用s命令,格式::[n1,n2]s/p1/p2/[g][c]
  • n1,n2表示目标行的行号范围,可以用%代表所有行;未指定范围时,目标行就是光标所在行的当前行
  • p1是用作搜索的字符串
  • p2是用作替代的字符串
  • 字符串中可以用^代表行首,$代表行尾
  • s命令可以带gc选项,g表示替代目标行中所有匹配的字符串,没有g的话则只替换目标行中第一个匹配的字符串,选项c表示替换前要求用户确认。
10.全局命令
1.全局搜索:全文中搜索含有与指定字符串相匹配的字符串的行,对匹配的行作标记
  • :g/p1:搜索所有包含p1字符串的行
  • :g!/p1:搜索所有不包含p1字符串的行
2.全局替换:s命令是面向行的字符串替换命令,s命令经常与g命令联合使用
  • g命令/s命令:先用g命令在文件中搜索含有某个字符串的行,并做标记,然后用s命令对所有有标记的行执行搜索和替换
11.行编辑命令
  • 用于对指定的行进行编辑,在指定行范围时,可以用.代表当前行,用$代表最后一行,用%代表所有行

    • :n:跳至第n行
    • :n1,n2con3:将第n1至n2行之间的内容拷贝到第n3行下(例:3,7co$:将第3到7行的文字复制到文件末尾处)
    • :n1,n2mn3: 将第n1至n2行之间的内容移到第n3行下(例:m10:将当前行移动到第10行下)
    • :n1,n2d: 将第n1至n2行之间的内容删除(例:3,7d:删除第3到7行)
    • :p:显示当前行的内容
    • :nu:显示当前行的行号和内容
12.设定vi选项
  • vi是一个高度可定制的编辑器,可以通过设置vi的选项来设定vi的一些外观和行为特性

    • :set all:显示所有选项
    • :set ai:set noai:设定、取消自动缩进
    • :set nu:set nonu:设定、取消行号显示
    • :set hlsearch:set nohlsearch:设定、取消高亮显示搜索到的字符串
    • :set ic:set noic :设定、取消搜索命令中忽略大小写

13.输出重定向

ls -al //在屏幕上输出
ls -al > 文件  //将结果输出到文件中(覆盖写)
ls -al >> 文件  //将结果输出到文件中(追加写)
[root@localhost home]# ls -al
总用量 4
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root  61 1023 13:37 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2
[root@localhost home]# ls -al > test1.txt
[root@localhost home]# cat test1.txt
总用量 0
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root   0 1023 13:55 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2
[root@localhost home]# echo hello > test1.txt
[root@localhost home]# cat test1.txt
hello
[root@localhost home]# ls -al >> test1.txt
[root@localhost home]# cat test1.txt
hello
总用量 4
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root   6 1023 13:55 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2

14.链接

  • Linux中的链接类似于Windows中快捷方式,可以为文件添加一个链接,方便用户在不同的位置快速访问原文件

1.硬链接

# 硬链接(hard link)
# 硬链接相当于创建了原文件的一个副本(拷贝),但不会占用额外的空间
# 语法:ln 原文件 链接文件
# 删除原文件不会影响硬链接
# 不能对目录创建硬链接
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# ln test1.txt test1_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1.txt  test2

2.软链接

# 软链接(symbolic link)
# 软连接也称符号链接,保存的是原文件的路径
# 语法:ln -s 原文件 链接文件
# 创建符号链接时,源文件的路径尽量使用绝对路径
# 删除原文件,符号链接将无法使用
# 可以对目录创建符号链接
[root@localhost home]# ln -s test1.txt test1_soft_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1_soft_link.txt  test1.txt  test2

15.进程命令

1.top

# top命令用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况
[root@localhost home]# top
# top -p 进程id  只显示特定进程的信息
[root@localhost home]# top -p 1
# top命令显示结果后,再按M 结果按内存使用率降序排列
# top命令显示结果后,再按P 结果按CPU使用率降序排列

2.ps

# 1.a:显示一个终端的所有进程,除会话引线外
[root@localhost home]# ps a
PID TTY      STAT   TIME COMMAND
1271 tty1     Ss+    0:00 -bash
1303 pts/0    Ss     0:00 -bash
8522 pts/0    R+     0:00 ps a
# 2.u:显示进程的归属用户及内存的使用情况
[root@localhost home]# ps -u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1271  0.0  0.2 115432  2028 tty1     Ss+  11:59   0:00 -bash
root       1303  0.0  0.2 115436  2036 pts/0    Ss   12:00   0:00 -bash
root       8523  0.0  0.1 155324  1860 pts/0    R+   15:07   0:00 ps -u
# 3.x:显示没有控制终端的进程
[root@localhost home]# ps -x
# 4.-l:查看当前shell产生的进程的详细信息
[root@localhost home]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1303   1290  0  80   0 - 28859 do_wai pts/0    00:00:00 bash
0 R     0   8525   1303  0  80   0 - 38300 -      pts/0    00:00:00 ps
# 5.-e:显示所有进程
[root@localhost home]# ps -e
# 6.-f:显示进程全部信息
[root@localhost logs]# ps -f
# ps aux 查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost home]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 127956  6480 ?        Ss   11:59   0:01 /usr/lib/systemd/systemd -->switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    11:59   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:59   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   11:59   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    11:59   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    11:59   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    11:59   0:00 [rcu_sched]

# 查看系统中所有的进程,使用 Linux 标准命令格式
[root@localhost home]# ps -le
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 - 31989 ep_pol ?        00:00:01 systemd
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0      3      2  0  80   0 -     0 smpboo ?        00:00:00 ksoftirqd/0
1 S     0      5      2  0  60 -20 -     0 worker ?        00:00:00 kworker/0:0H

# ps通常配合管道以及grep命令进行筛选
[root@localhost home]# ps aux | grep user
root       8776  0.0  0.0 112720   980 pts/0    R+   15:46   0:00 grep --color=auto user

2.kill

# kill -l 显示所有的指令(其中SIG可以省略,用后面的代替,也可以使用序号代替。例:kill -9 进程号 等同于 kill -KILL 进程号)
# 1.kill 进程号 杀死进程
[root@localhost home]# kill 993
# 2.kill -KILL/9 进程号 强制杀死进程
[root@localhost home]# kill -KILL 993
[root@localhost home]# kill -9 993
# 3.kill -HUP/1 进程号 重新加载进程
[root@localhost home]# kill -HUP 993
[root@localhost home]# kill 1 993
# 4.kill TERM/15 进程号 正常停止一个进程
[root@localhost home]# kill -TERM 993
[root@localhost home]# kill 15 993

16.解压缩命令

1.压缩文件

1.zip

# 将test1.txt文件压缩成test.zip文件
[root@localhost home]# zip test1.zip test1.txtadding: test1.txt (stored 0%)
[root@localhost home]# ls
test1.txt  test1.zip# 将test1.txt文件压缩成test.zip文件,并且添加一行注释
[root@localhost home]# zip -c test1.zip test1.txtadding: test1.txt (stored 0%)
Enter comment for test1.txt:
zip file : test1.zip  # 在这里添加注释信息# 压缩文件中删除指定文件
[root@localhost home]# zip test3.zip -d test1.txt
deleting: test1.txt# 将test1.txt文件压缩成test.zip文件,并指定加密密码
[root@localhost home]# zip -e test1.zip test1.txt
Enter password: # 在这里输入压缩加密密码
Verify password:    # 再一次输入压缩加密密码adding: test1.txt (stored 0%)# 将test目录(包含目录中的文件)压缩成test3.zip文件
[root@localhost home]# zip -r test3.zip testadding: test/ (stored 0%)adding: test/test3.txt (stored 0%)# 将test目录(包含目录中的文件)压缩成test3.zip文件,但排除test/test3.txt文件
[root@localhost home]# zip -r test3.zip test -x test/test3.txtadding: test/ (stored 0%)# 测试压缩文件test1zip的完整性
[root@localhost home]# zip -T test1.zip
[test1.zip] test1.txt password: # 输入压缩加密密码
test of test1.zip OK# 更新test1.zip压缩文件,添加test2.txt文件
[root@localhost home]# zip -u test1.zip test2.txtadding: test2.txt (stored 0%)#  压缩test2.txt文件并将生成的压缩文件test2.zip的时间与其一致
[root@localhost home]# zip -o test2.zip test2.txtadding: test2.txt (stored 0%)
# 如果出现下列异常,则需要下载zip 和 unzip
[root@localhost home]# zip test1.zip test1.txt
-bash: zip: 未找到命令
[root@localhost home]# yum install zip
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 zip.x86_64.0.3.0-11.el7 将被 安装
--> 解决依赖关系完成依赖关系解决================================================================================
Package        架构              版本                    源               大小
================================================================================
正在安装:
zip            x86_64            3.0-11.el7              base            260 k事务概要
================================================================================
安装  1 软件包总下载量:260 k
安装大小:796 k
Is this ok [y/d/N]: y
Downloading packages:zip-3.0-11.el7.x86_64.rpm                                  | 260 kB   00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : zip-3.0-11.el7.x86_64                                       1/1验证中      : zip-3.0-11.el7.x86_64                                       1/1已安装:zip.x86_64 0:3.0-11.el7完毕![root@localhost home]# yum install unzip
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 unzip.x86_64.0.6.0-24.el7_9 将被 安装
--> 解决依赖关系完成依赖关系解决================================================================================
Package        架构            版本                     源                大小
================================================================================
正在安装:
unzip          x86_64          6.0-24.el7_9             updates          172 k事务概要
================================================================================
安装  1 软件包总下载量:172 k
安装大小:369 k
Is this ok [y/d/N]: y
Downloading packages:
unzip-6.0-24.el7_9.x86_64.rpm                              | 172 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : unzip-6.0-24.el7_9.x86_64                                   1/1验证中      : unzip-6.0-24.el7_9.x86_64                                   1/1已安装:unzip.x86_64 0:6.0-24.el7_9完毕!
2.tar

# tar命令可以将许多文件一起保存进行归档(打包)和压缩,并能从归档和压缩中单独还原所需文件
# tar 默认只是归档不压缩,参数-z归档后进行gzip压缩,参数-j归档后进行bzip2压缩
# 下列参数一般组合使用
-A:追加tar中的文件到归档文件中
[root@localhost home]# tar -Avf test1.tar test2.tar-c:创建新的归档(打包)文件
[root@localhost home]# tar -cvf boot.tar test1.txt
test1.txt-C 目的目录:切换到指定的目录
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-f 归档文件:指定归档文件
[root@localhost home]# tar -tf test2.tar.gz
test2.txt-r 归档文件:追加文件本身到归档文件末尾
[root@localhost home]# tar -rvf test1.tar test2.tar
test2.tar-t 归档文件:列出归档文件的内容 -tvf
[root@localhost home]# tar -tf test2.tar.gz
test2.txt-u 归档文件:追加文件本身
[root@localhost home]# tar -uvf test1.tar test2.tar
test2.tar-v 归档文件:详细地列出处理的文件
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-x 备份文件:从备份文件中还原文件
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-z 归档文件:通过gzip指定处理归档文件
# 将test1.txt和test2.txt文件通过gzip的方式先通过tar方式打包再压缩成test3.tar.gz文件
[root@localhost home]# tar -zcvf test3.tar.gz test1.txt test2.txt
test1.txt
test2.txt-j 归档文件:通过bzip2指定处理归档文件
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt# tar: 不能指定超过一个"-Acdtrux"选项(即这几个选项同一个命令只能存在一个)
-A,r,u:追加
-c:创建
-t:展示
-x:还原# A,r,u只能追加归档文件(-cvf),不能追加压缩归档文件(-czvf)
# [root@localhost home]# tar -Avf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -rvf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -uvf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
# 如果出现下列异常,则需要下载bzip2
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt
tar (child): bzip2:无法 exec: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost home]# ^C
[root@localhost home]# yum -y install bzip2
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): base/7/x86_64/group_gz                              | 153 kB   00:01
(2/4): extras/7/x86_64/primary_db                                                                                                            >| 249 kB  00:00:11
(3/4): base/7/x86_64/primary_db                                                                                                              >| 6.1 MB  00:00:18
(4/4): updates/7/x86_64/primary_db                                                                                                           >|  17 MB  00:00:38
正在解决依赖关系
--> 正在检查事务
---> 软件包 bzip2.x86_64.0.1.0.6-13.el7 将被 安装
--> 解决依赖关系完成依赖关系解决====================================================================================================================================================================
Package                              架构                                  版本                                          源                                   大小
====================================================================================================================================================================
正在安装:
bzip2                                x86_64                                1.0.6-13.el7                                  base                                 52 k事务概要
====================================================================================================================================================================
安装  1 软件包总下载量:52 k
安装大小:82 k
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/bzip2-1.0.6-13.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY==-  ]  0.0 B/s |  50 kB  --:--:-- ETA
bzip2-1.0.6-13.el7.x86_64.rpm 的公钥尚未安装
bzip2-1.0.6-13.el7.x86_64.rpm                                                                                                                |  52 kB  00:00:04
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
软件包     : centos-release-7-5.1804.el7.centos.x86_64 (@anaconda)
来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1验证中      : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1已安装:bzip2.x86_64 0:1.0.6-13.el7完毕!

2.解压文件

1.unzip
# 解压指定文件
[root@localhost home]# unzip test2.zip
Archive:  test2.zip
extracting: test2.txt# 查看压缩包但不解压
[root@localhost home]# unzip -v test3.zip
Archive:  test3.zip
Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----0  Stored        0   0% 10-24-2022 00:48 00000000  test/
--------          -------  ---                            -------0                0   0%                            1 file# 测试压缩包内的文件是否正常
[root@localhost home]# unzip -t test3.zip
Archive:  test3.ziptesting: test/                    OK
No errors detected in compressed data of test3.zip.#  指定解压路经
[root@localhost home]# unzip -d test/ test2.zip
Archive:  test2.zip
extracting: test/test2.txt
2.tar
# 解压gzip格式归档文件
[root@localhost home]# rm -rf test1.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt
[root@localhost home]# tar -xzvf test1.tar.gz
test1.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt# 解压bzip2格式归档文件
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt
[root@localhost home]# rm test3.txt
rm:是否删除普通文件 "test3.txt"?y
[root@localhost home]# tar -xjvf test3.tar.bz2
test3.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt

17.权限管理命令

18下载安装命令

  • Linux下的软件包可以细分成两种:源码包和二进制包
  • 源码包:指源代码程序,需要编译成二进制包才能被计算机识别并使用
  • 二进制包:指源码包经过成功编译之后产生的包,是 Linux 下默认的软件安装包(例:xxx.rpm)
    • RPM二进制包的命名需遵守统一的命名规则,通过名称可以直接获取这类包的版本、适用平台等信息

      包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名例:httpd-2.2.15-15.el6.centos.1.i686.rpm
      httped:包名
      httpd-2.2.15-15.el6.centos.1.i686.rpm: 包全名
      2.2.15:包的版本号,版本号的格式通常为(主版本号.次版本号.修正号)
      15:二进制包发布的次数
      el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用
      centos:表示此包适用于 CentOS 系统
      i686:表示此包使用的硬件平台
      rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装(如果以 src.rpm 作为扩展名的 RPM 包,表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装)
      

  • 通常情况下,RPM 包采用系统默认的安装路径通常情况下,RPM 包采用系统默认的安装路径

1.rpm

  • rpm是Red Hat Linux 发行版专门用来管理 Linux 各项套件(文件后缀为:.rpm)的程序
  • rpm类似于Android中的.apk文件,需要使用rpm命令进行安装
  • rpm软件包的安装和卸载都需要考虑包之间的依赖性,需要注意先后关系
    rpm [-acdhilqRsv][-b<完成阶段><套间档>+][-e<套件挡>][-f<文件>+][-i<套件档>][-p<套件档>][-U<套件档>][-vv][--addsign<套件档>+][--allfiles][--allmatches][--badreloc][--buildroot<根目录>][--changelog][--checksig<套件档>+][--clean][--dbpath<数据库目录>][--dump][--excludedocs][--excludepath<排除目录>][--force][--ftpproxy<主机名称或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主机名称或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<执行指令>][--prefix<目的目录>][--provides][--queryformat<档头格式>][--querytags][--rcfile<配置档>][--rebulid<套件档>][--rebuliddb][--recompile<套件档>][--relocate<原目录>=<新目录>][--replacefiles][--replacepkgs][--requires][--resign<套件档>+][--rmsource][--rmsource<文件>][--root<根目录>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安装平台>+][--test][--timecheck<检查秒数>][--triggeredby<套件档>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
    -a:查询所有套件
    -c:只列出组态配置文件
    -d:只列出文本文件
    -h:显示安装进度
    -i:显示套件的相关信息
    -l:显示套件的文件列表及安装目录
    -q:使用查询模式
    -R:显示套件的关联性信息
    -s:显示文件状态
    -v:显示更详细的信息(执行过程)[-e <套件>]:卸载指定的套件
    [-f <文件>]:查询拥有指定文件的套件
    [-i <套件>]:安装指定的套件(install)
    [-p <套件>]:查询指定的RPM套件档
    [-U <套件>]:如果该套件没安装过则直接安装;若安装则升级至最新版本# rpm -q 包名 查询软件包是否安装
    # 注意使用包名,不是包全名。因为已安装的软件包只需给出包名,系统就可以成功识别(使用包全名反而无法识别)
    [root@localhost home]# rpm -q yum
    yum-3.4.3-158.el7.centos.noarch# rpm -qa:查询系统中所有安装的软件包
    # 可使用管道符查找出需要的内容
    [root@localhost home]# rpm -qa | grep yum
    yum-plugin-fastestmirror-1.1.31-45.el7.noarch
    yum-metadata-parser-1.1.4-10.el7.x86_64
    yum-3.4.3-158.el7.centos.noarch# 只列出组态配置文件
    [root@localhost home]# rpm -qc yum
    /etc/logrotate.d/yum
    /etc/yum.conf
    /etc/yum/version-groups.conf# 只列出文本文件
    [root@localhost home]# rpm -qd yum
    /usr/share/doc/yum-3.4.3/AUTHORS
    /usr/share/doc/yum-3.4.3/COPYING
    /usr/share/doc/yum-3.4.3/ChangeLog
    ...# 显示套件的关联性信息
    [root@localhost home]# rpm -qR yum
    /usr/bin/python
    config(yum) = 3.4.3-158.el7.centos
    cpio
    ...# 显示文件状态
    [root@localhost home]# rpm -qs yum
    正常/etc/logrotate.d/yum
    正常/etc/yum
    正常/etc/yum.conf# 显示更详细的信息(执行过程)
    [root@localhost home]# rpm -qvs yum
    正常-rw-r--r--    1 root    root                      100 413  2018 /etc/logr                                                                                    otate.d/yum
    正常drwxr-xr-x    2 root    root                        0 413  2018 /etc/yum
    正常-rw-r--r--    1 root    root                      970 413  2018 /etc/yum.     # 显示套件的文件列表及安装目录
    [root@localhost home]# rpm -ql yum
    /etc/logrotate.d/yum
    /etc/yum
    /etc/yum.conf
    ...# rpm -qi 包名:查询软件包的详细信息
    # 此时的-i 选项表示查询软件信息,是 information 的首字母
    [root@localhost home]# rpm -qi yum
    Name        : yum
    Version     : 3.4.3
    Release     : 158.el7.centos
    Architecture: noarch
    Install Date: 2022年10月21日 星期五 18时09分32秒
    Group       : System Environment/Base
    Size        : 5814102
    License     : GPLv2+
    Signature   : RSA/SHA256, 2018年04月25日 星期三 19时52分48秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : yum-3.4.3-158.el7.centos.src.rpm
    Build Date  : 2018年04月13日 星期五 20时58分52秒
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://yum.baseurl.org/
    Summary     : RPM package installer/updater/manager
    Description :
    Yum is a utility that can check for and automatically download and
    install updated RPM packages. Dependencies are obtained and downloaded
    automatically, prompting the user for permission as necessary.# -p 表示查询未安装的软件包,是package 的首字母
    # 注意:使用包全名,因为未安装的软件包需使用 绝对路径+包全名 的方式才能确定包
    [root@localhost ~]# rpm -qip 包全名# rpm -qf:命令查询系统文件属于哪个RPM包, file 的首字母
    [root@localhost home]# rpm -qf /bin/ls
    coreutils-8.22-21.el7.x86_64# 查找未安装软件包的依赖性
    # 绝对路径+包全名
    [root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    

2.yum

  • yum(Yellow dog Updater, Modified):一个专门为了解决包的依赖关系而存在的软件包管理器,类似腾讯电脑管家的软件一键安装,更新和卸载

  • yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中

  • 当使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装,从而解决RPM依赖性问题

  • 使用 yum 安装软件包之前,需指定好 yum 下载 RPM 包的位置,此位置称为 yum 源(yum 源指的就是软件安装包的来源)

  • 使用 yum 安装软件时至少需要一个 yum 源,yum 源既可以使用网络 yum 源,也可以将本地光盘作为 yum 源

  • 网络yum源:

    • 一般只要主机网络正常,可以直接使用网络 yum 源,不需要对配置文件做任何修改
    • 网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为".repo"(只要扩展名为 ".repo" 的文件都是 yum 源的配置文件),通常情况下 CentOS-Base.repo 文件生效
    • 如果修改网络yum源后需要执行:yum clean allyum makecache
    vim /etc/yum.repos.d/CentOS-Base.repo[base]:容器名称,一定要放在[]中。
    name:容器说明,可以随便写。
    mirrorlist:镜像站点
    baseurl: yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器
    enabled:此容器是否生效,如果不写或写成 enabled 则表示此容器生效,写成enable=0 则表示此容器不生效。
    gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
    gpgkey:数字证书的公钥文件保存位置
    

    # 基本语法
    yum [options] [command] [package ...]options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等
    command:要进行的操作
    package:安装的包名# yum常用命令
    # 更新
    1.列出所有可更新的软件清单命令:yum check-update
    2.更新所有软件命令:yum update
    3.仅更新指定的软件命令:yum update <package_name># 安装
    1.安装所有可安装软件:yum install
    2.仅安装指定的软件命令:yum install <package_name>
    3.重新安装软件包 yum reinstall <package_name># 显示列表
    1.列出所有可安裝的软件清单命令:yum list
    2.查询执行软件包的安装情况:yum list <package_name>
    [root@localhost opt]# yum list jdk1.8
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    已安装的软件包
    jdk1.8.x86_64                        2000:1.8.0_171-fcs                         installed
    3.列出所有可安装的软件包:yum list updates
    4.列出所有已安装的软件包:yum list installed
    5.列出所有已安装但不在 Yum Repository 內的软件包:yum list extras # 依赖情况
    1.查看程序<package_name> 依赖情况:yum deplist <package_name> # 仓库
    1.列出所有仓库:yum repolist all# 详细信息
    1.查询执行软件包的详细信息:yum info <package_name>
    [root@localhost opt]# yum info jdk1.8
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    已安装的软件包
    名称    :jdk1.8
    架构    :x86_64
    时期       :2000
    版本    :1.8.0_171
    发布    :fcs
    大小    :279 M
    源    :installed
    简介    : Java Platform Standard Edition Development Kit
    网址    :http://www.oracle.com/technetwork/java/javase/overview/index.html
    协议    : http://java.com/license
    描述    : The Java Platform Standard Edition Development Kit (JDK) includes both: the runtime environment (Java virtual machine, the Java platform classes: and supporting files) and development tools (compilers, debuggers,: tool libraries and other tools).:: The JDK is a development environment for building applications, applets: and components that can be deployed with the Java Platform Standard: Edition Runtime Environment.
    2.列出所有需要更新的软件包信息:yum info updates
    3.列出所有已安裝的软件包信息:yum info installed
    4.列出所有已安裝但不在 Yum Repository 內的软件包信息:yum info extras
    5.列出软件包提供哪些文件:yum provides <package_name> # 删除
    1.删除软件包命令:yum remove <package_name># 查询
    1.查找软件包命令:yum search <keyword>
    [root@localhost opt]# yum search jdk1.8
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    ================================== N/S matched: jdk1.8 ==================================
    jdk1.8.x86_64 : Java Platform Standard Edition Development Kit    # 清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
    

3.wget

  • wget是一个从网络上自动下载文件的自由工具,支持通过HTTPHTTPSFTP三个最常见的ICP/IP协议下载(类似于Windows下的迅雷)
  • wget命令用来从指定的URL下载文件
    # 安装wget
    yum install wget
    wget(选项)(参数)# wget URL:从指定地址下载文件
    [root@localhost opt]#wget https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# 将下载信息存入日志文件
    [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -b url:后台下载
    [root@localhost opt]# wget -b  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    继续在后台运行,pid 为 61922。
    将把输出写入至 “wget-log”。# wget -c url:继续执行上次终端的任务
    [root@localhost opt]# wget -c  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -d url:调试模式运行指令
    [root@localhost opt]# wget -d  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -h url:显示指令帮助信息
    [root@localhost opt]# wget -h  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -i url:从指定文件批量获取要下载的URL地址
    [root@localhost opt]# cat > filelist.txt
    https://www.keaidian.com/uploads/allimg/190424/24110307_4.jpg
    https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# wget -i filelist.txt# wget -q url:不显示指令执行过程
    [root@localhost opt]# wget -q  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg#wget -o download.log URL:把下载信息存入日志文件
    [root@localhost opt]# wget -o test1.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# ls
    24110307_8.jpg  jdk-8u171-linux-x64.rpm  test1.log
    [root@localhost opt]# cat test1.log
    --2022-10-25 05:28:41--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在连接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    正在保存至: “24110307_8.jpg”0K .......... .......... .......... .......... .......... 16% 2.59M 0s50K .......... .......... .......... .......... .......... 32%  775K 0s100K .......... .......... .......... .......... .......... 48%  851K 0s150K .......... .......... .......... .......... .......... 64% 1.03M 0s200K .......... .......... .......... .......... .......... 80% 2.68M 0s250K .......... .......... .......... .......... .......... 96%  927K 0s300K .......... .                                          100% 15.6M=0.3s
    2022-10-25 05:28:42 (1.16 MB/s) - 已保存 “24110307_8.jpg” [318641/318641])# wget -O 别名 URL:从指定地址下载文件并起别名
    [root@localhost opt]# wget -O test.jpg  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    --2022-10-25 05:22:31--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在连接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    正在保存至: “test.jpg”
    100%[=============================================================================================================================================>] 318,641     1.12MB/s 用时 0.3s
    2022-10-25 05:22:31 (1.12 MB/s) - 已保存 “test.jpg” [318641/318641])
    [root@localhost opt]# ls
    jdk-8u171-linux-x64.rpm  test.jpg# wget -P 目录 URL:从指定地址下载文件并保存在指定目录下
    [root@localhost tmp]# wget -P /tmp/nginx_yum_source/ http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm# get reject=xxx(文件格式) url:过滤指定格式下载
    [root@localhost opt]# wget reject=gif https://www.cnblogs.com/lukelook/p/11201098.html# wget --spider URL:测试下载连接是否可行
    [root@localhost opt]# wget --spider  https://www.keaidian.com/uploads/allimg/190424/24110                                                                                              307_8.jpg
    开启 Spider 模式。检查是否存在远程文件。
    --2022-10-25 05:34:10--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 125.44.96.40, 101.26.37.47, 61.179.22                                                                                              4.47, ...
    正在连接 www.keaidian.com (www.keaidian.com)|125.44.96.40|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    存在远程文件。# FTP下载
    [root@localhost opt]# wget ftp  https://www.cnblogs.com/lukelook/p/11201098.html
    

4.绿色软件安装

  • 绿色软件:不需要安装,下载可以直接使用(或者解压缩可以直接使用)的软件
  • 例:Linux安装Tomcat

19系统命令

1.systemctl

2.service

[root@localhost ~]# service 服务名 start|stop|restart|status
start:启动服务;
stop:停止服务;
restart:重启服务;
status: 查看服务状态;

3.netstat

netstat -natp

4.source

5.curl

6.make

7.nohup

8.nc

9.uname

# 查看linux系统版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

10.sudo

11.whereis

whereis nignx

12. ./

1.Linux安装JDK

1.安装位置

  • /opt

2.安装包

  • jdk-8u171-linux-x64.rpm

3.安装步骤

1.将安装包上传到虚拟机中

[root@localhost opt]# ls
jdk-8u171-linux-x64.rpm

2.执行安装命令

[root@localhost opt]# rpm -ivh jdk-8u171-linux-x64.rpm
准备中...                          ################################# [100%]
正在升级/安装...1:jdk1.8-2000:1.8.0_171-fcs        ################################# [100%]
Unpacking JAR files...tools.jar...plugin.jar...javaws.jar...deploy.jar...rt.jar...jsse.jar...charsets.jar...localedata.jar...

3.查看安装目录

[root@localhost opt]# rpm -qa | grep jdk
jdk1.8-1.8.0_171-fcs.x86_64[root@localhost opt]# rpm -ql jdk1.8
/usr
/usr/java
...[root@localhost ~]# cd /usr/java
[root@localhost java]# ls
default  jdk1.8.0_171-amd64  latest
[root@localhost java]# cd default
[root@localhost default]# ls
bin        javafx-src.zip  man          THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT  jre             README.html  THIRDPARTYLICENSEREADME.txt
db         lib             release
include    LICENSE         src.zip

4.配置环境变量

# 1.编辑配置文件
[root@localhost default]# vi /etc/profile# 2.profile文件最后追加以下3行配置
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.# 3.刷新环境变量(没有出现错误表示配置成功)
[root@localhost default]# source /etc/profile

4.测试

# 成功显示
[root@localhost /]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

2.Linux安装Tomcat

  • 需要先安装JDK

1.安装位置

  • /opt/tomcat

2.压缩包

  • apache-tomcat-8.5.60.tar.gz

3.安装步骤

1.将压缩包上传到虚拟机中

[root@localhost tomcat]# ls
apache-tomcat-8.5.60.tar.gz

2.执行解压命令

[root@localhost tomcat]# tar -xzvf apache-tomcat-8.5.60.tar.gz
apache-tomcat-8.5.60/conf/
apache-tomcat-8.5.60/conf/catalina.policy
...[root@localhost tomcat]# ls
apache-tomcat-8.5.60  apache-tomcat-8.5.60.tar.gz

3.启动tomcat

# 1.进入tomcat文件夹
[root@localhost tomcat]# cd apache-tomcat-8.5.60
# 2.进入bin目录
[root@localhost apache-tomcat-8.5.60]# cd bin
# 3.启动tomcat
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /opt/tomcat/apache-tomcat-8.5.60
Using CATALINA_HOME:   /opt/tomcat/apache-tomcat-8.5.60
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.5.60/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /opt/tomcat/apache-tomcat->8.5.60/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.5.60/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
# 4.查看tomcat进程 Bootstrap表示tomcat成功运行
[root@localhost bin]# jps
84071 Jps
64888 Bootstrap
# 5.Linux中测试访问tomcat默认8080端口号
[root@localhost bin]# curl -I http://localhost:8080
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 24 Oct 2022 22:24:18 GMT

4.关闭Linux防火墙

  • 1.Windows中访问Linux中的tomcat
  • 2.此时需要关闭Linux防火墙
    # 1.查看防火墙状态
    [root@localhost bin]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 日 2022-10-23 11:59:40 CST; 1 day 18h agoDocs: man:firewalld(1)Main PID: 669 (firewalld)CGroup: /system.slice/firewalld.service└─669 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid# 2.关闭防火墙
    [root@localhost bin]# systemctl stop firewalld
    [root@localhost bin]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: deactivating (stop-sigterm) since 二 2022-10-25 06:30:36 CST; 44s agoDocs: man:firewalld(1)Main PID: 669 (firewalld)CGroup: /system.slice/firewalld.service└─669 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid# 3.关闭防火墙开机自启动
    # 每次开机防火墙都会自动打开,需要重新设置,所以在关闭防火墙后,关闭防火墙开机自启动,下次启动就不用重新设置
    [root@localhost bin]# systemctl disable firewalld
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.# 4.关闭selinux(Security-Enhanced Linux)  linux安全子系统
    # 不关闭会需要更多的配置
    # 查看状态
    [root@localhost ~]# getenforce
    Enforcing
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# getenforce
    Permissive
    # 查看状态
    [root@localhost ~]# sestatus
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   permissive
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Max kernel policy version:      31
    # 永久关闭selinux:
    # vi /etc/selinux/config
    # SELINUX=disabled
    # 配置文件后需要重启才能生效
    

5.查看tomcat启动日志

# catalina.日期.log  记录tomcat启动时候的信息
# localhost.日期.log 记录tomcat启动时调用的方法
# localhost_access_log.日期.txt 访问tomcat的请求的所有地址以及请求的路径、时间,请求协议以及返回码等信息
# catalina.out 包含tomcat运行时所有的日志输出
[root@localhost apache-tomcat-8.5.60]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp
[root@localhost apache-tomcat-8.5.60]# cd logs
[root@localhost logs]# ls
catalina.2022-10-25.log      localhost.2022-10-25.log
catalina.out                 localhost_access_log.2022-10-25.txt
host-manager.2022-10-25.log  manager.2022-10-25.log
[root@localhost logs]# less catalina.2022-10-25.log
[root@localhost logs]# less localhost.2022-10-25.log
[root@localhost logs]# less localhost_access_log.2022-10-25.txt
[root@localhost logs]# less catalina.out

3.Linux安装MySQL

1.安装位置

  • /opt/mysql5.7

2.安装步骤

1.通过wget下载rpm安装包

[root@localhost tomcat]# wget -P /opt/mysql5.7 https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

2.通过rpm安装MySQL

[root@localhost mysql5.7]# rpm -ivh mysql57-community-release-el7-9.noarch.rpm

3.通过yum安装mysql(一般使用yum安装)

[root@localhost mysql5.7]# yum install -y mysql-server


如果出现上面安装失败可以通过下面方式解决(禁掉GPG验证检查)

[root@localhost mysql5.7]# yum -y install mysql-community-server --nogpgcheck

3.启动MySQL

# 1.启动mysql
[root@localhost mysql5.7]# systemctl start mysqld
# 2.查看mysql状态
[root@localhost mysql5.7]# systemctl status mysqld
# 3.查看mysql日志获取初始化密码
[root@localhost mysql5.7]# head -n 10 /var/log/mysqld.log
# 4.登陆mysql(输入上述初始化密码)
[root@localhost mysql5.7]# mysql -u root -p
# 5.修改mysql的密码策略(注意:默认密码检查策略比较严格,必须定义如类似密码 mysql> alter user 'root'@'localhost' identified by '$BAIZHIroot2002';)
mysql> set global validate_password_policy=0;     # 修改为简单策略
mysql> set global validate_password_length=4; # 修改密码长度最低为4
# 6.修改mysql密码
mysql> alter user root@'localhost' identified by 'root';



4.设置root允许远程访问

mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> flush privileges;

5.关闭Linux防火墙

[root@localhost mysql5.7]# systemctl status mysqld  //当前已经关闭,若未关闭则执行 systemctl stop firewalld
● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: inactive (dead)Docs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.html

6.Navicat连接MySQL

7.远程访问MySQL

4.Linux安装Redis

5.Linux安装RibbitMQ

6.Linux系统下SSM项目打包部署

7.Linux系统下SpringBoot项目打包部署

  • 需要先安装JDK

1.简单SpringBoot项目打包部署(未连接mysql)

1.配置文件

  • 1.pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringBootSimple</artifactId><version>1.0-SNAPSHOT</version><!--SpringBoot项目此处打成jar包即可,打成war包会报错--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--告知项目的启动类--><start-class>com.wd.SpringBootSimpleApplication</start-class></properties><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.3</version></dependency></dependencies><build><plugins><!--如果不加此处会报异常[root@localhost springboot]# java -jar SpringBoot-1.0-SNAPSHOT.jarSpringBoot-1.0-SNAPSHOT.jar中没有主清单属性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.3</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
    
  • application.yaml
    server:#修改项目端口号port: 8890#修改项目访问路径servlet:context-path: /springboot_simple
    

2.启动类

package com.wd;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootSimpleApplication {public static void main(String[] args) {SpringApplication.run(SpringBootSimpleApplication.class, args);}
}

3.接口

package com.wd.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@RequestMapping("/user")
@Controller
public class UserController {@RequestMapping("hello")@ResponseBodypublic String hello(){return "Hello SpringBootSimple";}
}

4.打包

  • 1.首先刷新Maven
  • 2.清空之前的target文件夹
  • 3.将test禁用(因为打包时会默认执行test中的代码,如果测试代码没有问题才会打包,如果测试代码有问题则打包失败)
  • 4.打包


5.部署

  • 1.将jar包上传到Linux中
  • 2.执行jar包
    # 错误原因:jar包内文件以及配置信息缺失
    # 正常的jar包内应该包含三个文件:BOOT-INF、META-INF、org
    # META-INF文件中有一个 MANIFEST.MF文件,正常文件如下图成功案例所示,配置丢失的文件如下图失败案例所示
    [root@localhost springboot]# java -jar SpringBoot-1.0-SNAPSHOT.jar
    SpringBoot-1.0-SNAPSHOT.jar中没有主清单属性# 解决方法
    pom.xml文件加入上述插件配置# 部署成功
    [root@localhost springboot]# java -jar SpringBootSimple-1.0-SNAPSHOT.jar.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v2.6.3)2022-10-25 14:29:05.065  INFO 4411 --- [           main] com.wd.SpringBootSimpleApplication       : Starting SpringBootSimpleApplication using   Java 1.8.0_171 on localhost.localdomain with PID 4411 (/opt/springboot/SpringBootSimple-1.0-SNAPSHOT.jar started by root in /opt/springboot)
    2022-10-25 14:29:05.084  INFO 4411 --- [           main] com.wd.SpringBootSimpleApplication       : No active profile set, falling back to default profiles: default
    2022-10-25 14:29:09.500  INFO 4411 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8890 (http)
    2022-10-25 14:29:09.516  INFO 4411 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2022-10-25 14:29:09.516  INFO 4411 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.56]
    2022-10-25 14:29:09.942  INFO 4411 --- [           main] o.a.c.c.C.[.[.[/springboot_simple]       : Initializing Spring embedded WebApplicationContext
    2022-10-25 14:29:09.942  INFO 4411 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4738 ms
    2022-10-25 14:29:12.303  INFO 4411 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8890 (http) with context path '/springboot_simple'
    2022-10-25 14:29:12.350  INFO 4411 --- [           main] com.wd.SpringBootSimpleApplication       : Started SpringBootSimpleApplication in 8.473 seconds (JVM running for 11.126)
    2022-10-25 14:29:40.114  INFO 4411 --- [nio-8890-exec-1] o.a.c.c.C.[.[.[/springboot_simple]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    2022-10-25 14:29:40.114  INFO 4411 --- [nio-8890-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2022-10-25 14:29:40.115  INFO 4411 --- [nio-8890-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
    
  • jar包及其解压后文件目录
  • 失败案例
  • 成功案例

6.测试

2.简单SpringBoot项目打包部署(带日志,未连接mysql)

1.配置文件

  • 1.pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringBootSimple</artifactId><version>1.0-SNAPSHOT</version><!--SpringBoot项目此处打成jar包即可,打成war包会报错--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--告知项目的启动类--><start-class>com.wd.SpringBootSimpleApplication</start-class></properties><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.3</version></dependency>    <!--lombok自带slf4j日志--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency></dependencies><build><plugins><!--如果不加此处会报异常[root@localhost springboot]# java -jar SpringBoot-1.0-SNAPSHOT.jarSpringBoot-1.0-SNAPSHOT.jar中没有主清单属性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.3</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
    
  • application.yaml
    server:#修改项目端口号port: 8890#修改项目访问路径servlet:context-path: /springboot_simple
    

2.启动类

package com.wd;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootSimpleApplication {public static void main(String[] args) {SpringApplication.run(SpringBootSimpleApplication.class, args);}
}

3.接口

package com.wd.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.time.Instant;@Slf4j
@Controller
@RequestMapping("/user")
public class UserController {@RequestMapping("hello")@ResponseBodypublic String hello(){log.info("{} 调用hello方法", Instant.now());return "Hello SpringBootSimple";}@RequestMapping("bey")@ResponseBodypublic String bey(){log.info("{} 调用bey方法", Instant.now());return "Bey SpringBootSimple";}
}

4.打包

  • 1.首先刷新Maven
  • 2.清空之前的target文件夹
  • 3.将test禁用(因为打包时会默认执行test中的代码,如果测试代码没有问题才会打包,如果测试代码有问题则打包失败)
  • 4.打包


5.部署

  • 1.将jar包上传到Linux中
  • 2.创建日志文件
  • 3.后台一直运行项目并实时打印日志
  • 4.动态查看日志
    [root@localhost logs]# touch consoleMsg.log
    [root@localhost springboot]# nohup java -jar SpringBootSimple-1.0-SNAPSHOT.jar > logs/consoleMsg.log 2>&1 &
    [1] 9045
    [root@localhost springboot]# tail -f -n 20 logs/consoleMsg.log
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v2.6.3)2022-10-25 16:02:21.383  INFO 9045 --- [           main] com.wd.SpringBootSimpleApplication       : Starting SpringBootSimpleApplication using Java 1.8.0_171 on localhost.localdomain with PID 9045 (/opt/springboot/SpringBootSimple-1.0-SNAPSHOT.jar started by root in /opt/springboot)
    2022-10-25 16:02:21.386  INFO 9045 --- [           main] com.wd.SpringBootSimpleApplication       : No active profile set, falling back to default profiles: default
    2022-10-25 16:02:23.694  INFO 9045 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8890 (http)
    2022-10-25 16:02:23.735  INFO 9045 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2022-10-25 16:02:23.735  INFO 9045 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.56]
    2022-10-25 16:02:23.887  INFO 9045 --- [           main] o.a.c.c.C.[.[.[/springboot_simple]       : Initializing Spring embedded WebApplicationContext
    2022-10-25 16:02:23.887  INFO 9045 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2377 ms
    2022-10-25 16:02:25.659  INFO 9045 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8890 (http) with context path '/springboot_simple'
    2022-10-25 16:02:25.687  INFO 9045 --- [           main] com.wd.SpringBootSimpleApplication       : Started SpringBootSimpleApplication in 5.46 seconds (JVM running for 6.993)
    2022-10-25 16:03:58.634  INFO 9045 --- [nio-8890-exec-1] o.a.c.c.C.[.[.[/springboot_simple]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    2022-10-25 16:03:58.635  INFO 9045 --- [nio-8890-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2022-10-25 16:03:58.636  INFO 9045 --- [nio-8890-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
    2022-10-25 16:03:59.577  INFO 9045 --- [nio-8890-exec-1] com.wd.controller.UserController         : 2022-10-25T08:03:59.577Z 调用hello方法
    2022-10-25 16:04:10.007  INFO 9045 --- [nio-8890-exec-2] com.wd.controller.UserController         : 2022-10-25T08:04:10.007Z 调用bey方法# 查询SpringBoot项目的端口号
    [root@localhost logs]# ps -aux | grep SpringBoot# 杀死该后台运行的项目
    kill -9 9045
    

6.测试

8.Linux系统下SpringCloud项目打包部署

Linux及软件安装相关推荐

  1. Linux之软件安装 apt-get

    Linux之软件安装 apt-get 1. 软件安装的介绍 Ubuntu软件安装有两种方式: 离线安装(deb文件格式安装)   [提前下载到电脑的安装包] 在线安装(apt-get方式安装)    ...

  2. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  3. Linux课程---11、Linux中软件安装和调试

    Linux课程---11.Linux中软件安装和调试 一.总结 一句话总结: 启动过程:1.安装软件,2.修改配置文件,3.启动服务 查看过程:4.查看进程,5.查看端口 关闭过程:6.关闭软件,7. ...

  4. qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...

    很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...

  5. _云计算学习路线图素材课件,Linux中软件安装的方式

    很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...

  6. 【转】Linux下软件安装的几种方式

    转自Linux下软件安装的几种方式 Linux 系统的/usr目录 Linux 软件安装到哪里合适,目录详解 Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统 ...

  7. Linux下软件安装和删除的命令

    Linux下软件安装和删除的命令 1. rpm 安装 rpm -ivh *.rpm 2. rpm 查询 rpm -q(a) *.rpm 3. rpm 删除 rpm -e *.rpm 4. yum 安装 ...

  8. linux初学者-软件安装与管理篇

    linux初学者-软件安装与管理篇 在linux的学习和工作中需要安装许多的软件.在redhat的linux操作系统下,软件一般都是rpm格式的.以下将介绍一些软件安装和管理的内容. 1.软件名称 在 ...

  9. Linux查看软件安装和系统信息操作

    Linux中查看程序安装位置 如果是rpm的安装,用rpm -ql 如果是一般安装 用 whereis 或者 find find /usr -name catalina.out ======== 如何 ...

  10. 蓝桥云课linux入门14:Linux 下软件安装

    目录 一.内容 二.开始 2.1 先体验一下 2.2 apt 包管理工具介绍 2.3 apt-get 2.4 安装软件包 2.5 软件升级 2.6 卸载软件 三.使用 dpkg 3.3 查看已安装软件 ...

最新文章

  1. vue监听h5页面返回健(微信和支付宝浏览器亲测):
  2. 第三讲,我们来谈谈:“二进制的负数”
  3. 大数据时代 树大数据意识
  4. 新的html页面拼接类库(简易的模板引擎)
  5. 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
  6. java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题
  7. 正则表达式2--re方法--match()--search()
  8. 小白怎么入门自由职业?
  9. 跟驰理论 matlab,[自然科学]第4章 跟驰理论.ppt
  10. 20145302张薇《Java程序设计》第三周学习总结
  11. 谷歌浏览器加载外部 DLL 文件 关于chrome上的网银安全控件开发技术(chrome 调用本地dll)
  12. MessageBox 用法合集
  13. 直播丨易鲸捷SQL编译器、达梦DM8数据库体系结构
  14. 北京邮电大学在职研究生计算机,北京邮电大学在职研究生专业
  15. python列表的负数索引
  16. 13.大容量存储结构(磁盘管理)
  17. 全新织梦DEDE CMS模板-精仿qq技术导航网站源码
  18. 天正对应cad版本_天正CAD图形找不到可用的AutoCAD版本怎么办?
  19. 微信公众平台中业务域名,JS接口安全域名,网页授权域名配置的MP_verify_liCemlZVM1G3rJPy.txt文件放置位置
  20. 超出文本部分用省略号表示

热门文章

  1. 使用Swauth认证多节点安装Swift
  2. 在线分享活动来了,约吗?!
  3. 企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)
  4. 【转】这些隐藏在苹果iPhone当中的内置代码你是否知道?
  5. 深入理解之overflow属性(第五期)
  6. 区块链-究竟什么是通证经济?-领鹿谷资讯
  7. Milvus 实战|基于 Milvus 的图文检索系统
  8. FireFox允许复制粘贴
  9. 室内射击场的报靶方式汇总:视觉报靶成本低
  10. [AV1] Chroma from Luma Prediction