虛擬控制臺
- 當啟動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.條件測試
debian系統安裝,
- 注意: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
LINUX教程,
循環結構
select選擇結構
語法格式
select 變量 in 列表
do
命令表
done
select選擇結構可以以一種更簡便的方式生成具有編號的菜單
select會給列表中的內容自動生成菜單標號,下標從0開始,selsect會根據輸出的編號選擇相應的內容并且賦值給相應的變量,對應相應的菜單編號可以使用case語言進行相應的操作,即do和done中可以是case語句
while循環結構
通常在無法確定循環的具體次數時,使用while循環語句
語法格式
while((表達式))
do
命名表
done
Linux安裝軟件實例。
for循環結構
通常用于知道具體循環次數的情況
語法格式
for 變量 [in 列表]
do
命令表
done
do和done相當于大括號
若省略了in 列表,則傳遞位置參數
until循環
until是在條件為假時繼續執行循環,條件為真時,停止執行
語法格式
until ((表達式))
do
命令表
done
break語句
使用break結束循環,跳出循環后,將轉到done語句后繼續執行
continue語句
用來跳過本次循環,即直接跳回到循環的開始位置(條件判斷處)
centos軟件安裝、函數
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-*
centos7安裝軟件?安裝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
安裝vim。執行可執行文件名用-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
linux卸載軟件命令。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 新主機名
linux軟件安裝命令。
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 <網絡接口>
centos安裝常用軟件?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
linux應用軟件,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
linux安裝apk?顯示所有連接的信息
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地址
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即可連接
1.目錄結構圖
2.目錄說明
/ 根目錄bin 存放用戶二進制文件boot 存放內核引導配置文件dev 存放設備文件etc 存放系統配置文件home 普通用戶主目錄lib 動態共享庫lost+found 文件系統恢復時的恢復文件media 可卸載存儲介質掛載點mnt 文件系統臨時掛載點opt 附加的應用程序包proc 系統內存的映射目錄,提供內核與進程信息root root超級用戶主目錄sbin 存放系統二進制文件srv 存放服務相關數據sys sys 虛擬文件系統掛載點tmp 存放臨時文件usr 存放用戶應用程序 var 存放郵件、系統日志等變化文件
3.目錄路徑
- 絕對路徑
- 從根目錄開頭的路徑
/
表示根目錄- 相對路徑
- 從當前目錄開始定位
..
表示當前目錄的上一目錄
1.help
[root@localhost /]# cp --help
2.man
[root@localhost /]# man help
1.reboot
# 重啟 [root@localhost /]# reboot
2.shutdown/poweroff
# 關機 [root@localhost /]# poweroff [root@localhost /]# shutdown now
1.echo
# 輸出數據到窗口 [root@localhost /]# echo "hello" hello
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
1.date
# 顯示當前系統時間 [root@localhost ~]# date 2022年 10月 21日 星期五 19:27:26 CST # 顯示年月日時分秒 [root@localhost ~]# date '+%F %T' 2022-10-21 19:29:43
1.clear
[root@localhost /]# clear
7.終止命令
- Ctrl+c:終止當前命令
8.查看歷史命令
- 通過上下箭頭即可查看歷史命令
9.自動補全命令
- 通過Tab鍵可以自動補全已存在內容
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
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]#
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
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
: 在屏幕末行顯示文件相關信息
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完畢!
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.安裝位置
- /opt
2.安裝包
- jdk-8u171-linux-x64.rpm
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
1.安裝位置
- /opt/mysql5.7
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.配置文件
- 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.測試
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項目打包部署
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态