閑言碎語
基於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
公共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 的實力就顯現出來了。