Linux及软件安装
- 以上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 2022年 10月 21日 星期五 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 10月 22 12:35 test2.txt -rw-r--r--. 1 root root 836 10月 22 12:59 test.txt # 组合使用 [root@localhost home]# ls -al 总用量 8 drwxr-xr-x. 2 root root 39 10月 22 12:59 . dr-xr-xr-x. 17 root root 224 10月 21 18:13 .. -rw-r--r--. 1 root root 15 10月 22 12:35 test2.txt -rw-r--r--. 1 root root 836 10月 22 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键结束输入,等同于clS
:用输入的文本带带光标处所在的行,用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
命令可以带g
和c
选项,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 10月 23 13:14 . dr-xr-xr-x. 17 root root 224 10月 21 18:13 .. drwxr-xr-x. 2 root root 23 10月 22 14:17 test -rw-r--r--. 1 root root 61 10月 23 13:37 test1.txt drwxr-xr-x. 3 root root 35 10月 22 14:24 test2 [root@localhost home]# ls -al > test1.txt [root@localhost home]# cat test1.txt 总用量 0 drwxr-xr-x. 4 root root 48 10月 23 13:14 . dr-xr-xr-x. 17 root root 224 10月 21 18:13 .. drwxr-xr-x. 2 root root 23 10月 22 14:17 test -rw-r--r--. 1 root root 0 10月 23 13:55 test1.txt drwxr-xr-x. 3 root root 35 10月 22 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 10月 23 13:14 . dr-xr-xr-x. 17 root root 224 10月 21 18:13 .. drwxr-xr-x. 2 root root 23 10月 22 14:17 test -rw-r--r--. 1 root root 6 10月 23 13:55 test1.txt drwxr-xr-x. 3 root root 35 10月 22 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 4月 13 2018 /etc/logr otate.d/yum 正常drwxr-xr-x 2 root root 0 4月 13 2018 /etc/yum 正常-rw-r--r-- 1 root root 970 4月 13 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 all
;yum 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
是一个从网络上自动下载文件的自由工具,支持通过HTTP
,HTTPS
,FTP
三个最常见的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及软件安装相关推荐
- Linux之软件安装 apt-get
Linux之软件安装 apt-get 1. 软件安装的介绍 Ubuntu软件安装有两种方式: 离线安装(deb文件格式安装) [提前下载到电脑的安装包] 在线安装(apt-get方式安装) ...
- Linux入门基础教程之Linux下软件安装
Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...
- Linux课程---11、Linux中软件安装和调试
Linux课程---11.Linux中软件安装和调试 一.总结 一句话总结: 启动过程:1.安装软件,2.修改配置文件,3.启动服务 查看过程:4.查看进程,5.查看端口 关闭过程:6.关闭软件,7. ...
- qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...
很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...
- _云计算学习路线图素材课件,Linux中软件安装的方式
很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...
- 【转】Linux下软件安装的几种方式
转自Linux下软件安装的几种方式 Linux 系统的/usr目录 Linux 软件安装到哪里合适,目录详解 Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统 ...
- Linux下软件安装和删除的命令
Linux下软件安装和删除的命令 1. rpm 安装 rpm -ivh *.rpm 2. rpm 查询 rpm -q(a) *.rpm 3. rpm 删除 rpm -e *.rpm 4. yum 安装 ...
- linux初学者-软件安装与管理篇
linux初学者-软件安装与管理篇 在linux的学习和工作中需要安装许多的软件.在redhat的linux操作系统下,软件一般都是rpm格式的.以下将介绍一些软件安装和管理的内容. 1.软件名称 在 ...
- Linux查看软件安装和系统信息操作
Linux中查看程序安装位置 如果是rpm的安装,用rpm -ql 如果是一般安装 用 whereis 或者 find find /usr -name catalina.out ======== 如何 ...
- 蓝桥云课linux入门14:Linux 下软件安装
目录 一.内容 二.开始 2.1 先体验一下 2.2 apt 包管理工具介绍 2.3 apt-get 2.4 安装软件包 2.5 软件升级 2.6 卸载软件 三.使用 dpkg 3.3 查看已安装软件 ...
最新文章
- vue监听h5页面返回健(微信和支付宝浏览器亲测):
- 第三讲,我们来谈谈:“二进制的负数”
- 大数据时代 树大数据意识
- 新的html页面拼接类库(简易的模板引擎)
- 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
- java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题
- 正则表达式2--re方法--match()--search()
- 小白怎么入门自由职业?
- 跟驰理论 matlab,[自然科学]第4章 跟驰理论.ppt
- 20145302张薇《Java程序设计》第三周学习总结
- 谷歌浏览器加载外部 DLL 文件 关于chrome上的网银安全控件开发技术(chrome 调用本地dll)
- MessageBox 用法合集
- 直播丨易鲸捷SQL编译器、达梦DM8数据库体系结构
- 北京邮电大学在职研究生计算机,北京邮电大学在职研究生专业
- python列表的负数索引
- 13.大容量存储结构(磁盘管理)
- 全新织梦DEDE CMS模板-精仿qq技术导航网站源码
- 天正对应cad版本_天正CAD图形找不到可用的AutoCAD版本怎么办?
- 微信公众平台中业务域名,JS接口安全域名,网页授权域名配置的MP_verify_liCemlZVM1G3rJPy.txt文件放置位置
- 超出文本部分用省略号表示