基於 RedHat 8 系的 Linux 常用命令及系統優化


閑言碎語

基於CentOS推出的開源系統,國內的阿里推出Anolis OS,華為的OpenEuler。為填補因 CentOS Linux 穩定版本停服而留下的空白,境外的RockyLinux,AlmaLinux。

同樣的基於RHEL的下游開源系統:

Rocky Linux

這一切都始於一條博客評論

2020年12月8日,Red Hat公司宣布將停止開發CentOS(一個可用於生產環境的Red Hat Enterprise Linux下游版本)。作為替代,Red Hat采用該操作系統較新的上游開發版本——稱為 "CentOS Stream"。作為回應,CentOS的最初創始人格雷戈里·庫爾澤(Gregory Kurtzer) 通過CentOS網站上的評論宣布,他將再次啟動一個項目以實現CentOS的最初目標。而之所以命名為Rocky Linux,是為了向早期CentOS的聯合創始人洛基·麥高(Rocky McGaugh) 致敬。

作為RHEL的下游Linux操作系統替代方案,並繼承了原CentOS的開源免費特點。2021年6月21日,Rocky Linux 8.4 穩定版發布,代號為"Green Obsidian"(綠色黑曜石)。官網:https://rockylinux.org/

AlmaLinux

源自於CloudLinux團隊,一個開源的、由社區擁有並治理且永久免費的企業 Linux 發行版,專注於長期穩定性,提供一個強大的生產級平台。AlmaLinux OS 與 RHEL® 和 CentOS Stream 是 1:1 的二進制兼容。

AlmaLinux OS 是一個企業級服務器操作系統和一個穩定的 Linux 發行版,定期發布,支持周期很長。 您可以依靠 AlmaLinux OS 來運行任何關鍵工作負載。背靠CloudLinux團隊及財務支持,受到大眾的關注。官網:https://almalinux.org/

受眾面

本人更青睞於AlmaLinux,因為看到各大服務商都有提供AlmaLinux的支持;比如很多的雲服務商有提供AlmaLinux系統的選項,比如GitLab有提供支持到的系統AlmaLinux,等等吧...這是AlmaLinux給我留下的印象。RockyLinux類似的現象就比較少吧,目前是這樣的。也許...就看后續各自的發展了。

作者:[Sol·wang] - 博客園,原文出處:https://www.cnblogs.com/Sol-wang/p/14792892.html

系統分區

基本的必要分區

掛載點 建議 說明
/ 剩余最大空間 根節點
/home >10% 按用戶量
/var ≈50% 默認安裝應用的文件數據
/boot 100MB - 2GB 通常500M以內(難免會有大型App)
/boot/efi 200 MB - 500 MB  
/BISO boot 2MB - 4MB BIOS使用空間
swap 2GB - 系統最大內存容量 物理內存不足時啟用的臨時內存

Linux Terminal tool

名稱/方式 說明
Windows cmd 基礎工具
Windows PowerShell 基礎工具,Microsoft持續更新
Windows Terminal Microsoft推出的新工具,美觀
Fluent Terminal 專用工具,美觀
Termius 專用工具,美觀簡潔,跨平台雲賬戶
WindTerm 專用工具,美觀,專業,功能全面
Tabby 專用工具,美觀,支持插件,官網有Web版
Xshell 專用工具,企業版功能強大
MobaXterm 專用工具,企業版功能強大
Warp 跨時代的終端,值得期待(目前僅支持Mac)
PuTTY 老牌專用工具
終端 說明
ssh {目標系統用戶名}@{服務器IP} -p {端口} 終端連接到 Linux,默認端口 22
Tab 鍵 命令補全;單按:精准補全、雙按:可選命令

Base

命令 說明
reboot 重啟Linux系統
logout 退出終端登錄
poweroff 斷電關機
halt [-p] 關機 [斷電]
shutdown -h now 定時關機(管理員權限)
shutdown -r now 定時重啟(管理員權限)
uname -a 系統基礎信息
dmesg 查看系統開啟過程日志
clear 清空終端屏幕顯示內容
Logon
w,who 查看當前用戶登錄信息
last 查看當前用戶登錄歷史
lastlog 查看所有用戶登錄記錄
passwd {用戶名} 修改用戶的密碼
su {目標用戶名} 切換當前系統用戶
sudo {cmd} root 權限執行命令
id [用戶] 查看當前[指定]用戶的 UID\GID 及所屬的用戶組等信息

System settings

環境變量
env Environment;查看系統全局環境變量
printenv HOME 打印系統全局環境變量(不帶$)
set/unset 打印/刪除 系統全局 + 用戶全局 + 用戶局部 環境變量
export 導出局部變量,使其成為全局變量(從局部中導出到全局中)
echo '=>$a' / echo "=>$a" 輸出變量值;單引號被視為純字符,雙引號解釋出變量值
區域/語言
locale 查看系統配置的區域字符集
locale -a 查看系統支持的區域字符集
localectl Locale Control;查看區域字符集(locale 升級版)
localectl list-locales 區域字符集列表
localectl set-locale {encoding} 設置區域字符集
主機信息
hostname 查看主機名
hostname -b[oot] {newname} 設置臨時的主機名
hostname -a[lias]d[omain][i]p-address[I][s]hort[f] 查看臨時的主機名 [別名/域名/全部IP/IPv4/短名/長名]
hostnamectl Hostname Control:查看主機信息
hostnamectl set-hostname {newname} 設置靜態(永久)主機名
hostnamectl set-hostname {newname} --pretty 不受限制的個性化靜態主機名

硬件資源

free [-h] 內存使用情況 [換算單位]
fdisk [-l] 硬盤管理 [所有分區信息]
df [-h] 磁盤的空間使用情況 [換算單位]
du [-achs] 所在目錄下的所有子目錄 [全部/總和/換算/總計]

命令行狀態切換

輸入命令回車后系統執行當前命令;當前命令執行完成后自動回到命令行狀態,便於再次輸入命令。
當前命令未執行完成時(如:拷貝大文件,升級安裝包等),命令執行狀態。
以下說明了對以上場景的操作:

命令 說明
& 指定后台運行
jobs -l 當前終端后台啟動的作業 [PID]
fg %{job-id} Foreground;后台暫停的進程轉到前台運行
bg %{job-id} Background;后台暫停的進程在后台繼續運行,默認為最后一個Job
Ctrl+c 終止/結束 當前運行,返回命令行狀態
Ctrl+z 暫停/掛起 並放后台,切換回命令行狀態(可 fg 或 bg 恢復繼續執行)
Ctrl+d 退出/斷開/注銷 當前狀態(類似與exit,失去終端的連接)

Folder

命令 說明
pwd Print Working Directory當前所在目錄
ll [-ah] 列出當前目錄下全部[帶隱藏的/換算文件大小]文件
ls [-lah] List Directory Contents;列出當前目錄下文件 [全部/列表/換算大小]
ls [*{filename}*] 列出模糊查詢到的文件信息
cd Change Directory;切換到個人目錄
cd {目標路徑} 切換到指定路徑
cd [..] [../..] [-] 切換到 [上級] [上上級] [上次] 目錄
du [-sh] [*] 所在目錄下的[子]文件信息 [大小換算單位] [每個文件/夾]
du -s * | sort -n | head/tail -5 當前目錄中每個文件[夾],按大小排序,-nr反向,前/后5個
find {dir} -name {*.txt} 查找,指定目錄模糊搜索文件
find {dir} -iname {key} -type f|d|l 查找,模糊搜索;i=忽略大小寫;type=文件|目錄|連接
MAKE 創建
mkdir {目錄名稱} Make Directory:創建文件夾
mkdir -p {目錄名稱} 創建多級目錄 --parents
mkdir -m=r-- {目錄名稱} 創建目錄並賦予權限 --mode
CHANGE 變更
mv {舊文件夾名} {新目錄文件夾名} Move:移動文件(重命名)
rm -rf {指定目錄或文件} Remove:刪除文件夾/文件,-r遞歸 -f 強制
COPE 復制
cp {源目錄文件名} {新目錄文件名} Cope;復制文件
cp -a {源目錄文件名} {新目錄文件名} 復制文件,保留鏈接、屬性等目錄下的全部
cp -r {源目錄} {目標目錄} 遞歸復制目錄/文件
\cp -r {源目錄} {目標目錄} 遞歸復制目錄/文件(\ 強制覆蓋)
scp -r {local_file} {user}@{ip}:{remote-folder} Secure Cope;遠傳上傳文件 -r 遞歸目錄
scp -r {user}@{ip}:{remote-folder} {local-folder} 下載遠傳文件 -r 遞歸目錄

File

命令 說明
which {filename} 文件的所在目錄
stat {filename} 查看文件屬性(大小、類型、權限、時間等)
nl {filename} 查看文件內容,自帶行號
cat {filename} [-n] Concatenate and print files;帶行號的內容顯示
cat > {filename} 創建一個全新的空文件並錄入內容,Ctrl+d:退出
less {filename} 分頁查看文件;b|空格:上下頁;u|d:前后半頁;?|/{key}:上下搜;N:反向再搜;q:退出
more {filename} 分頁查看文件;空格/f:下頁,b:上頁,回車:下一行,q:退出
tail -f {filename} 實時滾動顯示文件內容
tail -n 20 {filename} 查看文件內容的后n行,默認10行,-n 指定顯示行數
head -n 20 {filename} 查看文件內容的前n行,默認10行,-n 指定顯示行數
grep {關鍵字/正則} {文件} 內容搜索,指定文件中查找關鍵字
{命令} | grep {關鍵字/正則} 流搜索,按過濾方式;跟在其它命令后的輸出流搜索
CREATE 創建
> {filename} 創建新的空文件
touch {filename} 更新文件的 訪問變更時間,自動創建
echo '{文本}' > {目標文件名} 命令結果流覆蓋到目標文件內,自動創建
echo '{文本}' >> {目標文件名} 命令結果流追加到目標文件內,自動創建

Date

命令 說明
日期
date 顯示時間
date '+%s' 1970年后的秒數
date '+%T %D' 默認格式日期時間
date '+%Y-%m-%d %H:%M:%S' 指定格式日期時間
date -r '{filename}' 文件的最后變更時間 [reference]
date -s '2023/03/18 15:30:00' 設置系統日期時間 [set]
date -d today|now|tomorrow|yesterday 輸出指定描述日期 [date]
日歷
cal 顯示當月日歷
cal -y|Y 顯示當年 | 之后的12個月
cal -n {月份個數} 顯示未來月份數量的日歷
時區
tzselect 重設時區
timedatectl 所屬時區
timedatectl list-timezones 可用時區
timedatectl set-timezone {時區名} 設置時區

Network

命令 說明
ss Socket Statistics;套接字統計
ss -plant 連接中的網絡及端口
netstat -pantu 連接中的網絡及端口
ifstat [網卡名] 網絡[全部/指定]接口流量狀態
dhclient {網卡名} 以 dhcp 模式啟用指定網卡
ip addr add {ip}/24 dev {網卡名} 指定網卡追加 IP 地址
ip addr / ip route / ip rule 網卡信息 / 路由信息 / 路由規則信息
nmtui:NetworkManager Terminal User Interface
nmcli:NetworkManager Command Line Interface
nmcli 查看網絡設備基本信息
nmcli g[eneral] [status] NetworkManager.service 狀態
nmcli n[etworking] [on/off/connectivity] 整體網絡操作 開/關/查
nmcli c[onnection] [show] 網絡/網卡連接信息
nmcli c show {網卡名} 指定網絡/網卡連接詳細信息)
nmcli c modify [網卡名] {項} {值} 修改網卡的參數
nmcli c reload [網卡名] 重載所有/指定網卡配置文件
nmcli c load /etc/.../ifcfg-{網卡名} 加載指定目錄的配置文件
nmcli c up {網卡名} 啟動指定網卡
nmcli c down {網卡名} 停止指定網卡
nmcli c delete {網卡名} 刪除指定網卡配置文件
nmcli d[evice] 網絡設備信息(nmcli device)
nmcli d [show|status] 網絡設備詳細配置信息|狀態
nmcli d reapply {網卡名} 重啟網卡設備
nmcli d connect {網卡名} 激活指定的網卡
nmcli d disconnect {網卡名} 臨時關閉指定網卡
nmcli --fields all c|d show [網卡名] 查看類別下所有字段的所有配置信息
nmcli -f GENERAL d show [網卡名] 查看網卡 device.general 字段下的所有配置信息
nmcli -f ipv4.addresses c show enp0s8 查看網卡 enp0s8 配置項 conn.ipv4.addresses 的值

User

命令 說明
users 當前已登錄用戶列表
cat /etc/passwd 查看用戶列表
cat /etc/group 查看系統用戶組
groups 當前用戶所屬組
groups {用戶名A} {用戶名B} 查看多個用戶所屬組
newgrp {groupname} 當前用戶切換到指定組為登錄狀態
管理
useradd [-r] {uname} 創建新用戶 [-r系統級]
useradd -g {組名} {用戶名} 創建新用戶 指定歸屬組
useradd -g {gname} -s /sbin/nologin {uname} 創建不可登錄系統的用戶
userdel {用戶名} 刪除用戶
usermod -i {新名} {舊名} 修改現有用戶名
groupadd {組名} 創建用戶組
groupdel {組名} 刪除用戶組
groupmod -n {新名} {舊名} 修改用戶組名
usermod -g {新組名} {用戶名} 修改現有用戶所屬分組

Install

國內熱門鏡像站 說明
南京大學 網速拉滿
上海交通大學 網速拉滿,資源一般
華為雲 網速拉滿,資源不多
清華大學 網速拉滿,資源不多
中國科學技術大學 網速拉滿,資源一般,說明不夠詳細
阿里雲 網速有限制,貌似最快1MB/s
校園網聯合鏡像站 <中國教育和科研計算機網網絡中心>,綜合所有境內大學的鏡像資源
資源庫 說明
Base 官網源,系統自帶
EPEL 常用的,第三方(應用)資源庫
ELRepo 第三方(內核)資源庫
命令 說明
rpm:安裝命令,程序依賴項需手動逐步安裝
rpm -qal | grep {關鍵字}* 查詢已安裝(* 模糊搜索的占位符)
rpm -ivh {filename.rpm} 安裝,顯示安裝過程及進度
yum:rpm的代替版,自動關聯並安裝依賴項
yum repolist [enabled|disabled|all] 顯示本機所有可用的軟件資源庫信息
yum search {名稱} 搜索資源庫中的軟件安裝包
yum info {名稱} 查看軟件包詳情
yum list {keyword}* 在所有資源庫中搜索包,已裝的/未裝的
yum list {名稱} --showduplicates 列出所有版本
yum list installed 查詢已安裝應用
yum install {名稱} 安裝指定應用
yum install {名稱}-{版本} 安裝指定應用的指定版本
yum reinstall {名稱} 重裝指定應用包
yum downgrade {名稱} 回滾指定軟件的版本
yum remove {程序名} 卸載已安裝
yum autoremove 卸載無用孤立的軟件包
yum clean all 清空安裝包緩存
yum makecache 重建包管理器緩存(新的緩存索引會更快)
yum check-update 查看系統中可升級的應用
yum update {應用名稱} 升級指定應用
yum update 全部批量升級應用(系統級升級)
yum distro-sync 更新軟件包到最新的穩定發行版
yum provides {命令} 檢查某個命令屬於哪個安裝包
yum-config-manager --enable {庫名} 永久啟用作用的資源包庫(舊版)
yum-config-manager --disable {庫名} 永久禁用作用的資源包庫(舊版)
yum config-manager --set-enabled {庫名} 永久啟用作用的資源包庫(新版)
yum config-manager --set-disabled {庫名} 永久禁用作用的資源包庫(新版)
yum --disablerepo='*' --enablerepo='epel' list {key}* 本次 排除/指定 資源庫的操作
dnf:新一代的更優秀的rpm軟件包管理器,yum的替代版,於RHEL8+,格式同yum。

文本編輯器

命令 說明
vi {文件路徑} Visual Interface;打開文件
編輯模式 i
[ESC] 退出當前(編輯)模式狀態,進入命令模式狀態
命令模式
u/. 撤回 / 重復 上一次動作
gg/G 首行 / 尾行
0/$ 行首 / 行尾
yy dd 復制 / 剪切 所在整行
p/P 粘貼到 下一行 / 上一行
/{keywork} 向下搜索關鍵字,按 n 查找下一個
?{keywork} 向上搜索關鍵字
:w [filename] 保存文件 write [另存為]
:q 退出文件 quit
:[w][q]! [保存][退出]強制
:set [no]number [取消]顯示行號
:set encoding=utf-8 設置編碼格式

Common / Tools

命令 說明
top 時時顯示 process 的動態
uptime 系統運行時長|當前用戶數|過去1/5/15分鍾的平均負載
time {cmd} 執行命令耗時;real:總耗時
uuidgen 生成一個UUID,-r[andom] -t[ime]
watch -n 1 -d {命令} 周期性(1s)重復執行指定命令,全屏顯示結果
{cmd} & 於后台運行(不影響前端繼續敲命令)
{cmd} -daemon 守護進程方式運行
nohup {cmd} no hang up;不掛斷運行命令,忽略與終端斷開的信號
nohup|setsid|screen <cmd> & 於后台長久運行,不受其它干擾而被中斷
管道命令 / 前后台命令 / 多命令
{命令1} ; {命令2} ; {命令3} 多命令按順序在前端執行,無所謂成功失敗
{命令1} | {命令2} 管道命令;之前命令的處理結果,給之后的命令再處理
{命令1} || {命令2} 邏輯命令;命令1失敗后 才會執行命令2
{命令1} & {命令2} 邏輯命令:前后端一起並行執行(最后命令在前端)
{命令1} && {命令2} 邏輯命令;之前命令順利成功后,再執行之后的命令
tar:文件解壓縮工具
tar -czvf {form-dir} {xxx.tar.gz} 文件壓縮
tar -xzvf {xxx.tar.gz} -C {到指定目錄} 文件解壓 [C:到指定目錄]
zip:文件解壓縮工具
zip -v -r {filename}.zip {from-dir} 文件壓縮 [v:顯示過程] [r:遞歸]
unzip -v -d {to-dir} filename.zip 文件解壓 [v:顯示過程] [d:到指定目錄]
curl:Client URL 請求工具
curl {url} 網絡請求
curl -v {url} -v,顯示請求過程
curl -X GET {url} 指定請求方式
curl -X POST -d[ata] 'p=abc' {url} 表單POST提交方式
curl -I {url} 僅輸出返回Head
curl -i {url} 輸出返回頭和內容
curl -L {url} -L,跟隨重定向跳轉
curl -O {url} 原名下載文件到當前目錄
curl -C -O {url} -C,斷點續傳
curl -o /opt/newfilename.zip {url} 下載到的目錄及新名稱
curl -# -o /opt/newfilename.zip {url} -#,顯示進度條
curl -T {filename} ftp://{用戶名}:{密碼}@xxx.com/ -T,FTP上傳文件
curl -O ftp://{用戶名}:{密碼}@xxx.com/filename.7z 憑證方式,FTP下載資源
wget:第三方下載工具
wget {網絡資源鏈接} {dir} 下載資源到指定目錄
netstat:系統網絡狀態
netstat -a 全部的網絡狀態
netstat -i 顯示網卡列表
netstat -pantu 連接中的網絡及端口

Authority

命令 說明
chown -R {用戶名}:{用戶組} {作用目錄} Change Owner;變更目錄所屬用戶
chgrp -R {用戶組} {作用目錄} Change Group;變更目錄所屬群組
chgrp -R --reference={參考目錄} {作用目錄} Change Group;復制為相同的群組
chmod -R 754 {作用目錄} Change Mode;權限設定(讀/寫/執行)

文件目錄權限字母表示法

文件目錄權限八進制數字表示法

應用樣例:
指定(=)權限:chmod u=rwx,g=rx,o=r {path}
追加(+)權限:chmod u+x,g+wx,o+w {path}
去除(-)權限:chmod u-x,g-w,o-wx {path}
全部(ugo)追加某種權限:chmod +w,+x {path}

Process

命令 說明
ps Process Status;顯示所有進程
ps -aux 所有進程,包括其它用戶的
ps -auxfr 運行的進程,-all -user -excute -format -running
ps -aux --sort -pcpu 按CPU利用率倒序排列
ps -aux --sort -pmem 按內存利用率倒序排列
ps -aux --sort -pcpu,+pmem 按CPU內存利用率綜合排序
ps -aux --sort -pcpu,+pmem | head -n 5 head過濾顯示前n條
pidof {server-name} 列出指定服務的所有進程標識
kill {Pid} 發送正常停止的信號
kill -9 {Pid} 強制停止退出
kill $(pidof {server-name}) 停止指定服務的所有進程
pkill -F {server-pid-path} 停止服務進程,默認-15發送退出信號,指定PID文件(讀取文件中的PID)
killall [-9] {server-name} [即刻強制]停止指定服務下的所有進程

System Control

命令 說明
Unit & Service
systemctl -a[ll] 顯示所有已安裝的列表
systemctl [-a] --type=service [所有|活動]的服務列表
systemctl | grep {關鍵字狀態等} 模糊搜索
systemctl daemon-reload 重載所有變更的配置
systemctl cat {name} 查看指定(手動)配置文件信息
systemctl show {name} 查看底層全部默認配置信息
systemctl [enable|disable] {name} 設置開機啟動
systemctl [is-enabled|is-active|is-failed] {name} 查看狀態
systemctl list-units 已啟動的詳細列表,於內存中的
systemctl list-unit-files 已安裝的狀態列表
systemctl --state=failed|--failed 顯示失敗狀態的列表
systemctl clean {name} 清理運行時、緩存、狀態、日志或配置
systemctl [start|stop|restart|status|reload|kill] {name} 操作管理
Jobs
systemctl list-jobs 作業列表
systemctl cancel {job-name} 取消作業
Environment
systemctl show-environment 顯示所有環境變量列表
systemctl set-environment key=val 設置一個或多個環境變量
systemctl unset-environment {key} 取消設置 環境變量
System
systemctl is-system-running 系統當前狀態
systemctl list-machines 主機和容器 列表
systemctl default|rescue|emergency 進入系統模式:默認 | 挽救 | 緊急
systemctl -H {user}@{ip} {command} 遠程主機操作,ssh 模式,--host
systemctl halt|poweroff|reboot|suspend|hibernate|hybrid-sleep 關機/斷電/重啟/內存休眠/磁盤休眠/混合休眠

Firewall

命令 說明
firewall-cmd --reload 重載
firewall-cmd --list-ports 查看
firewall-cmd --zone=public --add-port={新端口}/tcp --permanent 添加
firewall-cmd --zone=public --remove-port={端口號}/tcp --permanent 刪除
firewall-cmd --add-forward-port=port={From-Port}:proto=tcp:toport={To-Port} 轉發
firewall-cmd --add-forward-port=port={From-Port}:proto=tcp:toaddr={To-IP_Addr} 轉發

System log

文件 命令 說明
/var/log/btmp lastb 登錄失敗的用戶信息、時間、遠程IP
/var/log/cron   記錄定時任務 crontab 的執行情況
/var/log/dmesg dmesg 系統開機時,內核自檢信息
/var/log/lastlog lastlog 所有用戶最后一次登錄信息
/var/log/maillog - 郵件收發詳細信息
/var/log/messages - 系統常規綜合日志
/var/log/secure - 系統安全日志;密碼憑證、認證狀況
/var/log/wtmp last 用戶的登錄注銷啟動停止信息
/var/log/audit/audit.log - 進程、事件、安全、監控、權限、網絡

Configuration

目錄/文件 命令 說明
/etc/hostname hostnamectl 主機名配置文件
/etc/hosts - 系統HOST配置文件
/etc/shells - 系統支持的 Shell
/etc/sysctl.conf sysctl 系統內核配置文件
/etc/pam.d/system-auth - 系統密碼策略配置文件
/etc/yum.repos.d/ yum / dnf 系統鏡像配置文件目錄
/etc/ssh/sshd_config - SSH配置文件
/etc/security/limits.conf ulimit 系統資源限制配置文件
/usr/lib/systemd/system/ systemctl 系統服務默認配置文件目錄
/etc/sysconfig/network-scripts/ifcfg-{網卡名} nmcli RHEL8網卡配置文件地址
/etc/NetworkManager/system-connections/{網卡名}.nmconnection nmcli RHEL9網卡配置文件地址

系統環境變量

profile

路徑:/etc/profile,用於設置系統級的環境變量和啟動程序,在這個文件下配置會對所有用戶生效。
當用戶登錄(login)時,文件會被執行,並從/etc/profile.d目錄的配置文件中查找 shell 設置。
示例:新增環境變量:export ABC=xxx;運行生效:source /etc/profile

bashrc

系統級:位於/etc/bashrc,對所有用戶生效。
用戶級:位於~/.bashrc,僅對當前用戶生效。
bashrc 文件只會對指定的 shell 類型起作用,bashrc 只會被 bash shell 調用。

bash_profile

bash_profile 單一用戶有效,位於~/.bash_profile,可以理解為某一個用戶的 profile 目錄下。
這個文件同樣也可以用於配置環境變量和啟動程序,bash_profile 也會在用戶登錄(login)時生效。

對比

/etc/profile/etc/bashrc是系統全局環境變量設定;
~/.profile~/.bashrc用戶Home目錄下的私有環境變量設定。

SSH 優化

# 關閉不必要的驗證過程(GSSAPIAuthentication 和 UseDNS)
# 1、搜索配置項
cat /etc/ssh/sshd_config -n | grep GSSAPIAuthentication
cat /etc/ssh/sshd_config -n | grep UseDNS
# 2、編輯配置項
vi /etc/ssh/sshd_config
# GSSAPIAuthentication 變更為 no
# UseDNS 變更為 no
# 3、:wq 保存退出配置文件
# 4、重啟SSH服務,使其生效
systemctl restart sshd

應用升級

系統默認為官方提供的資源庫,默認通過官方資源庫升級應用,可設置為國內鏡像源(參考 install
# 1、清空包管理器緩存(yum/dnf)
yum clean all
# 2、重新建立包管理器緩存索引
yum makecache
# 3、查看可升級的應用
yum check-update
# 4、升級指定軟件
yum update {name}
# 5、全部升級,自動升級可升級的軟件(相當於整個系統升級)
yum update
# 注:有些應用安裝慢,必須等到出現單獨一行的Complete!字樣,才算完成。

第三方庫 EPEL 的應用

EPEL 是由 Fedora 社區打造,屬於 RHEL 的上游,為 RHEL 及衍生發行版如 CentOS、Scientific Linux 等提供高質量軟件包的項目。裝了 EPEL 后,可通過 yum 安裝來自於EPEL庫的軟件。

# 1、安裝 epel-release
yum -y install epel-release
# 2、驗證 epel-release 庫的啟用
yum repolist all    # 是否出現 epel 並默認 enabled
建議使用國內鏡像源,可參考 國內雲鏡像
查看(驗證)安裝后的效果
# 清理 yum 緩存,重新建立包管理器緩存索引
yum clean all && yum makecache
# 測試搜索安裝包,顯示出 來自於不同的庫
yum list sys*   # 顯示出的列從左到右依次是:包名.架構、版本號、來自庫

第三方庫 ELRepo 的應用

ELRepo 是用於 Enterprise Linux 軟件包的RPM存儲庫。它支持Red Hat Enterprise Linux(RHEL)及其衍生版本,這里主要是為了用它來升級 Linux 內核 Kernel。

1、將 ELRepo 存儲庫安裝到系統,參考官網: http://elrepo.org/tiki/HomePage
# 首先要導入公鑰
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# CentOS7的安裝
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# CentOS8的安裝
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
啟用 ELRepo 的 elrepo-kernel 資源庫(為后續內核升級做准備,或者忽略)
# 1、查看 ELRepo 庫的配置文件
cat /etc/yum.repos.d/elrepo.repo
#
# 2、其中 ELRepo 的 elrepo-kernel 項默認為禁用,可啟用 elrepo-kernel
# CentOS 8 方式啟用 elrepo-kernel:
yum config-manager --set-enabled elrepo-kernel
# CentOS 7 方式啟用 elrepo-kernel,編輯所屬配置文件:vi /etc/yum.repos.d/elrepo.repo
# 找到 [elrepo-kernel] 下的 enabled 設為1,沒有則在此區域追加一行。示例行:enabled=1
#
# 3、查看(驗證)啟用的資源庫列表中是否包含 elrepo-kernel 庫
yum repolist enabled
2、更換資源庫的鏡像源 使用國內鏡像源,可參考 清華大學 ELRepo 鏡像使用幫助
也可使用如下命令方式變更鏡像源
# 依據清華大學的使用幫助,命令方式如下:
# 1、mirrorlist=所在行全部加注釋#
sed -i 's/^mirrorlist=/#&/g' /etc/yum.repos.d/elrepo.repo
# 2、域名 elrepo.org/linux 的替換
sed -i 's/elrepo.org\/linux/mirrors.tuna.tsinghua.edu.cn\/elrepo/g' /etc/yum.repos.d/elrepo.repo
3、更新 yum 可用資源庫的引用緩存
# 清理 yum 緩存
yun clean all
# 生成新緩存
yum makecache
# (可選)測試搜索安裝包,顯示出 來自於不同的庫
yum list libb*  # 顯示出的列從左到右依次是:包名.架構、版本號、來自庫
4、通過 ELRepo 庫安裝新內核
# 列出庫中可用的最新內核版本(以下示例僅從 ELRepo 的 elrepo-kernel 庫安裝,ml:最新穩定版,lt:長期支持版)
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-
# 安裝指定版本(名稱 kernel-ml:為前綴的整套安裝)
yum --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml
# 查看(驗證)已安裝的版本
yum list installed | grep kernel*
- 設置默認啟動的內核版本,請參考 [ 默認內核設定] 節點

設定默認啟動的內核

多內核下的默認內核設置:(內核的安裝請參考 [通過 ELRepo 庫安裝新內核] 節點)

CentOS 7.x

# 1、查看當前使用內核
uname -sr
# 2、查看系統已有內核
cat /boot/grub2/grub.cfg | grep "CentOS Linux"
# 3、從已有內核中,設置默認啟動內核
grub2-set-default 'CentOS Linux (3.10.0-1160.59.1.el7.x86_64) 7 (Core)'
# 4、驗證默認內核
grub2-editenv list
# 5、(可選)刪除前,查詢所有內核名稱
rpm -qa | grep kernel-
# 6、(可選)刪除指定內核
yum remove kernel-3.10.0-1160.45.1.el7.x86_64
# 7、重啟系統(新內核的應用)
reboot

CentOS 8.x

# 安裝新內核后,系統自動設為默認啟動內核
# 1、查看當前使用內核
uname -sr
# 2、查看系統已有內核
ls -l /boot/vmlinuz-*
# 3、從已有內核中,設置默認啟動內核
grubby --set-default=/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64
# 4、(可選)刪除前,查詢所有內核名稱
rpm -qa | grep kernel-
# 5、(可選)刪除指定內核
yum remove kernel-core-4.18.0-348.el8.x86_64
# 6、重啟系統(新內核的應用)
reboot

Static IP

######################## RHEL 8 ########################
# 一、修改配置文件
# 1、打開對應網卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-{網卡名}
# 2、原有屬性值變更
BOOTPROTO=static
ONBOOT=yes
# 3、追加配置項
IPADDR=192.168.1.131
PREFIX=24
GATEWAY=192.168.1.1
# 4、重啟網絡服務(centos7服務名=network)
systemctl restart NetworkManager
# 注:有的版本需要重啟系統才有效 reboot
#
# 二、nmcli 命令行修改方式
# 命令修改指定網卡配置文件
# 修改自啟動(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手動
# 修改 ipv4.addresses = IP
nmcli c m enp0s8 connection.autoconnect yes ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重啟網卡(刷新網卡驅動)
nmcli d reapply enp0s8
#
######################## RHEL 9 ########################
# 一、修改配置文件
# 1、打開對應網卡的配置文件
vi /etc/NetworkManager/system-connections/{網卡名}.nmconnection
# 2、屬性值變更
[ipv4]
method=manual
address=192.168.1.103/24
# 3、重啟網卡
systemctl restart NetworkManager
#
# 二、nmcli 命令行修改方式
# 命令修改指定網卡配置文件
# 修改自啟動(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手動
# 修改 ipv4.addresses = IP
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重啟網卡(刷新網卡驅動)
nmcli d reapply enp0s8

內網優化 - hosts

內網中,計算機的相互訪問,都需要通過DNS的解析,需要一定的資源消耗和耗時,並發狀態下,造成一定的效率瓶頸;
計算機之間的訪問方式:DNS緩存 -> 本機 hosts -> DNS服務器;
因此,為內網計算機之間的相互訪問創造捷徑,繞過DNS服務器,優化hosts將有顯著的響應提升。

# 1、編輯配置hosts文件
vi /etc/hosts
# 2、為每台計算機hosts配置所有計算機的 IP-計算機名 的映射關系
192.168.56.101 cos78-cluster-a
192.168.56.102 cos78-cluster-b
192.168.56.103 cos78-cluster-c
# 注:修改了某台計算機名后,需要每台hosts文件對應的名稱都要變更。

文件同步 - rsync

單機/遠程文件同步,支持全量/增量,相當於scp、cp、rm 命令,但優於它們。

內網優化 - 禁用IPv6

IPv6的出現是為了解決IPv4的使用量不足,所以在內網中,IPv6是多余的。

臨時方式

# 打開 sysctl.conf 文件
vi /etc/sysctl.conf
# 追加/覆蓋配置項(指定網卡或全部)
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.disable_ipv6 = 1
# 內核重新加載配置項(重啟系統后失效)
sysctl -p

永久方式

# 按網卡名稱設置
# 假設網卡名稱是 enp0s8
# 禁用/啟用 ipv6.method = disabled/auto
nmcli c modify enp0s8 ipv6.method disabled
# 重載網卡設備
nmcli d reapply enp0s8

系統安全 - SELinux

SELinux(security enhanced linux)安全增強型Linux系統,它是一個linux內核模塊,也是Linux的一個安全子系統。Selinux的主要作用就是最大限度地減小系統中服務進程可訪問的資源(最小權限原則)
配置文件路徑:/etc/selinux/config

配置文件中的 SELINUXTYPE 提供了三種策略方式:

  • targeted - 目標進程受到保護(默認)
  • minimum - 修改目標策略。僅保護選定的進程
  • mls - 多級安全保護

SELinux相當於一個插件(內核級的插件),他約束了各個應用的動作限制,用布爾值的方式開啟關閉某項應用的行為。

狀態 - sestatus

SELinux Status,列出 SELinux 的當前狀態信息。

示例:

- 當前狀態信息:sestatus
- 當前上下文信息:sestatus -v
- 目標的策略信息列表:sestatus -b

模式 - getsebool / setsebool

get/set SELinux boolean,獲取/設置 SELinux 的啟用/禁用

示例:getsebool -a / setsebool -P {目標功能} 0/1

- 列取查看所有目標的啟用狀況:getsebool -a
- 設置指定目標(動作)行為的啟用:setsebool -P ftpd_full_access 1

策略 - getenforce / setenforce

get/set enforce,查看/設置 SELinux 的啟用/禁用;(臨時性,重啟后失效)

  • Enforcing / 1:強制啟用
  • Permissive / 0:放開限制,警告方式

示例:

- 查看 SELinux 當前模式:getenforce
- 設置 SELinux 運行模式:setenforce 1

管理 - semanage

SELinux Manage,設置選項 文件、目錄、網絡、端口、設備、模塊、用戶、接口等的權限管理。

示例:
- 搜索指定應用(名稱)的指定項(port)使用情況:semanage port -l | grep http_port_t
- 給指定應用(名稱)添加一個指定協議(tcp)的端口號:semanage port --add --type mysqld_port_t --proto tcp 33061

選項 參數 說明
import   導入本地自定義項
export   導出本地自定義項
login   管理Linux用戶和SELinux受限用戶之間的登錄映射
user   管理SELinux受限用戶的角色和級別
port -p, --proto 管理網絡端口,端口協議(tcp|udp) 或版本(ipv4|ipv6)
ibpkey   管理無線通信ibpkey
ibendport   管理無線通信端口
interface   管理網絡接口
node   管理網絡節點
fcontext -f {f,d,p} 管理文件映射,文件類型:file、directory、piping
boolean --on, --off 功能開關(0/1),啟用 / 禁用,-1 / -0
module   管理SELinux策略模塊
permissive   管理進程類型強制模式
dontaudit   策略中的dontaudi規則 Disable/Enable
semanage 命令 選項 通用參數 說明
-l, --list | -a, --add | -m, --modify | -e, --enable 列出 | 新增 | 修改 | 啟用
-d, --delete / --disable 刪除 / 禁用項
-D, --deleteall 刪除全部
-r, --range / --remove 范圍 / 移除
-t, --type 作用到的目標應用名稱

永久關閉禁用 SELinux

# 1、設置配置文件,徹底關閉SELinux
# - 1.1、查看SELinux配置文件
cat /etc/selinux/config
# - 1.2、設置SELinux為關閉:SELINUX=disabled
# - 1.3、保存退出配置文件
sed -i '/^SELINUX/s/disabled/enforcing/g' /etc/selinux/config
# 2、驗證,重啟系統后查看SELinux當前狀態
getenforce

系統優化 - Swap (交換分區)

虛擬內存,當內存不足的時候,把一部分硬盤空間虛擬成內存使用,從而解決內存容量不足的情況。
Swap分區運行性能不夠快,或禁用或少用,極端情況下再啟用,調整啟用條件參數。

# 1、(三種方式)查看現狀
# - 1.1、檢查服務器上的Swap狀態
swapon -d 或 swapon -s
# - 1.2、查看整個內存的使用情況(其中包括了實體內存、Swap、共享內存段、系統核心使用的緩沖區等)
free -h
#
# 2、少用,調整使用概率(設置極端情況下的使用條件)
# - 2.1、查看現啟用的觸發值(物理內存剩余的百分比值)
cat /proc/sys/vm/swappiness
# - 2.2、查看是否已手動配置
vi /etc/sysctl.conf
# - 2.3、追加/修改配置項,變更觸發參數(物理內存剩余的百分比值)
vm.swappiness = 1
# - 2.4、內核重新加載配置項(或重啟系統)
sysctl -p
#
# 3、徹底關閉/開啟
# 關閉Swap
swapoff -a
# 開啟Swap
swapon -a
#
# 4、檢查修改結果
# - 4.1、列出內核所有配置參數,從中查找[vm.swappiness]項,是否已更新為新值
sysctl -a
# - 4.2、或查看內核指定配置項的值
sysctl -q vm.swappiness

系統優化 - Limits

系統可用資源的限制,對於系統的穩定運行非常重要,可按實際情況優化提升性能;配置文件為:/etc/security/limits.conf

都限制了誰:
 - a user name
 - a group name, with @group syntax
 - the wildcard *, for default entry
 - the wildcard %, can be also used with %group syntax, for maxlogin limit

限制了哪些 type:
 - "soft" for enforcing the soft limits
 - "hard" for enforcing hard limits

限制了哪些資源 item:
 - core : limits the core file size (KB)
 - data : max data size (KB)
 - fsize : maximum filesize (KB)
 - memlock : max locked-in-memory address space (KB)
 - nofile : max number of open file descriptors
 - rss : max resident set size (KB)
 - stack : max stack size (KB)
 - cpu : max CPU time (MIN)
 - nproc : max number of processes
 - as : address space limit (KB)
 - maxlogins : max number of logins for this user
 - maxsyslogins : max number of logins on the system
 - priority : the priority to run user process with
 - locks : max number of file locks the user can hold
 - sigpending : max number of pending signals
 - msgqueue : max memory used by POSIX message queues (bytes)
 - nice : max nice priority allowed to raise to values: [-20, 19]
 - rtprio : max realtime priority

查看所有項的當前值:ulimit -a

按各項提示參數查看單個限制;如 open files 項:ulimit -n

限制項的配置

以下以 open files 為例:帶上類型 S[oft] / H[ard],帶上項名 n[ofile]

  • Shell 級設置
    臨時方式:ulimit -SHn 20480
    僅在當前Shell生效,重啟失去Shell后失效
  • 用戶級設置
    永久方式:於 limits.conf 中追加配置行
    行格式:{user|group} {type} {item} {value}
    行案例:*  soft  nofile  20480
    通常 soft / hard 都要配置,確保兩者都可用,重啟生效
  • 系統級設置
    open files:vi /proc/sys/fs/file-max

系統優化 - 減少不必要的I/O寫入

讀取磁盤數據時,關閉文件元數據的寫入(如最后訪問時間等)
確保在掛載所有磁盤時使用noatime時間以及掛載所有目錄時使用nodir時間。

# 打開配置文件
vi /etc/fstab
# 相應磁盤default后追加[,noatime,nodiratime]
# 樣例效果:
# /dev/mapper/cl-root     /               xfs     defaults,noatime,nodiratime        0 0
# :wq 保存退出后,reboot 重啟系統后生效

系統優化 - 內核參數優化

通過在 /etc/sysctl.conf 中追加內核參數來永久保存更改
配置項從 /etc/sysctl.conf 中移除后,系統還原為默認值

# 手動設定 Kernel 內核的配置文件
vi /etc/sysctl.conf
#
# 修改/追加 配置項,用以改變內核默認參數值(1:啟用,0:關閉)
fs.file-max = 65535                     # 表示最大可以打開的句柄數;
fs.aio-max-nr = 1048576                 # 最大並發I/O請求數
net.ipv4.tcp_max_tw_buckets = 6000      # TCP最大的連接數,默認為32768
net.ipv4.tcp_fin_timeout = 10           # 縮短TCP無用狀態的超時,更有效的重新利用或銷毀,默認為60
net.ipv4.tcp_tw_reuse = 1               # 回收的TCP可重新利用
net.ipv4.tcp_syncookies = 1             # 當出現SYN等待隊列溢出時,啟用cookies進行處理。
net.ipv4.tcp_keepalive_time = 120       # 連接健康檢測,默認7200秒
net.ipv4.tcp_keepalive_intvl = 7        # 連接健康檢測間隔,默認75秒
net.ipv4.tcp_keepalive_probes = 3       # 連接健康檢測連續成功次數判定,默認9
net.ipv4.tcp_rmem = 32768 131072 16777216   # 接收窗口尺寸的最小,默認,最大值
net.ipv4.tcp_wmem = 8192 262144 16777216    # 發送窗口尺寸的最小,默認,最大值
net.ipv4.tcp_mem = 786432 1048576 1572864   # 發送窗口尺寸的最小,默認,最大值
net.core.somaxconn = 16384              # 網絡連接隊列最大積壓數量 默認4096 * 4
net.core.rmem_max = 16777216            # 操作系統接收緩沖區最大值
net.core.wmem_max = 16777216            # 操作系統發送緩沖區最大值
net.core.rmem_default = 262144          # 操作系統接收緩沖區的默認大小
net.core.wmem_default = 262144          # 操作系統發送緩沖區的默認大小
#
# 內核重新加載配置項后生效
sysctl -p
# 查看所有內核參數生效后的配置
sysctl -a
# 涉及到網絡的,重啟網卡(CentOS7名稱=network)
systemctl restart NetworkManager

Shell 命令解釋器

與內核交互的腳本語言,與內核互動的橋梁;Command 透過 Shell 的解析,被內核所識別,並反饋內核的執行結果。所以 Shell(外殼)是內核的外殼。

常見的 Shell

sh:全稱 Bourne Shell;是最早的 Shell,出現於 Unix,衍生版本有 ash / csh /tcsh / bash,或者 python / php 都可以用;大多數 Linux 系統都把 bash 作為默認 Shell,但都支持 sh。

所以:在有些 Docker 容器內,因為需要最精簡的微型系統,bash 不一定會支持,但都支持 sh。

查看系統支持的 Shell:cat /etc/shells

Shell 的使用

也就是執行命令,直接敲命令,由當前默認Shell負責執行:ls -l
也可以的方式:sh -c 'ls -l'

或批量腳本打包成文件,批量執行,文件后綴不限制,通常是.sh;
文件首行指明要使用的 Shell:#!/bin/bash
執行打包命令的方式:sh {filename.sh}/ bash {filename.sh}
或者將文件設置為可執行的權限:chmod +x {filename.sh}后;可以直接filename.sh達到運行的效果;
以上方式會重開一個子Shell,由子Shell負責運行腳本,與當前父Shell無關;所以子Shell中對系統的變更設置當前不會生效。

當前 Shell 運行腳本的方式 . {filename.sh}/source {filename.sh}
比如:要變更系統的環境變量,這種運行方式就會及時生效。

Shell 語法

a=5:變量並賦值,等號兩側不能有空格

readonly a=5:常量,只讀

$((5+3))/$[5+3]/expr 5+3:運算格式

unset a:撤銷變量,釋放內存所占空間

$0:書寫命令時的 sh 文件全名(可能的路徑 + 名稱)

${3}:參數位置的值;10以內可以省略括號

$#:參數總個數

$*:串起來的參數,空格分隔

$@:串起來的參數形成數組

$?:上次命令的執行結果(是否執行失敗;0:成功)

^o^y

中文支持

查看系統當前支持的語言字符集:localectl list-locales

若沒有 zh_CN.UTF-8,查找中文語言安裝包:dnf search *chinese*

安裝簡體中文語言包:dnf install langpacks-zh_CN.noarch -y

再次查看已支持的語言字符集:localectl list-locales

設置已支持的語言字符集:localectl set-locale zh_CN.UTF-8;重啟后生效

自定義內存剩余輸出

free -m | sed -n '2p' | awk '{print "總計:"$2"M,剩余:"$4"M,占比:"$4/$2*100"%"}'

/bin/bash 美化

單引號的系統變量
\[ 的開始 \] 的結束
\033 轉義並兼容ASCII的方式
[ 設定的開始 m 設定的結束
字體編碼;背景色編碼;前景色編碼

# Style 1 簡潔
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[00;107;36m\] \u \[\033[00m\]\[\033[00;00;46m\] \W \[\033[00m\]\[\033[00;00;36m\]·>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS2='\[\033[00;00;36m\]·>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[00;00;36m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc
# Style 2 普通
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[00;107;36m\] \u \[\033[00m\]\[\033[00;00;46m\] \H \[\033[00m\]\[\033[00;00;36m\] \W \[\033[00m\]\[\033[00;00;38m\]\A\[\033[00m\]\[\033[38;5;208m\] ·> \[\033[00m\]'" >> /etc/bashrc && \
echo "export PS2='\[\033[38;5;208m\]>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[38;5;208m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc
# Style 3 帶執行反饋提示
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[107m\]\[\033[38;5;238m\] \u\[\033[38;5;246m\]@\[\033[00;107;36m\]\H \[\033[00m\]\[\033[00;00;46m\] \W \[\033[00m\]\[\033[38;5;$(echo $(($?==0?208:196)))m\]·> \[\033[00m\]'" >> /etc/bashrc && \
echo "export PS2='\[\033[38;5;208m\]>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[38;5;208m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc

/bin/bash 美化風格

公共DNS

境內 223.5.5.5 官網:阿里公共DNS
180.76.76.76 官網:百度公共DNS
境外 8.8.8.8 官網:Google Public DNS
1.1.1.1 官網:One.One.One.One DNS

配置DNS

echo 'nameserver 223.5.5.5' >> /etc/resolv.conf  VM 自動讀取物理機的配置

速度測試排名

這里列出了 阿里巴巴、百度、Google、One.One.One.One 基本代表了境內外的最強音。測試結果如下圖:

明面上,阿里巴巴速度最快,畢竟是境內的區域優勢。
但,考慮到緩存的因素,Google 的實力就顯現出來了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM