debian系統安裝,Linux及軟件安裝

 2023-10-07 阅读 28 评论 0

摘要:以上6個目錄的所有命令在linux任何目錄都可以執行,不需要./ 虛擬控制臺 當啟動Linux系統進入字符工作方式后,系統提供了多個(默認為6個)虛擬控制臺每個控制臺可以獨立使用互不影響,可以使用快捷鍵<Alt+F1>~<Alt+F6>進

在這里插入圖片描述
在這里插入圖片描述

  • 以上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.條件測試

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地址

VMware

1.安裝VMware

  • 1.下載安裝包
    在這里插入圖片描述
  • 2.按步驟安裝
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

2.創建新的虛擬機

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.啟動CentOS 7

  • 1.配置語言在這里插入圖片描述
  • 2.配置安裝位置在這里插入圖片描述
  • 3.配置網絡在這里插入圖片描述
  • 編輯-虛擬網絡編輯器-VMnet8-NAT設置
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

4.Linux快照

  • 快照:相當于windows系統中的備份
    在這里插入圖片描述
    在這里插入圖片描述

5.Linux克隆

  • 克隆:根據現有機器復制出一臺和原機器配置及狀態一致的機器
  • 注意: 必須是關機或者關機的快照才可以克隆

1.克隆向導

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.修改克隆機IP

  • 1.編輯網絡配置
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    在這里插入圖片描述
  • 2.修改IP地址
    IPADDR="192.168.73.101"
    
  • 重啟網絡服務
    systemctl restart network
    

3.正確的網絡配置

  • 如果虛擬機無法連接網絡,可以根據以下步驟修改在這里插入圖片描述

5.遠程連接工具MobaXterm

在這里插入圖片描述

  • 下載第一個免安裝版,然后通過ssh session輸入虛擬機ip即可連接

附錄一:Linux目錄結構

1.目錄結構圖

在這里插入圖片描述

2.目錄說明

/       根目錄bin   存放用戶二進制文件boot  存放內核引導配置文件dev   存放設備文件etc   存放系統配置文件home  普通用戶主目錄lib   動態共享庫lost+found 文件系統恢復時的恢復文件media  可卸載存儲介質掛載點mnt   文件系統臨時掛載點opt   附加的應用程序包proc  系統內存的映射目錄,提供內核與進程信息root  root超級用戶主目錄sbin  存放系統二進制文件srv   存放服務相關數據sys   sys 虛擬文件系統掛載點tmp   存放臨時文件usr   存放用戶應用程序 var   存放郵件、系統日志等變化文件

3.目錄路徑

  • 絕對路徑
    • 從根目錄開頭的路徑
    • /表示根目錄
  • 相對路徑
    • 從當前目錄開始定位
    • ..表示當前目錄的上一目錄

附錄二:Linux命令

1.幫助命令

1.help

[root@localhost /]# cp --help

2.man

[root@localhost /]# man help

2.開關機命令

1.reboot

# 重啟
[root@localhost /]# reboot

2.shutdown/poweroff

#  關機
[root@localhost /]# poweroff
[root@localhost /]# shutdown now

3.輸出打印命令

1.echo

# 輸出數據到窗口
[root@localhost /]# echo "hello"
hello

4.ip命令

1.dhclient

# 動態分配一個ip,通過ip命令查看后可以發現多出一個動態ip
[root@localhost /]# dhclient

2.ip

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

3.ifconfig

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

4.ping

# 檢測出網絡連通情況
[root@localhost /]# ping 172.20.10.2C:\Users\32929>ping 192.168.73.100

5.日期命令

1.date

# 顯示當前系統時間
[root@localhost ~]# date
20221021日 星期五 19:27:26 CST
# 顯示年月日時分秒
[root@localhost ~]# date '+%F %T'
2022-10-21 19:29:43

6.清屏命令

1.clear

[root@localhost /]# clear

7.終止命令

  • Ctrl+c:終止當前命令

8.查看歷史命令

  • 通過上下箭頭即可查看歷史命令

9.自動補全命令

  • 通過Tab鍵可以自動補全已存在內容

10.目錄命令

1.pwd

# 查看當前目錄
[root@localhost home]# pwd
/home

2.cd

# 切換目錄
[root@localhost home]# cd /opt

3.ls

# 顯示當前目錄下的組成
[root@localhost home]# ls
test2.txt  test.txt
# 顯示隱藏文件
[root@localhost home]# ls -a
.  ..  test2.txt  test.txt
# 顯示文件的詳細信息
[root@localhost home]# ls -l
總用量 8
-rw-r--r--. 1 root root  15 1022 12:35 test2.txt
-rw-r--r--. 1 root root 836 1022 12:59 test.txt
# 組合使用
[root@localhost home]# ls -al
總用量 8
drwxr-xr-x.  2 root root  39 1022 12:59 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
-rw-r--r--.  1 root root  15 1022 12:35 test2.txt
-rw-r--r--.  1 root root 836 1022 12:59 test.txt
# 顯示指定目錄中的文件
[root@localhost home]# ls /home
test2.txt  test.txt

在這里插入圖片描述

4.mkdir

創建目錄

[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test2.txt  test.txt
# 級聯創建目錄
[root@localhost home]# mkdir -p test/spring/springboot

11.文件命令

1.touch

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

2.rm

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

3.cp

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

4.mv

[root@localhost home]# mv test2.txt test2
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# cd test2
[root@localhost test2]# ls
test  test2.txtmv a/abc.txt b  		 # 	 b是目錄,則將a中的abc.txt移動到b目錄中
mv a/abc.txt b/bcd.txt   # 	將a中的abc.txt移動到b中并改名為bcd.txt(可重命名)
mv a b  				 #	a,b是目錄,將a的所有內容(包括a)移動到b目錄中
mv a/* b 				 #  將a中所有內容(不包括a)移動到b目錄中

5.find

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

6.scp

# linux機器間進行文件的遠程復制
# scp A機器中源文件路徑  B機器的用戶@B機器ip:目標文件路徑
# 進行文件復制的時候需要確定(yes),然后輸入目標機器的密碼
# 復制文件
[root@localhost home]# scp test1.txt root@192.168.73.100:/home
The authenticity of host '192.168.73.100 (192.168.73.100)' can't be established.
ECDSA key fingerprint is >	SHA256:feZSpWqNvo1WZWc8kTmO6vJ95xUTZw++EjUnFUEOiII.
ECDSA key fingerprint is MD5:29:83:54:61:f7:79:81:8f:d3:c3:22:74:4b:6c:e6:78.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.73.100' (ECDSA) to the list of known hosts.
root@192.168.73.100's password:
test1.txt                                     100%   15    12.7KB/s   00:00
# 復制目錄 加上-r參數
[root@localhost home]# scp -r test root@192.168.73.100:/home
root@192.168.73.100's password:
test1.txt                                     100%   15     4.6KB/s   00:00
[root@localhost home]#

12.文本命令

1.cat

# 1.將文件全部內容打印到屏幕上(適用于內容較少的)
[root@localhost home]# cat test1.txt
test springmvc
# 2.顯示文件全部內容,非空的行輸出行號,空行會輸出,但不標記行號
[root@localhost home]# cat -b test1.txt
# 3.顯示文件全部內容,所有行都輸出行號 
[root@localhost home]# cat -n test1.txt1  test springmvc

2.tac

從最后一行開始,倒序輸出文件的內容
[root@localhost home]# tac test1.txt

3.nl

# 顯示文件內容,輸出行號,默認情況下空行不記錄行號
[root@localhost home]# nl test1.txt
# 空行也輸出行號
[root@localhost home]#nl -b a test1.txt
# 默認設置
[root@localhost home]# nl -b t test1.txt
# 設置行號字段占用的位數 
[root@localhost home]# nl -w 100 test1.txt

4.more

# 可以實時顯示閱讀百分比(less不支持)
# 按空格往下翻一頁(適用于內容較多的)
# 按Enter往下翻一行(不能往上一行一行的翻回去)
# 按B鍵往上翻一頁
# :f 可以顯示文件名和現在的行數
# q 退出more
[root@localhost home]# more test1.txt

5.less

# more命令的所有按鍵less都支持
# ↑↓箭頭可以實現一行一行的上下翻
# PageDown/PageUp可以實現一頁一頁的上下翻
# more會將查看過的內容打印在屏幕上,而less不會
[root@localhost home]# less test1.txt

6.head

# 默認只顯示文件的前10行文本內容
[root@localhost home]# head test1.txt
# head -n 行數 行數指定顯示文件的前n行
[root@localhost home]# head -n 5 test1.txt
# 負數表示除去文件結尾的n行,其他的從頭開始的所有行都顯示出來 
[root@localhost home]# head -n -5 test1.txt

7.tail

# 1.默認只顯示從文件最后一行開始的10行文本內容(正序)
[root@localhost home]# tail test1.txt
# 2.tail -n 行數 行數指定顯示文件的最后幾行
[root@localhost home]# tail -n 5 test1.txt
# 3.tail命令不支持負數,-n -5 執行結果同 -n 5 
# 4.tail -c n 文件名表示輸出文件最后n 個字節的內容
[root@localhost home]# tail -c 5 test1.txt
fsd3
# 5.tail -f 文件名 默認顯示文件的最后 10 行內容,而且光標不會退出命令,每隔一秒會檢查一下文件是否增加新的內容,如果增加就追加到原來的輸出結果后面并顯示(新終端中通過echo命令向文件中追加數據)
# 6.Ctrl+c 中斷 tail 命令
[root@localhost home]# tail -f test1.txt
# tail -f 與 tail -F 與 tailf的區別
# 1.tail -f 根據文件描述符進行追蹤,當文件改名或被刪除,追蹤停止
# 2.tail -F根據文件名進行追蹤,并保持重試,即該文件被刪除或改名后,如果再次創建相同的文件名,會繼續追蹤。
# 3.tailf 等同于tail -f -n 10(tail -f或-F默認也是打印最后10行),與tail -f不同的是,如果文件不增長,它不會去訪問磁盤文件,所以tailf特別適合那些便攜機上跟蹤日志文件,因為它減少了磁盤訪問

在這里插入圖片描述

8.grep

# 1.grep命令能夠在一個或多個文件中,搜索某一特定的字符模式(也就是正則表達式),此模式可以是單一的字符、字符串、單詞或句子
# 2.如果是搜索多個文件,grep 命令的搜索結果只顯示文件中發現匹配模式的文件名;而如果搜索單個文件,grep 命令的結果將顯示每一個包含匹配模式的行。
# 3.正則表達式是描述一組字符串的一個模式,正則表達式的構成模仿了數學表達式,通過使用操作符將較小的表達式組合成一個新的表達式
# 4.正則表達式的通配符# 1.c*	將匹配 0 個(即空白)或多個字符 c(c 為任一字符)[root@localhost home]# grep -n boot* test1.txt2:spring boot# 2. .	將匹配任何一個字符,且只能是一個字符[root@localhost home]# grep -n .  test1.txt1:test# 3.[xyz]	匹配方括號中的任意一個字符[root@localhost home]# grep -n [boot]  test1.txt1:test2:spring boot3:spring boot24:spring boot35:boot spring boot3# 4.[^xyz]	匹配除方括號中字符外的所有字符[root@localhost home]# grep -n [^boot]  test1.txt1:test2:spring boot3:spring boot24:spring boot35:boot spring boot3# 5.^	鎖定行的開頭[root@localhost home]# grep -n ^boot  test1.txt5:boot spring boot3# 6.$	鎖定行的結尾[root@localhost home]# grep -n boot$  test1.txt2:spring boot# grep [選項] 模式 文件名# 選項:# -c	僅列出文件中包含模式的行數# -i	忽略模式中的字母大小寫# -l	列出帶有匹配行的文件名# -n	在每一行的最前面列出行號# -v	列出沒有匹配模式的行# -w	把表達式當做一個完整的單字符來搜尋,忽略那些部分匹配的行# 1.文件中搜索關鍵字,顯示包含關鍵字的行
[root@localhost home]# grep boot test1.txt
spring boot
# 2.grep -n 關鍵字 文件 顯示包含關鍵字的行以及行號
[root@localhost home]# grep -n boot test1.txt
2:spring boot

9.管道

# 管道是一種通信機制,通常用于進程的通信。它的表現是可以組合多個命令,將前一個命令的輸出作為下一個命令的輸入
# 在屏幕上直接顯示所有信息
[root@localhost home]# ls -al
# ls -al 的輸出,將作為 less 的輸入
[root@localhost home]# ls -al | less
# 在 ls -al 的輸出中查找test
[root@localhost home]# ls -al | grep test

10.wc

# 對文件內容進行統計	
# wc -l 文件 統計行數
[root@localhost home]# wc -l test1.txt
5 test1.txt
# wc -w 文件 統計單詞
[root@localhost home]# wc -w test1.txt
10 test1.txt
# wc -c 文件 統計字符數
[root@localhost home]# wc -c test1.txt
61 test1.txt

13.編輯文件命令

1.命令行模式

  • 1.該模式是進入vi編輯器后的默認模式
  • 2.任何模式下,通過ESC都可以進入命令行模式
  • 3.該模式下輸入 vi 命令,輸入的任何字符都被當作編輯命令來解釋
  • 4.若輸入的字符是合法的 vi 命令,則完成相應的動作(所輸入的命令并不回顯在屏幕上)
  • 5.若輸入的字符不是合法的 vi 命令,vi 會響鈴報警
  • 6.合法的vi命令
    • 1.【行數】yy 從當前行向下復制指定行數
    • 2.【行數】dd 從當前行向下刪除指定行數
    • 3.p 配合yy將復制的內容粘貼到指定位置

2.文本輸入模式

  • 1.該模式只能從命令行模式進入
  • 2.該模式進入方式有多種方式,進入成功后底部會顯示INSERT
    • 1.附加命令:a 從當前光標的后一位開始輸入
    • 2.修改命令:cc 刪除當前行并從行首開始輸入
    • 3.輸入命令:i 從當前光標的前一位開始輸入
    • 4.取代命令:r+取代字符 將當前光標字符用取代字符取代
    • 5.替換命令:s 將當前光標字符刪除然后從刪除位開始輸入
    • 6.換行命令:o 將光標移動到當前行的下一行開始輸入

3.末行模式

  • 該模式只能從命令行模式進入
  • 命令行模式下,通過進入末行模式,此時 vi 會在顯示窗口的最后一行
  • 末行模式命令
    • 1.:q:退出不保存
    • 2.:q!:強制退出不保存
    • 3.:wq:退出并保存
    • 4.:w [文件名]:寫入指定文件,若未指定文件則寫入當前文件,即vi啟動時打開的文檔
    • 5.:e!:放棄修改,編輯區恢復為文件原樣
    • 6.:e 文件名:打開指定的文件,調入編輯區
    • 7.:r 文件名:讀入指定的文件,將文件內容插入到光標位置
    • 8.:f: 在屏幕末行顯示文件相關信息

4.vi命令

1.編輯文件命令
# 1.打開(若已存在)或新建文件,并將光標置于第一行首
[root@localhost home]# vi test.txt
# 2.打開文件,并將光標置于第 n 行首
[root@localhost home]# vi +4 test.txt
# 3.打開文件,并將光標置于最后一行首
[root@localhost home]# vi + test.txt
# 4.打開文件,并將光標置于第一個與 redis 匹配的行的行首
[root@localhost home]# vi +/redis test.txt
# 5.恢復上次 vi 編輯時發生系統崩潰
[root@localhost home]# vi -r test.txt
# 6.打開多個文件,依次進行編輯
[root@localhost home]# vi test.txt test2.txt
2.屏幕翻滾命令
  • Ctrl+u:向上翻半屏
  • Ctrl+d:向下翻半屏
  • Ctrl+f:向下翻一屏。同pageDown鍵
  • Ctrl+b:向上翻一屏,同pageUp鍵
3.光標定位命令
  • 0:光標移至行首,同home鍵
  • ^ :光標移至行首第一個非空格字符
  • $:光標移至行尾,同end鍵
  • [n]G:光標移到第n行,未指定n時移到末行
  • H、M、L:光標移到屏幕首、中、尾行行首
4.光標移動命令
  • h、j、k、l :光標左、下、上、右移一個字符,同箭頭鍵
  • b、w:光標移到上一個詞,下一個詞首
  • e:光標移到詞尾
  • 注意
    • 以上光標移動命令前帶數字n時,表示重復移動n次例:2h:左移2格;3e:移到后面第三個詞詞尾)
5.刪除命令
  • x、X:刪除光標處、光標前的字符
  • dd:刪除光標所在的行
  • D:刪除光標右邊的文本
  • J:刪除當前行尾的換行符,使當前行與下一行合并為一行
  • d+定位符:刪除從光標位置到指定位置范圍內的字符
    • d0、d^ :刪除光標左面的文本,0或^代表行首
    • d$:刪除光標右面的文本。$代表行尾
    • dG:刪除光標所在行之后的所有行,G代表最后一行
    • db:刪除光標處前的字符直到詞首,b代表詞首
    • de:刪除光標處的字符直到詞尾,e代表詞尾
    • dw:刪除光標處的字符直到下一個詞的詞首,w代表下一次詞尾
  • 注意
    • 以上命令帶數字n時,表示刪除的范圍擴大n倍(例:4dd:刪除4行;3de:刪除從光標開始的三個詞)
6.文本修改與替換
1.修改:先刪除指定范圍內的文本,然后插入新文本
  • cc:修改光標所在的行
  • C:修改光標處到行尾的文本
  • c+定位符:修改光標到指定范圍內的文本,常用的有:
    • c0、c^:修改光標左邊的文本
    • c$:修改光標右面的文本
    • cG:修改光標所在行之后的所有行
    • cb:修改光標處前的字符直到詞首
    • cw:修改光標處的字符直到詞尾
    • cl:修改光標處的字符
  • 注意
    • 以上命令前帶數字n時,表示修改的范圍擴大n倍(例:5cc:修改從光標所在處開始的5行;3cw:修改從光標開始的3個詞)
2.替換(replace):用一個字符替換另一個字符,這是覆蓋操作,替換后文本的長度保持不變
  • r:用輸入的字符替換光標處的字符
  • R:用輸入的文本逐個替換從光標處開始的各個字符,直到按下Esc鍵
3.替代(substitute):用多個字符取代一個字符或一行,這是先刪除后插入操作,替代后的文本的長度一般會發生變化
  • s:用輸入的文本替代光標處的字符,用Esc鍵結束輸入,等同于cl
  • S:用輸入的文本帶帶光標處所在的行,用Esc鍵結束輸入,等同于cc
  • 注意
    • 以上命令前帶數字n時,表示替換或替代的范圍擴大n倍(例:5r:用輸入的字符替換從光標處開始的5個字符)
7.文本拷貝與粘貼
1.拷貝(copy):將光標處的文本復制到一個緩沖區中
  • yy:拷貝光標所在的行至緩沖區
  • y+定位符:拷貝光標到指定范圍內的文本,常用的有:
    • y0、y^: 拷貝光標左面的文本
    • y$:拷貝光標右面的文本
    • yG:拷貝光標所在行之后的所有行
    • yb:拷貝光標處的字符直到詞首
    • yw: 拷貝光標處的字符直到詞尾
2.粘貼(paste)是將緩沖區中的內容插入到光標處
  • p:若緩沖區中的內容是完整的行,則將這些行插入到光標所在行之后;若不是完整的行,則將這些文本插入到光標處之后
  • P:若緩沖區中的內容是完整的行,則將這些行插入到光標所在行之前;若不是完整的行,則將這些文本插入到光標處之前
  • 注意
    • 以上命令前帶數字n時,表示拷貝的范圍擴大n倍(例:5yy:拷貝光標所在的行及下列共5行至緩沖區)
8.撤銷與重做
1.撤銷(undo)即消除上一個命令所做的修改,恢復到命令執行前的樣子
  • u:撤銷上一個命令所做的修改
  • U:撤銷最近針對這一行所做的全部修改,在對一行連續做了多處修改后,用此命令可以一次恢復全行
2.重做(redo)就是重復執行上一個命令
  • .:重復前一個命令
9.搜索與替換命令
  • 命令行模式下,輸入/字符都將進入末行模式,隨后的輸入被解釋為行命令
1.字符串搜索:執行搜索命令后,光標將停留在第一個匹配字符的首字符處,按 n 或 N 則移到下一個匹配字符串之首,如果不存在匹配的字符串,則會在末行顯示“找不到該字符串”
  • / 字符串:從光標處向后搜索與指定模式匹配的字符串,按n向后查找
  • ?字符串:從光標處向前搜索與指定模式匹配的字符串,按N向前查找
2.字符串替換用s命令,格式::[n1,n2]s/p1/p2/[g][c]
  • n1,n2表示目標行的行號范圍,可以用%代表所有行;未指定范圍時,目標行就是光標所在行的當前行
  • p1是用作搜索的字符串
  • p2是用作替代的字符串
  • 字符串中可以用^代表行首,$代表行尾
  • s命令可以帶gc選項,g表示替代目標行中所有匹配的字符串,沒有g的話則只替換目標行中第一個匹配的字符串,選項c表示替換前要求用戶確認。
10.全局命令
1.全局搜索:全文中搜索含有與指定字符串相匹配的字符串的行,對匹配的行作標記
  • :g/p1:搜索所有包含p1字符串的行
  • :g!/p1:搜索所有不包含p1字符串的行
2.全局替換:s命令是面向行的字符串替換命令,s命令經常與g命令聯合使用
  • g命令/s命令:先用g命令在文件中搜索含有某個字符串的行,并做標記,然后用s命令對所有有標記的行執行搜索和替換
11.行編輯命令
  • 用于對指定的行進行編輯,在指定行范圍時,可以用.代表當前行,用$代表最后一行,用%代表所有行
    • :n:跳至第n行
    • :n1,n2con3:將第n1至n2行之間的內容拷貝到第n3行下(例:3,7co$:將第3到7行的文字復制到文件末尾處)
    • :n1,n2mn3: 將第n1至n2行之間的內容移到第n3行下(例:m10:將當前行移動到第10行下)
    • :n1,n2d: 將第n1至n2行之間的內容刪除(例:3,7d:刪除第3到7行)
    • :p:顯示當前行的內容
    • :nu:顯示當前行的行號和內容
12.設定vi選項
  • vi是一個高度可定制的編輯器,可以通過設置vi的選項來設定vi的一些外觀和行為特性
    • :set all:顯示所有選項
    • :set ai:set noai:設定、取消自動縮進
    • :set nu:set nonu:設定、取消行號顯示
    • :set hlsearch:set nohlsearch:設定、取消高亮顯示搜索到的字符串
    • :set ic:set noic :設定、取消搜索命令中忽略大小寫

13.輸出重定向

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

14.鏈接

  • Linux中的鏈接類似于Windows中快捷方式,可以為文件添加一個鏈接,方便用戶在不同的位置快速訪問原文件

1.硬鏈接

# 硬鏈接(hard link)
# 硬鏈接相當于創建了原文件的一個副本(拷貝),但不會占用額外的空間
# 語法:ln 原文件 鏈接文件
# 刪除原文件不會影響硬鏈接
# 不能對目錄創建硬鏈接
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# ln test1.txt test1_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1.txt  test2

2.軟鏈接

# 軟鏈接(symbolic link)
# 軟連接也稱符號鏈接,保存的是原文件的路徑
# 語法:ln -s 原文件 鏈接文件
# 創建符號鏈接時,源文件的路徑盡量使用絕對路徑
# 刪除原文件,符號鏈接將無法使用
# 可以對目錄創建符號鏈接
[root@localhost home]# ln -s test1.txt test1_soft_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1_soft_link.txt  test1.txt  test2

15.進程命令

1.top

# top命令用來監控linux的系統狀況,是常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用情況
[root@localhost home]# top
# top -p 進程id  只顯示特定進程的信息
[root@localhost home]# top -p 1
# top命令顯示結果后,再按M 結果按內存使用率降序排列
# top命令顯示結果后,再按P 結果按CPU使用率降序排列

在這里插入圖片描述

2.ps

# 1.a:顯示一個終端的所有進程,除會話引線外
[root@localhost home]# ps a
PID TTY      STAT   TIME COMMAND
1271 tty1     Ss+    0:00 -bash
1303 pts/0    Ss     0:00 -bash
8522 pts/0    R+     0:00 ps a
# 2.u:顯示進程的歸屬用戶及內存的使用情況
[root@localhost home]# ps -u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1271  0.0  0.2 115432  2028 tty1     Ss+  11:59   0:00 -bash
root       1303  0.0  0.2 115436  2036 pts/0    Ss   12:00   0:00 -bash
root       8523  0.0  0.1 155324  1860 pts/0    R+   15:07   0:00 ps -u
# 3.x:顯示沒有控制終端的進程
[root@localhost home]# ps -x
# 4.-l:查看當前shell產生的進程的詳細信息
[root@localhost home]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1303   1290  0  80   0 - 28859 do_wai pts/0    00:00:00 bash
0 R     0   8525   1303  0  80   0 - 38300 -      pts/0    00:00:00 ps
# 5.-e:顯示所有進程
[root@localhost home]# ps -e
# 6.-f:顯示進程全部信息
[root@localhost logs]# ps -f
# ps aux 查看系統中所有的進程,使用 BS 操作系統格式
[root@localhost home]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 127956  6480 ?        Ss   11:59   0:01 /usr/lib/systemd/systemd -->switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    11:59   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:59   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   11:59   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    11:59   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    11:59   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    11:59   0:00 [rcu_sched]

在這里插入圖片描述

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

在這里插入圖片描述

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

2.kill

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

16.解壓縮命令

1.壓縮文件

1.zip

在這里插入圖片描述

# 將test1.txt文件壓縮成test.zip文件
[root@localhost home]# zip test1.zip test1.txtadding: test1.txt (stored 0%)
[root@localhost home]# ls
test1.txt  test1.zip# 將test1.txt文件壓縮成test.zip文件,并且添加一行注釋
[root@localhost home]# zip -c test1.zip test1.txtadding: test1.txt (stored 0%)
Enter comment for test1.txt:
zip file : test1.zip	# 在這里添加注釋信息# 壓縮文件中刪除指定文件
[root@localhost home]# zip test3.zip -d test1.txt
deleting: test1.txt# 將test1.txt文件壓縮成test.zip文件,并指定加密密碼
[root@localhost home]# zip -e test1.zip test1.txt
Enter password:	# 在這里輸入壓縮加密密碼
Verify password:	# 再一次輸入壓縮加密密碼adding: test1.txt (stored 0%)# 將test目錄(包含目錄中的文件)壓縮成test3.zip文件
[root@localhost home]# zip -r test3.zip testadding: test/ (stored 0%)adding: test/test3.txt (stored 0%)# 將test目錄(包含目錄中的文件)壓縮成test3.zip文件,但排除test/test3.txt文件
[root@localhost home]# zip -r test3.zip test -x test/test3.txtadding: test/ (stored 0%)# 測試壓縮文件test1zip的完整性
[root@localhost home]# zip -T test1.zip
[test1.zip] test1.txt password: # 輸入壓縮加密密碼
test of test1.zip OK# 更新test1.zip壓縮文件,添加test2.txt文件
[root@localhost home]# zip -u test1.zip test2.txtadding: test2.txt (stored 0%)#  壓縮test2.txt文件并將生成的壓縮文件test2.zip的時間與其一致
[root@localhost home]# zip -o test2.zip test2.txtadding: test2.txt (stored 0%)
# 如果出現下列異常,則需要下載zip 和 unzip
[root@localhost home]# zip test1.zip test1.txt
-bash: zip: 未找到命令
[root@localhost home]# yum install zip
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 zip.x86_64.0.3.0-11.el7 將被 安裝
--> 解決依賴關系完成依賴關系解決================================================================================
Package        架構              版本                    源               大小
================================================================================
正在安裝:
zip            x86_64            3.0-11.el7              base            260 k事務概要
================================================================================
安裝  1 軟件包總下載量:260 k
安裝大小:796 k
Is this ok [y/d/N]: y
Downloading packages:zip-3.0-11.el7.x86_64.rpm                                  | 260 kB   00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安裝    : zip-3.0-11.el7.x86_64                                       1/1驗證中      : zip-3.0-11.el7.x86_64                                       1/1已安裝:zip.x86_64 0:3.0-11.el7完畢![root@localhost home]# yum install unzip
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 unzip.x86_64.0.6.0-24.el7_9 將被 安裝
--> 解決依賴關系完成依賴關系解決================================================================================
Package        架構            版本                     源                大小
================================================================================
正在安裝:
unzip          x86_64          6.0-24.el7_9             updates          172 k事務概要
================================================================================
安裝  1 軟件包總下載量:172 k
安裝大小:369 k
Is this ok [y/d/N]: y
Downloading packages:
unzip-6.0-24.el7_9.x86_64.rpm                              | 172 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安裝    : unzip-6.0-24.el7_9.x86_64                                   1/1驗證中      : unzip-6.0-24.el7_9.x86_64                                   1/1已安裝:unzip.x86_64 0:6.0-24.el7_9完畢!
2.tar

在這里插入圖片描述

# tar命令可以將許多文件一起保存進行歸檔(打包)和壓縮,并能從歸檔和壓縮中單獨還原所需文件
# tar 默認只是歸檔不壓縮,參數-z歸檔后進行gzip壓縮,參數-j歸檔后進行bzip2壓縮
# 下列參數一般組合使用
-A:追加tar中的文件到歸檔文件中
[root@localhost home]# tar -Avf test1.tar test2.tar-c:創建新的歸檔(打包)文件
[root@localhost home]# tar -cvf boot.tar test1.txt
test1.txt-C 目的目錄:切換到指定的目錄 
# 從test3.tar中將test2.txt文件還原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-f 歸檔文件:指定歸檔文件 
[root@localhost home]# tar -tf test2.tar.gz
test2.txt-r 歸檔文件:追加文件本身到歸檔文件末尾
[root@localhost home]# tar -rvf test1.tar test2.tar
test2.tar-t 歸檔文件:列出歸檔文件的內容 -tvf
[root@localhost home]# tar -tf test2.tar.gz
test2.txt-u 歸檔文件:追加文件本身
[root@localhost home]# tar -uvf test1.tar test2.tar
test2.tar-v 歸檔文件:詳細地列出處理的文件
# 從test3.tar中將test2.txt文件還原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-x 備份文件:從備份文件中還原文件
# 從test3.tar中將test2.txt文件還原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt-z 歸檔文件:通過gzip指定處理歸檔文件
# 將test1.txt和test2.txt文件通過gzip的方式先通過tar方式打包再壓縮成test3.tar.gz文件
[root@localhost home]# tar -zcvf test3.tar.gz test1.txt test2.txt
test1.txt
test2.txt-j 歸檔文件:通過bzip2指定處理歸檔文件
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt# tar: 不能指定超過一個"-Acdtrux"選項(即這幾個選項同一個命令只能存在一個)
-A,r,u:追加
-c:創建
-t:展示
-x:還原# A,r,u只能追加歸檔文件(-cvf),不能追加壓縮歸檔文件(-czvf)
# [root@localhost home]# tar -Avf test1.tar.gz test2.tar.gz
tar: 無法更新壓縮歸檔文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -rvf test1.tar.gz test2.tar.gz
tar: 無法更新壓縮歸檔文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -uvf test1.tar.gz test2.tar.gz
tar: 無法更新壓縮歸檔文件
tar: Error is not recoverable: exiting now
# 如果出現下列異常,則需要下載bzip2
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt
tar (child): bzip2:無法 exec: 沒有那個文件或目錄
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost home]# ^C
[root@localhost home]# yum -y install bzip2
已加載插件:fastestmirror
Determining fastest mirrors
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): base/7/x86_64/group_gz                              | 153 kB   00:01
(2/4): extras/7/x86_64/primary_db                                                                                                            >| 249 kB  00:00:11
(3/4): base/7/x86_64/primary_db                                                                                                              >| 6.1 MB  00:00:18
(4/4): updates/7/x86_64/primary_db                                                                                                           >|  17 MB  00:00:38
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 bzip2.x86_64.0.1.0.6-13.el7 將被 安裝
--> 解決依賴關系完成依賴關系解決====================================================================================================================================================================
Package                              架構                                  版本                                          源                                   大小
====================================================================================================================================================================
正在安裝:
bzip2                                x86_64                                1.0.6-13.el7                                  base                                 52 k事務概要
====================================================================================================================================================================
安裝  1 軟件包總下載量:52 k
安裝大小:82 k
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/bzip2-1.0.6-13.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY==-  ]  0.0 B/s |  50 kB  --:--:-- ETA
bzip2-1.0.6-13.el7.x86_64.rpm 的公鑰尚未安裝
bzip2-1.0.6-13.el7.x86_64.rpm                                                                                                                |  52 kB  00:00:04
從 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 檢索密鑰
導入 GPG key 0xF4A80EB5:
用戶ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
指紋       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
軟件包     : centos-release-7-5.1804.el7.centos.x86_64 (@anaconda)
來自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安裝    : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1驗證中      : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1已安裝:bzip2.x86_64 0:1.0.6-13.el7完畢!

2.解壓文件

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

17.權限管理命令

18下載安裝命令

  • Linux下的軟件包可以細分成兩種:源碼包和二進制包
  • 源碼包:指源代碼程序,需要編譯成二進制包才能被計算機識別并使用
  • 二進制包:指源碼包經過成功編譯之后產生的包,是 Linux 下默認的軟件安裝包(例:xxx.rpm)
    • RPM二進制包的命名需遵守統一的命名規則,通過名稱可以直接獲取這類包的版本、適用平臺等信息
      包名-版本號-發布次數-發行商-Linux平臺-適合的硬件平臺-包擴展名例:httpd-2.2.15-15.el6.centos.1.i686.rpm
      httped:包名 
      httpd-2.2.15-15.el6.centos.1.i686.rpm: 包全名
      2.2.15:包的版本號,版本號的格式通常為(主版本號.次版本號.修正號)
      15:二進制包發布的次數
      el*:軟件發行商,el6 表示此包是由 Red Hat 公司發布,適合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用
      centos:表示此包適用于 CentOS 系統
      i686:表示此包使用的硬件平臺
      rpm:RPM 包的擴展名,表明這是編譯好的二進制包,可以使用 rpm 命令直接安裝(如果以 src.rpm 作為擴展名的 RPM 包,表明是源代碼包,需要安裝生成源碼,然后對其編譯并生成 rpm 格式的包,最后才能使用 rpm 命令進行安裝)
      
      在這里插入圖片描述
  • 通常情況下,RPM 包采用系統默認的安裝路徑通常情況下,RPM 包采用系統默認的安裝路徑
    在這里插入圖片描述

1.rpm

  • rpm是Red Hat Linux 發行版專門用來管理 Linux 各項套件(文件后綴為:.rpm)的程序
  • rpm類似于Android中的.apk文件,需要使用rpm命令進行安裝
  • rpm軟件包的安裝和卸載都需要考慮包之間的依賴性,需要注意先后關系
    rpm [-acdhilqRsv][-b<完成階段><套間檔>+][-e<套件擋>][-f<文件>+][-i<套件檔>][-p<套件檔>][-U<套件檔>][-vv][--addsign<套件檔>+][--allfiles][--allmatches][--badreloc][--buildroot<根目錄>][--changelog][--checksig<套件檔>+][--clean][--dbpath<數據庫目錄>][--dump][--excludedocs][--excludepath<排除目錄>][--force][--ftpproxy<主機名稱或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主機名稱或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<執行指令>][--prefix<目的目錄>][--provides][--queryformat<檔頭格式>][--querytags][--rcfile<配置檔>][--rebulid<套件檔>][--rebuliddb][--recompile<套件檔>][--relocate<原目錄>=<新目錄>][--replacefiles][--replacepkgs][--requires][--resign<套件檔>+][--rmsource][--rmsource<文件>][--root<根目錄>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安裝平臺>+][--test][--timecheck<檢查秒數>][--triggeredby<套件檔>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
    -a:查詢所有套件
    -c:只列出組態配置文件
    -d:只列出文本文件
    -h:顯示安裝進度
    -i:顯示套件的相關信息
    -l:顯示套件的文件列表及安裝目錄
    -q:使用查詢模式
    -R:顯示套件的關聯性信息
    -s:顯示文件狀態
    -v:顯示更詳細的信息(執行過程)[-e <套件>]:卸載指定的套件
    [-f <文件>]:查詢擁有指定文件的套件
    [-i <套件>]:安裝指定的套件(install)
    [-p <套件>]:查詢指定的RPM套件檔
    [-U <套件>]:如果該套件沒安裝過則直接安裝;若安裝則升級至最新版本# rpm -q 包名 查詢軟件包是否安裝
    # 注意使用包名,不是包全名。因為已安裝的軟件包只需給出包名,系統就可以成功識別(使用包全名反而無法識別)
    [root@localhost home]# rpm -q yum
    yum-3.4.3-158.el7.centos.noarch# rpm -qa:查詢系統中所有安裝的軟件包
    # 可使用管道符查找出需要的內容
    [root@localhost home]# rpm -qa | grep yum
    yum-plugin-fastestmirror-1.1.31-45.el7.noarch
    yum-metadata-parser-1.1.4-10.el7.x86_64
    yum-3.4.3-158.el7.centos.noarch# 只列出組態配置文件
    [root@localhost home]# rpm -qc yum
    /etc/logrotate.d/yum
    /etc/yum.conf
    /etc/yum/version-groups.conf# 只列出文本文件
    [root@localhost home]# rpm -qd yum
    /usr/share/doc/yum-3.4.3/AUTHORS
    /usr/share/doc/yum-3.4.3/COPYING
    /usr/share/doc/yum-3.4.3/ChangeLog
    ...# 顯示套件的關聯性信息
    [root@localhost home]# rpm -qR yum
    /usr/bin/python
    config(yum) = 3.4.3-158.el7.centos
    cpio
    ...# 顯示文件狀態
    [root@localhost home]# rpm -qs yum
    正常/etc/logrotate.d/yum
    正常/etc/yum
    正常/etc/yum.conf# 顯示更詳細的信息(執行過程)
    [root@localhost home]# rpm -qvs yum
    正常-rw-r--r--    1 root    root                      100 413  2018 /etc/logr                                                                                    otate.d/yum
    正常drwxr-xr-x    2 root    root                        0 413  2018 /etc/yum
    正常-rw-r--r--    1 root    root                      970 413  2018 /etc/yum.     # 顯示套件的文件列表及安裝目錄
    [root@localhost home]# rpm -ql yum
    /etc/logrotate.d/yum
    /etc/yum
    /etc/yum.conf
    ...# rpm -qi 包名:查詢軟件包的詳細信息
    # 此時的-i 選項表示查詢軟件信息,是 information 的首字母
    [root@localhost home]# rpm -qi yum
    Name        : yum
    Version     : 3.4.3
    Release     : 158.el7.centos
    Architecture: noarch
    Install Date: 2022年10月21日 星期五 18時09分32秒
    Group       : System Environment/Base
    Size        : 5814102
    License     : GPLv2+
    Signature   : RSA/SHA256, 2018年04月25日 星期三 19時52分48秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : yum-3.4.3-158.el7.centos.src.rpm
    Build Date  : 2018年04月13日 星期五 20時58分52秒
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://yum.baseurl.org/
    Summary     : RPM package installer/updater/manager
    Description :
    Yum is a utility that can check for and automatically download and
    install updated RPM packages. Dependencies are obtained and downloaded
    automatically, prompting the user for permission as necessary.# -p 表示查詢未安裝的軟件包,是package 的首字母
    # 注意:使用包全名,因為未安裝的軟件包需使用 絕對路徑+包全名 的方式才能確定包
    [root@localhost ~]# rpm -qip 包全名# rpm -qf:命令查詢系統文件屬于哪個RPM包, file 的首字母
    [root@localhost home]# rpm -qf /bin/ls
    coreutils-8.22-21.el7.x86_64# 查找未安裝軟件包的依賴性
    # 絕對路徑+包全名
    [root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    

2.yum

  • yum(Yellow dog Updater, Modified):一個專門為了解決包的依賴關系而存在的軟件包管理器,類似騰訊電腦管家的軟件一鍵安裝,更新和卸載

  • yum 在服務器端存有所有的 RPM 包,并將各個包之間的依賴關系記錄在文件中

  • 當使用 yum 安裝 RPM 包時,yum 會先從服務器端下載包的依賴性文件,通過分析此文件從服務器端一次性下載所有相關的 RPM 包并進行安裝,從而解決RPM依賴性問題

  • 使用 yum 安裝軟件包之前,需指定好 yum 下載 RPM 包的位置,此位置稱為 yum 源(yum 源指的就是軟件安裝包的來源)

  • 使用 yum 安裝軟件時至少需要一個 yum 源,yum 源既可以使用網絡 yum 源,也可以將本地光盤作為 yum 源

  • 網絡yum源:

    • 一般只要主機網絡正常,可以直接使用網絡 yum 源,不需要對配置文件做任何修改
    • 網絡 yum 源配置文件位于 /etc/yum.repos.d/ 目錄下,文件擴展名為".repo"(只要擴展名為 ".repo" 的文件都是 yum 源的配置文件),通常情況下 CentOS-Base.repo 文件生效
    • 如果修改網絡yum源后需要執行:yum clean allyum makecache
    vim /etc/yum.repos.d/CentOS-Base.repo[base]:容器名稱,一定要放在[]中。
    name:容器說明,可以隨便寫。
    mirrorlist:鏡像站點
    baseurl: yum 源服務器的地址。默認是 CentOS 官方的 yum 源服務器
    enabled:此容器是否生效,如果不寫或寫成 enabled 則表示此容器生效,寫成enable=0 則表示此容器不生效。
    gpgcheck:如果為 1 則表示 RPM 的數字證書生效;如果為 0 則表示 RPM 的數字證書不生效。
    gpgkey:數字證書的公鑰文件保存位置
    

    在這里插入圖片描述

    # 基本語法
    yum [options] [command] [package ...]options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為 "yes"),-q(不顯示安裝的過程)等等
    command:要進行的操作
    package:安裝的包名# yum常用命令
    # 更新
    1.列出所有可更新的軟件清單命令:yum check-update
    2.更新所有軟件命令:yum update
    3.僅更新指定的軟件命令:yum update <package_name># 安裝
    1.安裝所有可安裝軟件:yum install 
    2.僅安裝指定的軟件命令:yum install <package_name>
    3.重新安裝軟件包 yum reinstall <package_name># 顯示列表
    1.列出所有可安裝的軟件清單命令:yum list
    2.查詢執行軟件包的安裝情況:yum list <package_name>
    [root@localhost opt]# yum list jdk1.8
    已加載插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    已安裝的軟件包
    jdk1.8.x86_64                        2000:1.8.0_171-fcs                         installed
    3.列出所有可安裝的軟件包:yum list updates 
    4.列出所有已安裝的軟件包:yum list installed 
    5.列出所有已安裝但不在 Yum Repository 內的軟件包:yum list extras # 依賴情況
    1.查看程序<package_name> 依賴情況:yum deplist <package_name> # 倉庫	
    1.列出所有倉庫:yum repolist all# 詳細信息
    1.查詢執行軟件包的詳細信息:yum info <package_name> 
    [root@localhost opt]# yum info jdk1.8
    已加載插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    已安裝的軟件包
    名稱    :jdk1.8
    架構    :x86_64
    時期       :2000
    版本    :1.8.0_171
    發布    :fcs
    大小    :279 M
    源    :installed
    簡介    : Java Platform Standard Edition Development Kit
    網址    :http://www.oracle.com/technetwork/java/javase/overview/index.html
    協議    : http://java.com/license
    描述    : The Java Platform Standard Edition Development Kit (JDK) includes both: the runtime environment (Java virtual machine, the Java platform classes: and supporting files) and development tools (compilers, debuggers,: tool libraries and other tools).:: The JDK is a development environment for building applications, applets: and components that can be deployed with the Java Platform Standard: Edition Runtime Environment.
    2.列出所有需要更新的軟件包信息:yum info updates
    3.列出所有已安裝的軟件包信息:yum info installed
    4.列出所有已安裝但不在 Yum Repository 內的軟件包信息:yum info extras
    5.列出軟件包提供哪些文件:yum provides <package_name> # 刪除 
    1.刪除軟件包命令:yum remove <package_name># 查詢
    1.查找軟件包命令:yum search <keyword>
    [root@localhost opt]# yum search jdk1.8
    已加載插件:fastestmirror
    Loading mirror speeds from cached hostfile* base: mirrors.tuna.tsinghua.edu.cn* extras: mirrors.tuna.tsinghua.edu.cn* updates: mirrors.tuna.tsinghua.edu.cn
    ================================== N/S matched: jdk1.8 ==================================
    jdk1.8.x86_64 : Java Platform Standard Edition Development Kit	# 清除緩存命令:
    yum clean packages: 清除緩存目錄下的軟件包
    yum clean headers: 清除緩存目錄下的 headers
    yum clean oldheaders: 清除緩存目錄下舊的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除緩存目錄下的軟件包及舊的 headers
    

3.wget

  • wget是一個從網絡上自動下載文件的自由工具,支持通過HTTPHTTPSFTP三個最常見的ICP/IP協議下載(類似于Windows下的迅雷)
  • wget命令用來從指定的URL下載文件
    # 安裝wget
    yum install wget
    wget(選項)(參數)# wget URL:從指定地址下載文件
    [root@localhost opt]#wget https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# 將下載信息存入日志文件
    [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -b url:后臺下載
    [root@localhost opt]# wget -b  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    繼續在后臺運行,pid 為 61922。
    將把輸出寫入至 “wget-log”。# wget -c url:繼續執行上次終端的任務
    [root@localhost opt]# wget -c  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -d url:調試模式運行指令
    [root@localhost opt]# wget -d  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -h url:顯示指令幫助信息
    [root@localhost opt]# wget -h  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg# wget -i url:從指定文件批量獲取要下載的URL地址
    [root@localhost opt]# cat > filelist.txt
    https://www.keaidian.com/uploads/allimg/190424/24110307_4.jpg
    https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# wget -i filelist.txt# wget -q url:不顯示指令執行過程
    [root@localhost opt]# wget -q  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg#wget -o download.log URL:把下載信息存入日志文件
    [root@localhost opt]# wget -o test1.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# ls
    24110307_8.jpg  jdk-8u171-linux-x64.rpm  test1.log
    [root@localhost opt]# cat test1.log
    --2022-10-25 05:28:41--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主機 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在連接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已連接。
    已發出 HTTP 請求,正在等待回應... 200 OK
    長度:318641 (311K) [image/jpeg]
    正在保存至: “24110307_8.jpg”0K .......... .......... .......... .......... .......... 16% 2.59M 0s50K .......... .......... .......... .......... .......... 32%  775K 0s100K .......... .......... .......... .......... .......... 48%  851K 0s150K .......... .......... .......... .......... .......... 64% 1.03M 0s200K .......... .......... .......... .......... .......... 80% 2.68M 0s250K .......... .......... .......... .......... .......... 96%  927K 0s300K .......... .                                          100% 15.6M=0.3s
    2022-10-25 05:28:42 (1.16 MB/s) - 已保存 “24110307_8.jpg” [318641/318641])# wget -O 別名 URL:從指定地址下載文件并起別名
    [root@localhost opt]# wget -O test.jpg  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    --2022-10-25 05:22:31--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主機 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在連接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已連接。
    已發出 HTTP 請求,正在等待回應... 200 OK
    長度:318641 (311K) [image/jpeg]
    正在保存至: “test.jpg”
    100%[=============================================================================================================================================>] 318,641     1.12MB/s 用時 0.3s
    2022-10-25 05:22:31 (1.12 MB/s) - 已保存 “test.jpg” [318641/318641])
    [root@localhost opt]# ls
    jdk-8u171-linux-x64.rpm  test.jpg# wget -P 目錄 URL:從指定地址下載文件并保存在指定目錄下
    [root@localhost tmp]# wget -P /tmp/nginx_yum_source/ http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm# get reject=xxx(文件格式) url:過濾指定格式下載 
    [root@localhost opt]# wget reject=gif https://www.cnblogs.com/lukelook/p/11201098.html# wget --spider URL:測試下載連接是否可行
    [root@localhost opt]# wget --spider  https://www.keaidian.com/uploads/allimg/190424/24110                                                                                              307_8.jpg
    開啟 Spider 模式。檢查是否存在遠程文件。
    --2022-10-25 05:34:10--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主機 www.keaidian.com (www.keaidian.com)... 125.44.96.40, 101.26.37.47, 61.179.22                                                                                              4.47, ...
    正在連接 www.keaidian.com (www.keaidian.com)|125.44.96.40|:443... 已連接。
    已發出 HTTP 請求,正在等待回應... 200 OK
    長度:318641 (311K) [image/jpeg]
    存在遠程文件。# FTP下載
    [root@localhost opt]# wget ftp  https://www.cnblogs.com/lukelook/p/11201098.html
    
    在這里插入圖片描述

4.綠色軟件安裝

  • 綠色軟件:不需要安裝,下載可以直接使用(或者解壓縮可以直接使用)的軟件
  • 例:Linux安裝Tomcat

19系統命令

1.systemctl

2.service

[root@localhost ~]# service 服務名 start|stop|restart|status
start:啟動服務;
stop:停止服務;
restart:重啟服務;
status: 查看服務狀態;

3.netstat

netstat -natp

4.source

5.curl

6.make

7.nohup

8.nc

9.uname

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

10.sudo

11.whereis

whereis nignx

12. ./

1.Linux安裝JDK

1.安裝位置

  • /opt

2.安裝包

  • jdk-8u171-linux-x64.rpm

3.安裝步驟

1.將安裝包上傳到虛擬機中

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

2.執行安裝命令

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

3.查看安裝目錄

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

4.配置環境變量

# 1.編輯配置文件
[root@localhost default]# vi /etc/profile# 2.profile文件最后追加以下3行配置
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.# 3.刷新環境變量(沒有出現錯誤表示配置成功)
[root@localhost default]# source /etc/profile

4.測試

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

2.Linux安裝Tomcat

  • 需要先安裝JDK

1.安裝位置

  • /opt/tomcat

2.壓縮包

  • apache-tomcat-8.5.60.tar.gz

3.安裝步驟

1.將壓縮包上傳到虛擬機中

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

2.執行解壓命令

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

3.啟動tomcat

# 1.進入tomcat文件夾
[root@localhost tomcat]# cd apache-tomcat-8.5.60
# 2.進入bin目錄
[root@localhost apache-tomcat-8.5.60]# cd bin
# 3.啟動tomcat
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /opt/tomcat/apache-tomcat-8.5.60
Using CATALINA_HOME:   /opt/tomcat/apache-tomcat-8.5.60
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.5.60/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /opt/tomcat/apache-tomcat->8.5.60/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.5.60/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
# 4.查看tomcat進程 Bootstrap表示tomcat成功運行
[root@localhost bin]# jps
84071 Jps
64888 Bootstrap
# 5.Linux中測試訪問tomcat默認8080端口號
[root@localhost bin]# curl -I http://localhost:8080
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 24 Oct 2022 22:24:18 GMT

4.關閉Linux防火墻

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

5.查看tomcat啟動日志

# catalina.日期.log  記錄tomcat啟動時候的信息
# localhost.日期.log 記錄tomcat啟動時調用的方法
# localhost_access_log.日期.txt 訪問tomcat的請求的所有地址以及請求的路徑、時間,請求協議以及返回碼等信息
# catalina.out 包含tomcat運行時所有的日志輸出
[root@localhost apache-tomcat-8.5.60]# ls
bin           CONTRIBUTING.md  logs       RELEASE-NOTES  webapps
BUILDING.txt  lib              NOTICE     RUNNING.txt    work
conf          LICENSE          README.md  temp
[root@localhost apache-tomcat-8.5.60]# cd logs
[root@localhost logs]# ls
catalina.2022-10-25.log      localhost.2022-10-25.log
catalina.out                 localhost_access_log.2022-10-25.txt
host-manager.2022-10-25.log  manager.2022-10-25.log
[root@localhost logs]# less catalina.2022-10-25.log
[root@localhost logs]# less localhost.2022-10-25.log
[root@localhost logs]# less localhost_access_log.2022-10-25.txt
[root@localhost logs]# less catalina.out

3.Linux安裝MySQL

1.安裝位置

  • /opt/mysql5.7
    在這里插入圖片描述

2.安裝步驟

1.通過wget下載rpm安裝包

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

在這里插入圖片描述

2.通過rpm安裝MySQL

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

在這里插入圖片描述

3.通過yum安裝mysql(一般使用yum安裝)

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

在這里插入圖片描述
如果出現上面安裝失敗可以通過下面方式解決(禁掉GPG驗證檢查)

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

3.啟動MySQL

# 1.啟動mysql
[root@localhost mysql5.7]# systemctl start mysqld
# 2.查看mysql狀態
[root@localhost mysql5.7]# systemctl status mysqld
# 3.查看mysql日志獲取初始化密碼
[root@localhost mysql5.7]# head -n 10 /var/log/mysqld.log
# 4.登陸mysql(輸入上述初始化密碼)
[root@localhost mysql5.7]# mysql -u root -p
# 5.修改mysql的密碼策略(注意:默認密碼檢查策略比較嚴格,必須定義如類似密碼 mysql> alter user 'root'@'localhost' identified by '$BAIZHIroot2002';)
mysql> set global validate_password_policy=0; 	# 修改為簡單策略
mysql> set global validate_password_length=4;	# 修改密碼長度最低為4
# 6.修改mysql密碼
mysql> alter user root@'localhost' identified by 'root';

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

4.設置root允許遠程訪問

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

在這里插入圖片描述

5.關閉Linux防火墻

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

6.Navicat連接MySQL

在這里插入圖片描述

7.遠程訪問MySQL

在這里插入圖片描述

4.Linux安裝Redis

5.Linux安裝RibbitMQ

6.Linux系統下SSM項目打包部署

7.Linux系統下SpringBoot項目打包部署

  • 需要先安裝JDK

1.簡單SpringBoot項目打包部署(未連接mysql)

1.配置文件

  • 1.pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringBootSimple</artifactId><version>1.0-SNAPSHOT</version><!--SpringBoot項目此處打成jar包即可,打成war包會報錯--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--告知項目的啟動類--><start-class>com.wd.SpringBootSimpleApplication</start-class></properties><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.3</version></dependency></dependencies><build><plugins><!--如果不加此處會報異常[root@localhost springboot]# java -jar SpringBoot-1.0-SNAPSHOT.jarSpringBoot-1.0-SNAPSHOT.jar中沒有主清單屬性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.3</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
    
  • application.yaml
    server:#修改項目端口號port: 8890#修改項目訪問路徑servlet:context-path: /springboot_simple
    

2.啟動類

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

3.接口

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

4.打包

  • 1.首先刷新Maven
  • 2.清空之前的target文件夾
  • 3.將test禁用(因為打包時會默認執行test中的代碼,如果測試代碼沒有問題才會打包,如果測試代碼有問題則打包失敗)
  • 4.打包
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

5.部署

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

6.測試

2.簡單SpringBoot項目打包部署(帶日志,未連接mysql)

1.配置文件

  • 1.pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringBootSimple</artifactId><version>1.0-SNAPSHOT</version><!--SpringBoot項目此處打成jar包即可,打成war包會報錯--><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!--告知項目的啟動類--><start-class>com.wd.SpringBootSimpleApplication</start-class></properties><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.3</version></dependency>	<!--lombok自帶slf4j日志--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency></dependencies><build><plugins><!--如果不加此處會報異常[root@localhost springboot]# java -jar SpringBoot-1.0-SNAPSHOT.jarSpringBoot-1.0-SNAPSHOT.jar中沒有主清單屬性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.3</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
    
  • application.yaml
    server:#修改項目端口號port: 8890#修改項目訪問路徑servlet:context-path: /springboot_simple
    

2.啟動類

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

3.接口

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

4.打包

  • 1.首先刷新Maven
  • 2.清空之前的target文件夾
  • 3.將test禁用(因為打包時會默認執行test中的代碼,如果測試代碼沒有問題才會打包,如果測試代碼有問題則打包失敗)
  • 4.打包
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

5.部署

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

6.測試

8.Linux系統下SpringCloud項目打包部署

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/132578.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息