源:banana 童
www.cnblogs.com/bananaaa/p/7774467.html
linux 命令是對 Linux 系統進行管理的命令。對于 Linux 系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件, Linux 系統管理的命令是它正常運行的核心,與之前的 DOS 命令類似。linux 命令在系統中有兩種類型:內置 Shell 命令和 Linux 命令。
man | 查看命令幫助,命令的詞典,更復雜的還有 info,但不常用。 |
help | 查看 Linux 內置命令的幫助,比如 cd 命令 |
ls | 全拼 list,功能是列出目錄的內容及其內容屬性信息。 |
cd | 全拼 change directory,功能是從當前工作目錄切換到指定的工作目錄。 |
cp | 全拼 copy,其功能為復制文件或目錄。 |
find | 查找的意思,用于查找目錄及目錄下的文件。 |
mkdir | 全拼 make directories,其功能是創建目錄。 |
mv | 全拼 move,其功能是移動或重命名文件。 |
pwd | 全拼 print working directory,其功能是顯示當前工作目錄的絕對路徑。 |
rename | 用于重命名文件。 |
rm | 全拼 remove,其功能是刪除一個或多個文件或目錄。 |
rmdir | 全拼 remove empty directories,功能是刪除空目錄。 |
touch | 創建新的空文件,改變已有文件的時間戳屬性。 |
tree | 功能是以樹形結構顯示目錄下的內容。 |
dirname | 顯示文件或目錄路徑。 |
chattr | 改變文件的擴展屬性。 |
lsattr | 查看文件擴展屬性。 |
file | 顯示文件的類型。 |
md5sum | 計算和校驗文件的 MD5 值。 |
cat | 全拼 concatenate,功能是用于連接多個文件并且打印到屏幕輸出或重定向到指定文件中。 |
tac | tac 是 cat 的反向拼寫,因此命令的功能為反向顯示文件內容。 |
more | 分頁顯示文件內容。 |
less | 分頁顯示文件內容,more 命令的相反用法。 |
head | 顯示文件內容的頭部。 |
tail | 顯示文件內容的尾部。 |
cut | 將文件的每一行按指定分隔符分割并輸出。 |
split | 分割文件為不同的小片段。 |
paste | 按行合并文件內容。 |
sort | 對文件的文本內容排序。 |
uniq | 去除重復行。oldboy |
wc | 統計文件的行數、單詞數或字節數。 |
iconv | 轉換文件的編碼格式。 |
dos2unix | 將 DOS 格式文件轉換成 UNIX 格式。 |
diff | 全拼 difference,比較文件的差異,常用于文本文件。 |
vimdiff | 命令行可視化文件比較工具,常用于文本文件。 |
rev | 反向輸出文件內容。 |
grep/egrep | 過濾字符串,三劍客老三。 |
join | 按兩個文件的相同字段合并。 |
tr | 替換或刪除字符。 |
vi/vim | 命令行文本編輯器。 |
tar | 打包壓縮。oldboy |
unzip | 解壓文件。 |
gzip | gzip 壓縮工具。 |
zip | 壓縮工具。 |
uname | 顯示操作系統相關信息的命令。 |
hostname | 顯示或者設置當前系統的主機名。 |
dmesg | 顯示開機信息,用于診斷系統故障。 |
uptime | 顯示系統運行時間及負載。 |
stat | 顯示文件或文件系統的狀態。 |
du | 計算磁盤空間使用情況。 |
df | 報告文件系統磁盤空間的使用情況。 |
top | 實時顯示系統資源使用情況。 |
free | 查看系統內存。 |
date | 顯示與設置系統時間。 |
cal | 查看日歷等時間信息。 |
which | 查找二進制命令,按環境變量 PATH 路徑查找。 |
find | 從磁盤遍歷查找文件或目錄。 |
whereis | 查找二進制命令,按環境變量 PATH 路徑查找。 |
locate | 從數據庫 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新庫。 |
useradd | 添加用戶。 |
usermod | 修改系統已經存在的用戶屬性。 |
userdel | 刪除用戶。 |
groupadd | 添加用戶組。 |
passwd | 修改用戶密碼。 |
chage | 修改用戶密碼有效期限。 |
id | 查看用戶的 uid,gid 及歸屬的用戶組。 |
su | 切換用戶身份。 |
visudo | 編輯 / etc/sudoers 文件的專屬命令。 |
sudo | 以另外一個用戶身份(默認 root 用戶)執行事先在 sudoers 文件允許的命令。 |
telnet | 使用 TELNET 協議遠程登錄。 |
ssh | 使用 SSH 加密協議遠程登錄。 |
scp | 全拼 secure copy,用于不同主機之間復制文件。 |
wget | 命令行下載文件。 |
ping | 測試主機之間網絡的連通性。 |
route | 顯示和設置 linux 系統的路由表。 |
ifconfig | 查看、配置、啟用或禁用網絡接口的命令。 |
ifup | 啟動網卡。 |
ifdown | 關閉網卡。 |
netstat | 查看網絡狀態。 |
ss | 查看網絡狀態。 |
nmap | 網絡掃描命令。 |
lsof | 全名 list open files,也就是列舉系統中已經被打開的文件。 |
發送和接收郵件。 | |
mutt | 郵件管理命令。 |
nslookup | 交互式查詢互聯網 DNS 服務器的命令。 |
dig | 查找 DNS 解析過程。 |
host | 查詢 DNS 的命令。 |
traceroute | 追蹤數據傳輸路由狀況。 |
tcpdump | 命令行的抓包工具。 |
mount | 掛載文件系統。 |
umount | 卸載文件系統。 |
fsck | 檢查并修復 Linux 文件系統。 |
dd | 轉換或復制文件。 |
dumpe2fs | 導出 ext2/ext3/ext4 文件系統信息。 |
dump | ext2/3/4 文件系統備份工具。 |
fdisk | 磁盤分區命令,適用于 2TB 以下磁盤分區。 |
parted | 磁盤分區命令,沒有磁盤大小限制,常用于 2TB 以下磁盤分區。 |
mkfs | 格式化創建 Linux 文件系統。 |
partprobe | 更新內核的硬盤分區表信息。 |
e2fsck | 檢查 ext2/ext3/ext4 類型文件系統。 |
mkswap | 創建 Linux 交換分區。 |
swapon | 啟用交換分區。 |
swapoff | 關閉交換分區。 |
sync | 將內存緩沖區內的數據寫入磁盤。 |
resize2fs | 調整 ext2/ext3/ext4 文件系統大小。 |
chmod | 改變文件或目錄權限。 |
chown | 改變文件或目錄的屬主和屬組。 |
chgrp | 更改文件用戶組。 |
umask | 顯示或設置權限掩碼。 |
whoami | 顯示當前有效的用戶名稱,相當于執行 id -un 命令。 |
who | 顯示目前登錄系統的用戶信息。 |
w | 顯示已經登陸系統的用戶列表,并顯示用戶正在執行的指令。 |
last | 顯示登入系統的用戶。 |
lastlog | 顯示系統中所有用戶最近一次登錄信息。 |
users | 顯示當前登錄系統的所有用戶的用戶列表。 |
finger | 查找并顯示用戶信息。 |
echo | 打印變量,或直接輸出指定的字符串 |
printf | 將結果格式化輸出到標準輸出。 |
rpm | 管理 rpm 包的命令。 |
yum | 自動化簡單化地管理 rpm 包的命令。 |
watch | 周期性的執行給定的命令,并將命令的輸出以全屏方式顯示。 |
alias | 設置系統別名。 |
unalias | 取消系統別名。 |
date | 查看或設置系統時間。 |
clear | 清除屏幕,簡稱清屏。 |
history | 查看命令執行的歷史紀錄。 |
eject | 彈出光驅。 |
time | 計算命令執行時間。 |
nc | 功能強大的網絡工具。 |
xargs | 將標準輸入轉換成命令行參數。 |
exec | 調用并執行指令的命令。 |
export | 設置或者顯示環境變量。 |
unset | 刪除變量或函數。 |
type | 用于判斷另外一個命令是否是內置命令。 |
bc | 命令行科學計算器 |
chkconfig | 管理 Linux 系統開機啟動項。 |
vmstat | 虛擬內存統計。 |
mpstat | 顯示各個可用 CPU 的狀態統計。 |
iostat | 統計系統 IO。 |
sar | 全面地獲取系統的 CPU、運行隊列、磁盤 I/O、分頁(交換區)、內存、 CPU 中斷和網絡等性能數據。 |
ipcs | 用于報告 Linux 中進程間通信設施的狀態,顯示的信息包括消息列表、共享內存和信號量的信息。 |
ipcrm | 用來刪除一個或更多的消息隊列、信號量集或者共享內存標識。 |
strace | 用于診斷、調試 Linux 用戶空間跟蹤器。我們用它來監控用戶空間進程和內核的交互,比如系統調用、信號傳遞、進程狀態變更等。 |
ltrace | 命令會跟蹤進程的庫函數調用, 它會顯現出哪個庫函數被調用。 |
shutdown | 關機。 |
halt | 關機。 |
poweroff | 關閉電源。 |
logout | 退出當前登錄的 Shell。 |
exit | 退出當前登錄的 Shell。 |
Ctrl+d | 退出當前登錄的 Shell 的快捷鍵。 |
bg | 將一個在后臺暫停的命令,變成繼續執行 (在后臺執行)。 |
fg | 將后臺中的命令調至前臺繼續運行。 |
jobs | 查看當前有多少在后臺運行的命令。 |
kill | 終止進程。 |
killall | 通過進程名終止進程。 |
pkill | 通過進程名終止進程。 |
crontab | 定時任務命令。 |
ps | 顯示進程的快照。 |
pstree | 樹形顯示進程。 |
nice/renice | 調整程序運行的優先級。 |
nohup | 忽略掛起信號運行指定的命令。 |
pgrep | 查找匹配條件的進程。 |
runlevel | 查看系統當前運行級別。 |
init | 切換運行級別。 |
service | 啟動、停止、重新啟動和關閉系統服務,還可以顯示所有系統服務的當前狀態。 |
Linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。
route命令用來顯示并設置Linux內核中的網絡路由表,route命令設置的路由主要是靜態路由。要實現兩個不同的子網之間的通信,需要一臺連接兩個網絡的路由器,或者同時位于兩個網絡的網關來實現。
在Linux系統中設置路由通常是為了解決以下問題:該Linux系統在一個局域網中,局域網中有一個網關,能夠讓機器訪問Internet,那么就需要將這臺機器的ip地址設置為Linux機器的默認路由。要注意的是,直接在命令行下執行route命令來添加路由,不會永久保存,當網卡重啟或者機器重啟之后,該路由就失效了;可以在/etc/rc.local中添加route命令來保證該路由設置永久有效。
route(選項)(參數)
> route
> route -n
route -n不執行DNS反向查找,直接顯示數字形式的IP地址,列出速度會比route快
字段說明
列 | 含義 |
Destination | 目標網絡或目標主機。Destination 為 default(0.0.0.0)時,表示這個是默認網關,所有數據都發到這個網關(這里是 10.139.128.1) |
Gateway | 網關地址,0.0.0.0 表示當前記錄對應的 Destination 跟本機在同一個網段,通信時不需要經過網關 |
Genmask | Destination 字段的網絡掩碼,Destination 是主機時需要設置為 255.255.255.255,是默認路由時會設置為 0.0.0.0 |
Flags | 標記,含義參考表格后面的解釋 |
Metric | 路由距離,到達指定網絡所需的中轉數,是大型局域網和廣域網設置所必需的 (不在Linux內核中使用。) |
Ref | 路由項引用次數 (不在Linux內核中使用。) |
Use | 此路由項被路由軟件查找的次數 |
Iface | 網卡名字,例如 eth0 |
Flags 含義
路由表中指向單個 IP 地址或主機名的路由記錄,其 Flags 字段為 H。下面示例中,對于 10.0.0.8 這個主機,通過網關 192.168.0.1 網關路由:
> route add -net 10.0.0.8 gateway 192.168.0.1 netmask 255.255.255.255 dev eth0
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.8 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
主機可以到達的網絡。下面示例中,對于10.0.0.0/24這個網絡,通過網關192.168.0.1網關路由:
> route add -net 10.0.0.0/24 gateway 192.168.0.1 dev eth0
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0
//或者
> route add -net 10.0.0.0 gateway 192.168.0.1 dev eth0
當目標主機的 IP 地址或網絡不在路由表中時,數據包就被發送到默認路由(默認網關)上。默認路由的 Destination 是 default 或 0.0.0.0。
> route
default gateway 0.0.0.0 UG 100 0 0 eth0
不指定 gw 選項時,添加的路由記錄不使用網關:
> route add -net 10.10.1.0 netmask 255.255.255.0 dev eth0
> route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
> route add -net 10.10.1.0 netmask 255.255.255.0 reject
> route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 - 255.255.255.0 ! 0 - 0 -
> route del -net 10.0.0.0 netmask 255.255.255.0
同時匹配多個路由表時,執行一次刪除一條
添加或刪除默認網關時,Linux 會自動檢查網關的可用性:
> route add default gw 192.168.1.1
SIOCADDRT: Network is unreachable
> route del default gw 192.168.1.1
SIOCDELRT: No such process
原文鏈接:https://rumenz.com/rumenbiji/linux-route.html
微信公眾號:入門小站
【Linux常用命令速查手冊】關注【入門小站】,后臺回復 「1001」 自取。
信大家對 Linux 肯定是不陌生的,很多同學在學習 Linux 的時候比較頭疼,覺得比較難學,命令多記不住,其實我們在學習 Linux 的時候,要把我們的大腦當成內存來用,而不是硬盤。
本文用的是 Ubuntu 操作系統,版本為 ubuntu-21.04-desktop-amd64.iso。下載地址:
http://mirrors.aliyun.com/ubuntu-releases/
用的遠程連接工具為 FinalShell,下載地址:
http://www.hostbuf.com/t/988.html
Linux 中有很多命令,命令也有很多參數,那我們要怎么去學習呢?我們可以借助幫助文檔,這里給大家介紹 3 個幫助命令:
man 是 manual 的縮寫,有問題找男人,當時這是一句開玩笑的話。
man 命令的使用也非常簡單,示例如下:
man ls
man 也是一條命令,分為 9 章,可以使用 man 命令獲得 man 的幫助:
man man
有的同學一定會好奇,為什么 man 命令給我們 9 章,這是因為命令和系統文件有的時候會出現重名的情況,比如:
passwd # 這是命令
/etc/passwd # 這是配置文件
如果不知道是命令還是配置文件,加上 -a 參數:
man -a passwd
這個時候會先查看 passwd 命令,退出后會顯示:
可以根據提示繼續查看,還是跳過當前的命令查看下一個命令:
這里我先要說一個內部命令和外部命令的概念,shell 自帶的命令稱為內部命令,其他的是外部命令。
那要怎么區分到底是內部還是外部呢?通過 type,后面跟上命令。
juran@juran-virtual-machine:~$ type cd
cd 是 shell 內建
如果是內部命令使用 help:
help cd
如果是外部命令使用 --help:
ls --help
info 幫助比 help 更詳細,作為 help 的補充,大多數的情況下,我們使用 man 和 help 就足夠了。
終端的命令組成:
command [-options] [parameter]
在 Linux 中一切皆文件,而且 Linux 中是沒有盤符的概念的,所有的文件都在根目錄下,接下來我們就來看下查看目錄的命令有哪些。
ls 命令:列出文件夾中的內容,ls 只能查看一層目錄信息:
ls # 查看當前文件夾的內容
ls /bin # 查看 bin 目錄下的文件
ls 命令還有一些比較常用的選項:
命令選項 | 說明 |
-l | 以列表方式顯示 |
-h | 件大小單位顯示,默認是字節 |
-a | 顯示隱藏文件和隱藏目錄 |
tree 命令:以樹狀方式顯示目錄信息,tree 可以查看多層目錄信息。
tree # 以樹狀方式顯示當前目錄信息
tree /bin # 如果提示沒有 tree 命令,可以通過 apt install tree 進行安裝
查看當前目錄路徑
pwd 命令:查看當前目錄路徑,是 print work directory 的縮寫。
cd 命令:切換目錄,是 change directory 的縮寫。
cd 命令有幾個常用的寫法:
命令 | 說明 |
cd 目錄 | 切換到指定目錄 |
cd ~ | 切換到當前用戶的主目錄 |
cd .. | 切換到上一級目錄 |
cd . | 切換到當前目錄 |
cd - | 切換到上一次目錄 |
注意:cd 命令切換目錄時,這個目錄必須存在。cd 后面不寫目錄等價于 cd ~。
touch 命令:創建指定文件
touch abc.txt # Linux 里面文件可以沒有后綴的
touch a b c # 可以一次創建多個文件
mkdir 命令:創建目錄(文件夾)
mkdir movie # 創建 movie 目錄
mkdir a b c # 創建 a b c 目錄
如果我想創建雙層的目錄,來試試:
mkdir movie/active # 想要創建 movie 下面的 active 目錄,而且 movie 目錄是沒有被創建過的
mkdir: 無法創建目錄 “movie/active”: 沒有那個文件或目錄
這是我們可以通過選項 -p:
mkdir movie/active -p # 選項和參數之間是沒有順序的,先寫那個都可以
我們也可以通過查看幫助文檔,man mkdir:
rm 命令:刪除指定文件或者目錄
rm 命令刪除文件:
rm abc.txt
rm 命令刪除目錄:
mkdir juran
rm juran
rm: 無法刪除 'juran': 是一個目錄
rm 命令是無法直接刪除目錄的,需要加上選項 -r:
rm -r juran
可以通過 man rm 查看選項,下面來自幫助文檔:
-r, -R, --recursive
remove directories and their contents recursively
rmdir 命令:刪除空目錄
rmdir juran # juran 目錄是空目錄
如果刪除非空目錄:
mkdir -p a/b
rmdir a
rmdir: 刪除 'a' 失敗: 目錄非空
小結
cp 命令:拷貝文件、拷貝目錄
cp 命令復制文件:
cp abc.txt juran # 復制 abc.txt 到 juran 目錄下
cp命令復制目錄
mkdir a b # 創建 a 和 b 目錄
cp a b # 復制 a 目錄到 b 目錄
cp: 未指定 -r;略過目錄'a'
如果想要復制目錄的話,需要加上選項 -r:
cp -r a b
mv 命令:移動文件、移動目錄、重命名
mv 命令移動文件:
mkdir abc # 創建 abc 目錄
touch abc.txt # 創建 abc.txt 文件
mv abc.txt abc
mv 命令移動目錄:
mkdir a b
mv a b
cat 命令:文本內容顯示到終端
查看文件內容:
touch a.txt
ls /bin > a.txt
cat a.txt
查看文件內容,并顯示行號:
cat -n a.txt
查看多個文件:
cat a.txt b.txt
多個文件合并:
cat a.txt b.txt > c.txt
還有一個跟 cat 非常像的命令,tac 命令倒敘輸出文本內容。
head 命令:查看文件開頭
查看文件:
head a.txt # 默認顯示文件前 10 行內容
指定查看文件行數:
head -5 a.txt # 顯示文件前 5 行內容
tail 命令:查看文件結尾
tail a.txt # 默認顯示文件后 10 行內容
指定查看文件行數:
tail -5 a.txt # 顯示文件后 5 行內容
查看文件更新:
tail -f a.txt
在另外一個終端,對文件進行更新:
echo "juran" > a.txt
wc 命令:統計文件內容信息
wc -l a.txt # 統計文件行數
tar 命令:壓縮和解壓縮命令
tar 命令可以打包,也可以打包壓縮:
touch 1.txt 2.txt 3.txt
ls /bin > 1.txt
ls /etc > 2.txt
ls /lib > 3.txt
tar -cvf 3.tar ./*.txt
壓縮成 .gz 文件:
tar -zcvf backup.tar.gz *.txt
解壓 .gz 文件:
tar -zxvf backup.tar.gz
解壓到指定的目錄:
tar -zxvf backup.tar.gz -C bb/
壓縮成 .bz2 文件:
tar -jcvf backup.bz2 *.txt
解壓 .bz2 文件:
tar -jxvf backup.bz2
解壓到指定目錄:
tar -jxvf backup.bz2 -C bb/
壓縮 zip 文件:
zip backup *.txt # 默認后綴是.zip
解壓縮 zip 文件:
zip backup.zip -d /bb # -d 指定文件夾
我們在 Windows 中有記事本,也有像 pycharm 這樣的代碼編輯器。
那在 Linux 中我們用什么來寫代碼呢(如何優雅的裝 X)?
用的就是 vim,大家可以把 vim 想象成 Windows 中的 pycharm,或者你熟悉的編輯器。
vim 安裝
sudo apt-get install vim # 這是 Ubuntu 的安裝
sudo yum install vim # 這是 centos 的安裝
vim 的工作模式
工作模式效果圖:
編輯模式和末行模式之間不能直接進行切換,都需要通過命令模式來完成。
vim 的末行模式命令
vim 的常用命令
命令 | 說明 |
yy | 復制光標所在行 |
p | 粘貼 |
dd | 刪除/剪切當前行 |
V | 按行選中 |
u | 撤銷 |
ctr+r | 反撤銷 |
>> | 往右縮進 |
<< | 往左縮進 |
:/搜索的內容 | 搜索指定內容 |
:%s/要替換的內容/替換后的內容/g | 全局替換 |
:開始行數,結束行數 s/要替換的內容/替換后的內容 | 局部替換 |
. | 重復上一次命令操作 |
G | 回到最后一行 |
gg | 回到第一行 |
數字+G | 回到指定行 |
shift+6 | 回到當前行的行首 |
shift+4 | 回到當前行的行末 |
ctr+f | 下一屏 |
ctr+b | 上一屏 |
vim 交換文件解決辦法
當我們用 vim 編輯一個文件,并寫入一些數據,發生意外 vim 沒有正常退出,這時再去編輯這個文件就會有如下提示:
這時我們可以直接選擇編輯,但是下次打開的時候仍然會有這個提示。如果我們執行命令 ls -a 會看到一個隱藏文件 .a.txt.swp。
這個隱藏文件大家可以理解為 Linux 中的緩存文件,為了幫助我們恢復數據的。如果我們不需要的話,可以直接刪除,刪除掉這個文件后,再次編輯就不會有這個提示了。
Linux 支持多任務多用戶,用戶登錄 Linux 之后可以做很多事件,這點和 Windows 很像,但是 Windows 不支持多用戶。
useradd 命令:創建(添加)用戶
useradd -m juran # 如果是普通用戶執行這個命令會報錯
創建用戶是需要管理員的權限才可以的。我們想要執行這個命令有兩種方法
sudo useradd -m juran
創建好的用戶,還需要設置密碼:
sudo passwd juran
設置好密碼后,我們可以切換到 juran 用戶下:
su juran
在 Ubuntu 中,默認切換到用戶的 bash 是 /bash/sh,這樣我們在敲命令的時候特別不方便,我們可以在創建用戶的指定解釋器:
sudo useradd -m juran -s /bin/bash
查看用戶是否創建成功,可以查看 /etc/passwd 這個文件:
tail /etc/passwd
passwd 文件中的每項信息說明,以 root:x:0:0:root:/root:/bin/bash 為例:
第一個:用戶名
第二個:密碼占位符
第三個:uid, 用戶 id
第四個:gid, 用戶所在組 id
第五個:用戶描述, 可選,
第六個:用戶的主目錄所在位置
第七個:用戶所用 shell 的類型,一般由 bash 或者 sh,默認不設置是 sh 類型
創建用戶,默認會自動創建一個同名的用戶組,查看用戶組是否創建成功,可以查看 /etc/group 這個文件。
group 文件中的每項信息說明,以 laowang:x:1001: 為例:
第一個:用戶組名
第二個:用戶組密碼占位符,一般 Linux 系統的用戶組都沒有密碼的
第三個:組 id
我們也可以通過 id 命令查看用戶信息:
id laowang
uid=1001(laowang) gid=1001(laowang) 組=1001(laowang)
第一個: uid 表示用戶 id
第二個: gid 表示用戶組 id
第三個: 組 表示用戶所在的用戶組
創建用戶流程
在 Linux 系統中,UID 為 0,就是超級用戶,如果設置管理員用戶,可以改為 UID 為 0,系統用戶 UID 為 1~999,Linux 安裝的服務程序都會創建獨有的用戶負責運行,普通用戶 UID 從 1000 開始,最大值 1000~60000 范圍。
修改用戶信息
創建的用戶沒有執行 sudo 命令的權限,那我們想要創建的用戶也可以執行這個命令,怎么辦呢?
我們可以修改用戶的附加組,每個用戶都有自己的主組,相當于親爹,那附加組就相當于干爹,可以有很多個:
sudo usermod -g sudo jr
這時我們創建的用戶,就可以執行 sudo 命令了。
為了方便管理屬于同一組的用戶,Linux 系統中還引入了用戶組的概念。
一個公司中有多個部門,每個部門中又有很多員工,如果只想讓員工訪問本部的資源,則可以針對部門而非具體的員工來設置。開發部的小哥哥想要前臺小姐姐的信息,肯定不能讓他直接訪問的。
groupadd 命令:創建(添加)用戶組
創建用戶前,我們可以先創建好用戶組:
sudo groupadd dev # 創建開發組
創建用戶指定組:
sudo useradd -m laowang -g dev
修改用戶組:
sudo usermod -g dev laowang
刪除用戶組:
sudo groupdel dev # 這時會報錯
如果用戶組下面有用戶先刪除用戶在刪除用戶組。
執行命令 ls -al 查看文件:
這里以文件 abc 來解釋。
第一位:文件類型
后面 9 位表示權限:
命令 | 解釋 | 字母表示 |
rw- | 所有者擁有讀寫權限 | 用 u 表示,代表 user |
r-- | 所屬組擁有讀權限 | 用 g 表示,代表 group |
r-- | 其他人擁有讀權限 | 用 o 表示,代表 other |
減少權限:
chmod u-r abc.txt # 不能讀取數據
chmod u-w abc.txt # 不能寫入數據
添加只讀權限,減少寫權限:
chmod u+r,u-w pwd.txt
chmod 數字法的使用,數字法就是 rwx 這些權限也可以用數字來代替。
權限 | 說明 |
r | 可讀,權限值是 4 |
w | 可寫,權限值是 2 |
x | 可執行,權限值是 1 |
- | 無任何權限,權限值是 0 |
數字法授予權限,所有者可讀可寫可執行,所屬組可讀可寫,其他人可讀:
chmod 764 abc.txt
網絡配置最重要的兩個工具就是 ifconfig 和 ip,這兩個工具分別來自兩個工具包 net-tools 和 iproute2。
ifconfig 命令:配置和顯示 Linux 系統網卡的網絡參數
ifconfig 通常是用來查看網卡的信息(比如 IP 地址、收發包及丟包情況等),以及配置網卡(如啟停網卡,修改網卡 MTU,修改 IP、MAC 地址等)。
這個命令需要安裝:
sudo apt-get install net-tools
若 ifconfig 提示找不到命令,安裝 net-tools 也未果,可能是因為 ifconfig 已不被推薦使用,可用 ip addr show 命令代替,一樣可以顯示出 IP 地址。
ip 命令:網絡配置工具
ip 是非常強大的工具,可以替換 net-tools 包的所有工具,如常見的 ifconfig、netstat、route、arp 等。
查看網卡信息:
ip addr show
顯示系統路由:
ip route show
開啟網卡或關閉網卡:
ip link set eth0 up # 開啟網卡
ip link set eth0 down # 關閉網卡
當我們遇到服務器的網絡出現問題的時候,我們改怎么去排查呢?大家可以通過下面的命令來逐一排查。
ping 命令:測試主機之間網絡的連通性
這個命令通常用來判斷網絡的連通性和網速情況,偶爾用來查看域名的 IP:
ping www.baidu.com
ping 命令并不會自動結束,需要我們 ctrl+c 強制停止,大家可以通過 -c 選項來指定 ping 的次數:
ping www.baidu.com -c 3 # 設置完成要求回應的次數
ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。
telnet 命令:登錄遠程主機和管理(測試 IP 端口是否連通)
telnet 通常用作遠程登錄,用來確定遠程服務的狀態,探測遠程服務器的某個端口是否能訪問,也可以探測本地的:
telnet localhost 22
telnet localhost 3306
處理這種情況方法:
traceroute 命令:顯示數據包到主機間的路徑
traceroute 主要用來探測從源主機到目標主機之間的每一跳路由節點,通常和 ping 結合起來排查網絡故障, ping 測連通性和網速,如果網絡不通,可以借由 traceroute 進一步排查是哪個路由節點出問題了。
traceroute www.58.com
我們 traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火墻封掉了 ICMP 的返回信息,所以我們得不到什么相關的數據包返回數據。
有時我們在某一網關處延時比較長,有可能是某臺網關比較阻塞,也可能是物理設備本身的原因。當然如果某臺 DNS 出現問題時,不能解析主機名、域名時,也會有延時長的現象;您可以加 -n 參數來避免 DNS 解析,以 IP 格式輸出數據。
如果在局域網中的不同網段之間,我們可以通過 traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某臺服務器遇到問題時,我們用到 traceroute 追蹤數據包所經過的網關,提交 IDC 服務商,也有助于解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC 服務商也不可能幫助我們解決。
netstat 命令:查看 Linux 中網絡系統狀態信息
netstat 用于查看當前網絡的連接情況,能夠查看所有的網絡連接,包括 Unix Socket 等,也是集多種工具于一身的組合工具。
列出所有端口:
netstat -a # 列出所有端口
netstat -at # 列出所有 tcp 端口
netstat -au # 列出所有 udp 端口
列出所有處于監聽狀態的 Sockets:
netstat -l # 只顯示監聽端口
netstat -lt # 只列出所有監聽 tcp 端口
netstat -lu # 只列出所有監聽 udp 端口
ss 命令:iproute2 包附帶的另一個工具,允許你查詢 socket 的有關統計信息。
ss 和 netstat 類似,也是用來查看網絡連接統計的工具,它的輸出也和 netstat 類似,甚至顯示更多連接狀態信息,它最大的優勢在于比 netstat 快,在服務器維持上萬個連接的情況下,這種優勢就體現得比較明顯。
顯示 TCP 連接:
ss -t -a
列出所有打開的網絡連接端口:
ss -l
查看進程使用的 socket:
ss -pl
nc 命令:用于設置路由器
nc 被稱為瑞士軍刀,非常輕巧但功能強大,能夠創建各種不同類型的網絡連接、能夠實現簡單的聊天工具、遠程傳輸文件、debug 分析、掃描端口等。
TCP 端口掃描:
nc -v -z -w2 localhost 1-100
選項解釋:
UDP 端口掃描:
nc -u -z -w2 192.168.0.1 1-1000 # 掃描 192.168.0.1 的端口 范圍是 1-1000
選項解釋:
host 命令:常用的分析域名查詢工具
host 命令是域名分析查詢工具,用來測試域名系統工作是否正常。
查看百度域名信息:
host www.baidu.com
nslookup 命令:查詢域名 DNS 信息的工具
nslookup 有兩種工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用戶可以向域名服務器查詢各類主機、域名的信息,或者輸出域名中的主機列表。而在“非交互模式”下,用戶可以針對一個主機或域名僅僅獲取特定的名稱或所需信息。
進入交互模式,直接輸入 nslookup 命令,不加任何參數,則直接進入交互模式,此時 nslookup 會連接到默認的域名服務器。或者輸入 nslookup -nameserver/ip。進入非交互模式,就直接輸入 nslookup 域名就可以了。
非交互模式:
nslookup www.baidu.com
交互模式:
nslookup
Ubuntu 軟件安裝有兩種方式:
我們絕大多數的時候,都是通過在線安裝的方式來進行安裝軟件。
apt-get 方式安裝
在線安裝 deb 軟件包的命令,主要用于在線從互聯網的軟件倉庫中搜索、安裝、升級、卸載軟件。
在線安裝軟件命令格式:
sudo apt–get install 安裝包 # 表示在線安裝 deb 安裝包
源碼安裝
開源軟件都會提供源碼下載的方式,對于源代碼安裝方式的好處即可以定制軟件功能,安裝需要的模塊,不需要的模塊可以屏蔽,方便管理,卸載等。
我們以 Redis 為例:
https://redis.io/download # 這是官網 redis 的下載地址
官網中給出了源碼安裝的方式:
$ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
$ tar xzf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ make
這里會使用 make 工具,make 工具就會通過 makefile 文件來實現。makefile 文件是一種按照某種語法來編寫且定義了各個文件的依賴關系。
使用 make 命令,一般都需要 gcc 的環境:
sudo apt-get install gcc
更改鏡像源
因為使用 apt-get 命令默認是從國外的服務器下載安裝軟件的,會導致下載安裝速度很慢,所以需要更改成國內的鏡像源服務器。
鏡像源說明:鏡像源就是下載軟件來源的服務器。
更改鏡像源的方式:
可視化的方式適合 Ubuntu 這種有圖形化界面的。
第一步:
第二步:
第三步:
第四步:
第五步:
最后執行命令:
sudo apt-get update
手動修改就容易很多:
vim /etc/apt/sources.list # 編輯這個文件,將找好的國內鏡像源直接復制到這個文件里面就行
這里是清華大學的鏡像源,大家可以找其他的鏡像源:
ps 命令:用于報告當前系統的進程狀態的命令
ps 命令可以搭配 kill 指令隨時中斷、刪除不必要的程序。ps 命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的。
當我們在終端敲下 ps 命令,會顯示如下界面:
字段解釋:
PID 代表這個進程對應的 ID 號碼
TTY 進程所屬的控制臺號碼
TIME 進程所使用 CPUC 的總時間
CMD 就是正在執行的系統命令行是什么
ps 常用選項,顯示 Linux 機器所有詳細的進程信息:
ps -ef
字段解釋:
UID 這個進程是那個用戶執行的命令
PID 進程的標識號碼 用于啟停進程
PPID 進程的父進程標識號
C 表示 CPU 使用的資源百分比
STIME 表示進程開始執行的時間
TTY 進程在那個終端執行的
TIME 該進程使用的 CPU 總時間
CMD 用戶執行某條命令 產生的進程信息
過濾出系統指定的信息:
ps -ef | grep vim
查看 named 進程詳細信息:
ps -aux | grep named
顯示指定用戶信息:
ps -u root
把所有進程顯示出來,并輸出到 ps1.txt 文件:
ps -aux > ps1.txt
ps 命令的參數,分為兩種系統形式:
大家一定要注意帶減號和不帶減號,表示的含義是不同的。
大家可以看出來效果是不一樣的。
pstree 命令:以樹狀圖的方式展現進程之間的派生關系
pstree 命令需要安裝:
sudo apt-get install psmisc
執行 pstree 效果如下:
kill 命令:發送相關信號,給進程達到不同的停止效果
我們通常用的都是 kill -9 進程號,除了 -9 這一個信號,kill 也有很多其他的信號。
kill -l
下面是常用的信號:
HUP 1 終端掛斷
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
KILL 9 強制終止
TERM 15 終止,這是 kill 命令默認的
CONT 18 繼續(與 STOP 相反,fg/bg 命令)
STOP 19 暫停(同 Ctrl + Z)
示例:
ping www.baidu.com
找到 ping 命令的進程號:
ps -ef | grep ping
通過剛才找到的進程號結束掉 ping 命令:
kill -9 進程號
top 命令:顯示或管理執行中的程序
可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。
當我們敲下 top 命令,可以看到如下界面:
top 交互命令
在 top 命令執行過程中可以使用的一些交互命令,這些命令都是單字母的。
h:顯示幫助畫面,給出一些簡短的命令總結說明;
k:終止一個進程;
i:忽略閑置和僵死進程,這是一個開關式命令;
q:退出程序;
r:重新安排一個進程的優先級別;
S:切換到累計模式;
s:改變兩次刷新之間的延遲時間(單位為 s),如果有小數,就換算成 ms。輸入 0 值則系統將不斷刷新,默認值是 5s;
f 或者 F:從當前顯示中添加或者刪除項目;
o 或者 O:改變顯示項目的順序;
l:切換顯示平均負載和啟動時間信息;
m:切換顯示內存信息;
t:切換顯示進程和 CPU 狀態信息;
c:切換顯示命令名稱和完整命令行;
M:根據駐留內存大小進行排序;
P:根據 CPU 使用百分比大小進行排序;
T:根據時間/累計時間進行排序;
w:將當前設置寫入~/.toprc 文件中。
top 命令上面字段:
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers
Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
解釋:
top - 09:44:56[當前系統時間],
16 days[系統已經運行了 16 天],
1 user[個用戶當前登錄],
load average: 9.59, 4.75, 1.92[系統負載,即任務隊列的平均長度]
Tasks: 145 total[總進程數],
2 running[正在運行的進程數],
143 sleeping[睡眠的進程數],
0 stopped[停止的進程數],
0 zombie[凍結進程數],
Cpu(s): 99.8%us[用戶空間占用 CPU 百分比],
0.1%sy[內核空間占用 CPU 百分比],
0.0%ni[用戶進程空間內改變過優先級的進程占用 CPU 百分比],
0.2%id[空閑 CPU 百分比], 0.0%wa[等待輸入輸出的 CPU 時間百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理內存總量],
2493092k used[使用的物理內存總量],
1654796k free[空閑內存總量],
158188k buffers[用作內核緩存的內存量]
Swap: 5144568k total[交換區總量],
56k used[使用的交換區總量],
5144512k free[空閑交換區總量],
2013180k cached[緩沖的交換區總量],
free 命令:顯示內存的使用情況
可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。
以總和的形式顯示內存的使用信息:
free -t
周期性的查詢內存使用信息,每 3s 執行一次命令:
free -s 3
顯示內存使用情況:
free -m
systemctl 命令:系統服務管理器指令
systemctl 命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一起。
啟動服務:
service httpd start
systemctl start httpd.service
停止服務:
service httpd stop
systemctl stop httpd.service
重啟服務:
service httpd restart
systemctl restart httpd.service
重載服務:
service httpd reload
systemctl reload httpd.service
檢查服務狀態:
service httpd status
systemctl status httpd.service
設置開機自啟動 MySQL 服務:
systemctl enable mysqld.service
停止開機自啟動:
systemctl disable mysqld.service
*請認真填寫需求信息,我們會在24小時內與您取得聯系。