Linux基礎-進階指令
-
ssh
ssh [-l login_name] [-p port] [user@]hostname
-
scp
- 功能:用於伺服器之間複製檔案和目錄
- 語法:
scp [選項] file_source file_target
,本質上與cp是一致的,區別在於遠端的地址要加使用者名稱:遠端ip:
的字首
比如從本地複製到遠端:file_target應該是remote_username@remote_ip:remote_folder/file
比如從遠端複製到本地:file_source應該是remote_username@remote_ip:remote_folder/file - 常用選項:
-r: 遞迴複製整個目錄 - 從本地複製到遠端的用法:
#scp /home/space/music1/1.mp3 [email protected]:/home/root/music,
從本地複製1.mp3到遠端music目錄下
#scp /home/space/music/1.mp3 [email protected]:/home/root/music/001.mp3,
從本地複製1.mp3到遠端music目錄下重新命名為001.mp3(如果存在001.mp3則覆蓋)
#scp -r /home/space/music/ [email protected]:/home/root/music1/
從本地複製music目錄到遠端:- 如果遠端music1目錄不存在,則效果是複製music目錄到遠端root下重新命名為music1,
- 如果遠端music1目錄存在,則是把music複製到遠端music1目錄下,即遠端music1目錄下多一個music子目錄(或者覆蓋);
可以總結下, 源目錄複製到目標目錄時,如果目標目錄不存在,則是重新命名的效果,如果目標目錄存在,則是目標目錄下新建(或覆蓋)子目錄的效果
- 從遠端複製到本的用法:
#scp [email protected]:/home/root/others/music /home/space/music1/1.mp3
#scp -r [email protected]:/home/root/others/music /home/space/music1/
-
less
- 常用語法:
less [選項] 檔案
- 常用選項:
-N 顯示每行的行號
-i 忽略搜尋時的大小寫 - 常用操作:
/字串:向下搜尋"字串"的功能
?字串:向上搜尋"字串"的功能
n:重複前一個搜尋(與 / 或 ? 有關)
N:反向重複前一個搜尋(與 / 或 ? 有關
Q/q/ZZ:退出less 命令
y:向上滾動一行
空格鍵:滾動一頁
回車鍵:滾動一行
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁
b:向後翻一頁(沒有pageup按鍵時可以用)
f:向前翻一頁
G:移動到最後一行
g:移動到第一行
v:使用配置的編輯器編輯當前檔案
F:不斷的重新整理資訊(同tail -f 的效果, ctrl+c 結束重新整理)
- 常用語法:
-
wc
- 常用語法:
wc [選項] 檔案
- 選項:
-l或--lines 只顯示行數(包括空行)。
-w或--words 只顯示字數(依照空格來判斷單詞數量)。
-c或--bytes或--chars 只顯示Bytes數。 - 注意:#wc file(不給選項)
輸出的值順序是:行數、字數、位元組數
- 常用語法:
-
df
- 功能:顯示目前磁碟使用情況統計
- 語法:
df [選項]... [FILE]...
-
常用用法:# df -h 可讀性較高(顯示單位)
image
-
free
- 功能:檢視記憶體使用情況
- 語法:
free [選項]
-
常用用法:# free -m ,以MB為單位
image
-
chmod
- 功能:改變檔案的讀寫
- 常用語法:
chmod [選項] mode 檔案(支援多個和通配)
,
常用選項是 -R(對目前目錄下的所有檔案與子目錄進行相同的許可權變更);
mode : 許可權設定字串,格式是[ugoa...][[+-=][rwxX]...][,...]
,其中:- u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
- + 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
- r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行;也可以用數字來表示許可權屬性組合:
若要rwx屬性則4+2+1=7,
若要rw-屬性則4+2=6,
若要r-x屬性則4+1=5。
- 示例1:#chmod ugo+r file1.txt 將檔案 file1.txt 設為所有人皆可讀取
- 示例2:#chmod ug+w,o-w file1.txt file2.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 - 示例3:#chmod -R a+r *
將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 - 示例4:#chmod 777 file ,第一個數字表示u的許可權,第二個表示g的許可權,第三個表示o的許可權
所以777和a=rwx效果相同
-
tar
- 功能:壓縮、解壓檔案
- 選項:
- -c: 壓縮
- -x:解壓
- -t:檢視內容
- -r:向壓縮歸檔檔案末尾追加檔案
- -u:更新原壓縮包中的檔案
- -v:顯示所有過程
- -f: 指定待處理的檔案,切記,這個引數是最後一個引數,後面只能接檔名
- 用法1:#tar -x[處理方式]vf 檔案,解亞檔案
- 用法2:#tar -c[處理方式]vf 待生成的壓縮檔案 需要壓縮的檔案(支援多個和匹配),壓縮檔案
- 用法3:#tar -t[處理方式]vf 檔案,列出壓縮檔案的內容
- 處理方式有:
- -z:通過gzip指令處理,對應的壓縮檔案字尾是 gz(用 gzip -d或者gunzip 解壓),tar歸檔後的壓縮檔案字尾是tar.gz(用 tar -xzf 解壓)
- -j:通過bz2指令處理,對應的壓縮檔案字尾是 bz2(用 bzip2 -d或者用bunzip2 解壓),tar歸檔後的壓縮檔案字尾是tar.bz2(用tar -xjf 解壓)
- -Z:通過compress指令處理備份,對應的壓縮檔案字尾是 Z(用 uncompress 解壓),tar歸檔後的壓縮檔案字尾是tar.Z(用tar -xZf 解壓)
-
find
- 功能:指定目錄下查詢子目錄、檔案
- 常用語法:
find 路徑範圍 選項 選項的值
- 常用選項:
- -name:按照文件名稱進行搜尋(支援模糊搜尋)
- -type:"d"表示目錄,"f"表示檔案
- 用法1:# find . -name "*.conf",將目前目錄及其子目錄下所有後綴是 conf 的檔案列出來
- 用法2:# find . -type f,將目前目錄及其下子目錄中所有檔案列出
- 用法3:# find /home/admin -name "aa*" -type f,將/home/admin目錄及其子目錄下所有aa開頭的檔案列出來
- 其它檔案查詢指令:
- locate:是“find -name”的另一種寫法,但是要比後者快得多,原因在於它不搜尋具體目錄,而是搜尋一個數據庫(/var/lib/locatedb),這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb命令(需要許可權),手動更新資料庫。
- whereis:只能用於程式名的搜尋
- which:根據PATH變數指定的路徑,可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令
-
grep
- 功能:查詢檔案或目錄下檔案裡符合條件的字串,打印出檔案路徑和檔案內該字串所在行的內容。
- 常用語法:
grep [選項] 要查詢的字串 檔案或目錄
,檔案或目錄支援多個或者匹配 - 常用選項:
- -r 當指定要查詢的是目錄而非檔案時,必須使用這項引數以遞迴的方式查詢符合條件的檔案。
- -v 顯示不包含匹配文字的所有行。
-
用法1:#grep hello *,在當前目錄中,查詢檔案中包含 hello 字串的檔案,並打印出該字串的所在行內容(如果當前目錄存在子目錄,會提示子目錄是檔案 夾,並不會查詢子目錄下的檔案)。
image
- 用法2:#grep -r 家 /home/test,查詢/home/test目錄下 及其子目錄(如果存在子目錄的話)下所有檔案中包含字串"家"的檔案,並打印出該字串所在行的內容
-
ps
- 功能:用於顯示當前程序 (process) 的狀態。
- 語法:
ps [選項 ]
- 常用選項:
- aux 顯示所有程序較詳細的資訊
- -A 顯示所有程序 (等價於-e)
- -e 等於“-A”
- -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx
- x 顯示所有程式,不以終端機來區分
- 用法1:#ps aux,顯示的專案有:USER、PID、%CPU、%MEM、VSZ、RSS、 TTY、STAT、START、TIME、COMMAND,各列代表的意義:
(1)USER:程序的屬主;
(2)PID:程序的ID;
(3)%CPU:程序佔用的CPU百分比;
(4)%MEM:佔用記憶體的百分比;
(5)VSZ:該程序使用的虛擬記憶體量(KB);
(6)RSS:該程序佔用的固定記憶體量(KB)(駐留中頁的數量);
(7)TTY:該程序在哪個終端上執行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網路連線主機程序
(8)STAT:程序狀態,其中S-睡眠,s-表示該程序是會話的先導程序,N-表示程序擁有比普通優先順序更低的優先順序,R-正在執行,D-短期等待,Z-僵死程序,T-被跟蹤或者被停止等等
(9)START:該程序被觸發啟動時間;
(10)TIME:該程序實際使用CPU執行的時間;
(11)COMMAND:命令的名稱和引數; - 用法2:#ps -ef,顯示的專案有:UID、PID、PPID、C、 STIME、TTY、TIME、CMD ,各列代表的意義:
(1)UID:使用者ID
(2)PID:程序ID
(3)PPID:父程序ID
(4)C:CPU用於計算執行優先順序的因子。數值越大,表明程序是CPU密集型運算,執行優先順序會降低;數值越小,表明程序是I/O密集型運算,執行優先順序會提高
(5)STIME:程序啟動的時間
(6)TTY:完整的終端名稱
(7)TIME:CPU時間
(8)CMD:完整的啟動程序所用的命令和引數
image
- 注意: "ps -aux"不同於"ps aux" ,使用時兩者之間直接選擇ps aux;ps aux 和ps -ef,兩者的輸出結果差別不大,但展示風格不同。aux是BSD風格,-ef是System V風格。如果想檢視程序的CPU佔用率和記憶體佔用率,可以使用aux,如果想檢視程序的父程序ID和完整的COMMAND命令,可以使用ef
-
管道
指令A|指令B ...
-
xargs
- 功能:是給命令傳遞引數的一個過濾器,能夠捕獲一個命令的輸出,然後傳遞給另外一個命令,一般是和管道一起使用。
- 常用用法1:find . -name "*.txt"|xargs rm -f,刪除當前目錄下所有後綴為txt的檔案
- xargs和管道符 "|"的區別:
- 管道符 將 “|” 之前的命令標準輸出,作為之後命令的標準輸入。
find . -name ".java" | grep "Activity"
意思是得到當前檔案路徑下包含Activity字串的java檔案 - xargs 將上一命令的標準輸出,作為後面命令的引數args。
find . -name ".java" | xargs grep "Activity"
意思是得到當前檔案路徑下java檔案中包含Activity欄位的文字
- 管道符 將 “|” 之前的命令標準輸出,作為之後命令的標準輸入。
-
top
- 功能:檢視伺服器的程序佔的資源,輸入top即可,選項可以忽略,按q退出。在執行top的時候,可以按下方便的快捷鍵:
- M: 表示將結果按照記憶體(MEM)從高到低進行降序排列;
- P:表示將結果按照CPU使用率從高到低進行降序排列;
- 1:當伺服器擁有多個CPU核心的時候可以使用"1"快捷鍵來切換是否展示顯示各個CPU核心的詳細資訊
image
- PID:程序id
- USER:該程序對應的使用者
- PR(權重):優先順序
- NI(nice):使用者程序空間內改變過優先順序的程序佔用CPU百分比 (基本不會用)
- VIRT:虛擬記憶體
- RES:常駐記憶體
- SHR:共享記憶體,計算一個程序實際使用的記憶體 = 常駐記憶體(RES) - 共享記憶體(SHR)
- S:表示進行的狀態(sleeping,其中S表示睡眠,R表示進行)
- %CPU:表示CPU的佔用百分比
- %MEM:表示記憶體的佔用百分比
- TIME+ :執行的時間;
- COMMAND:程序的名稱或者路徑
-
du
- 功能:顯示目錄或檔案的大小
- 語法:
du [選項] [目錄或檔案]
- 常用選項:
- -a或-all 顯示目錄中個別檔案的大小
- -h或--human-readable 以K,M,G為單位,提高資訊的可讀性
- -s或--summarize 僅顯示總計
- --exclude=<目錄或檔案> 略過指定的目錄或檔案
- --max-depth=<目錄層數> 超過指定層數的目錄後,不予顯示
- 用法1:# du -h test,檢視test目錄及test目錄下的所有子目錄與檔案的大小
- 用法2:#du -sh test,顯示test目錄總大小
- 用法3:#du -h --max-depth=1,檢視當前目錄下所有一級子目錄與檔案大小
- 用法4:#du -h --max-depth=1 |grep 'G' |sort ,檢視名稱包含G的目錄或檔案並排序
- 用法5:#du -h --exclude='*xyz*',列出當前目錄中的目錄名不包括xyz字串的目錄與檔案的大小
- 注意:
du -sh *
也是統計當前目錄下一級目錄與檔案,但不統計隱藏的檔案與目錄,所以與du -h --max-depth=1
的統計結果存在差別
-
ifconfig/ip addr
- 功能:ifconfig和ip都是用來顯示或設定網路裝置,ip在逐步替代ifconfig,先只要會看inet後的ip就可以了
-
用法1:#ifconfig
image
#ip addr
image
-
netstat
- 語法:
netstat [選項]
- 常用選項:
- -p或--programs 顯示正在使用Socket的程式識別碼和程式名稱,root檢視所有的程序id,普通使用者只能檢視屬於自己的程序id,不是自己的顯示為 -。
- -u或--udp 顯示UDP傳輸協議的連線狀況。
- -t或--tcp 顯示TCP傳輸協議的連線狀況。
- -n或--numeric 直接使用IP地址,而不通過域名伺服器。
- -l或--listening 顯示監控中的伺服器的Socket。
- 用法1:#netstat -tnlp,只列出tcp協議的、狀態為LINTEM連線,地址顯示為IP地址,顯示發起連線的程序pid和程序名稱
-
用法2:#netstat -tnlp|grep 8161,檢視8161埠被哪個程序佔用
image
-
kill
- 功能:傳送指定的訊號到相應程序。不指定型號將傳送SIGTERM(15)終止指定程序。如果任無法終止該程式可用“-KILL” 引數,其傳送的訊號為SIGKILL(9) ,將強制結束程序,使用ps命令或者jobs 命令可以檢視程序號。root使用者將影響使用者的程序,非root使用者只能影響自己的程序
- 用法1:#kill -9 程序id,徹底殺死程序
- 用法2:#kill -9 $(ps -ef | grep peidalinux),過濾出hnlinux程序並殺死
- 用法3:#kill -u admin,殺死使用者admin下的所有程序
- 說明:只有第9種訊號(SIGKILL)才可以無條件終止程序,其他訊號程序都有權利忽略。 下面是常用的訊號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
-
ln
- 功能:某一個檔案或目錄在另外一個位置建立一個同步的連結
- 語法:
ln [選項][原始檔或目錄][目標檔案或目錄]
- 常用選項:
- -s 軟連結(符號連結)
- -b 刪除,覆蓋以前建立的連結
- -f 強制執行
- 軟連結與硬連結 :
軟連結可以看作是Windows中的快捷方式,可以讓你快速連結到目標檔案或目錄。
硬連結則透過檔案系統的inode來產生新檔名,而不是產生新檔案資料,
形象描述是看到的檔案其實是索引,索引指向檔案資料,假設為檔案A建立連結,硬連結是建立新索引指向A的檔案資料,軟連線是建立新索引指向檔案A的索引。 - 硬連結的特點:
1.硬連結,以檔案副本的形式存在。不佔用實際空間
2.不允許給目錄建立硬連結(缺點)
3.硬連結只有在同一個檔案系統中才能建立(缺點) - 軟連結的特點:
1.當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了(缺點)
2.軟連結可以跨檔案系統 ,硬連結不可以
3.軟連結可以對一個不存在的檔名進行連結
4.軟連結可以對目錄進行連結 - 軟連結與硬連結區別:
1.硬連結原檔案/連結檔案公用一個檔案inode號,說明他們是同一個檔案,而軟連結原檔案/連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;
2.在檔案屬性上軟連結明確寫出了是連結檔案,而硬連結沒有寫出來,因為在本質上硬連結檔案和原檔案是完全平等關係;
3.連結數目是不一樣的,硬連結的會在原來基礎上加一,軟連結的連結數目不會增加;
4.檔案大小是不一樣的,硬連結檔案顯示的大小是跟原檔案是一樣的。而軟連結顯示的大小與原檔案就不同 -
用法1:#ln -s log2013.log link2013, 給檔案建立軟連結,為log2013.log檔案建立軟連結link2013,如果log2013.log丟失,link2013將失效:
image
-
用法1:#ln log2013.log ln2013,給檔案建立硬連結,為log2013.log建立硬連結ln2013,log2013.log與ln2013的各項屬性相同:
image
- 注意:du在統計大小的時候預設不計算同目錄下硬連結(即硬連結的原始檔也在這個目錄下)的大小,新增-l選項會重複計算
-
image