昨天分享了linux系統的一些初級指令,今天給大家整理了更多的指令介紹。
ssh
● 功能:登錄另一臺遠程計算機
● 語法:ssh [-l login_name] [-p port] [user@]hostname
● 用法1:#ssh 192.168.0.11 ,不指定用戶,默認使用root賬戶登錄
● 用法2:#ssh root@192.168.0.11或者ssh -l root 192.168.0.11,指定用戶
● 用法3:#ssh -p 1233 admn@192.168.0.11,修改過ssh登錄端口(默認為22)需要指定端口
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 root@172.16.50.15:/home/root/music
● 從本地復制1.mp3到遠程music目錄下
# scp /home/space/music/1.mp3 root@172.16.50.15:/home/root/music/001.mp3
● 從本地復制1.mp3到遠程music目錄下重命名為001.mp3(如果存在001.mp3則覆蓋)
# scp -r /home/space/music/ root@172.16.50.15:/home/root/music1/
● 從本地復制music目錄到遠程:
● 如果遠程music1目錄不存在,則效果是復制music目錄到遠程root下重命名為music1
● 如果遠程music1目錄存在,則是把music復制到遠程music1目錄下,即遠程music1目錄下多一個music子目錄(或者覆蓋)
● 可以總結下,源目錄復制到目標目錄時,如果目標目錄不存在,則是重命名的效果,如果目標目錄存在,則是目標目錄下新建(或覆蓋)子目錄的效果
● 從遠程復制到本地用法:
# scp root@172.16.50:/home/root/others/music /home/space/music1/1.mp3
# scp -r root@172.16.50:/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 可讀性較高(顯示單位)
圖1 df -h命令結果顯示
free
● 功能:查看內存使用情況
● 語法:free [選項]
● 常用用法:# free -m ,以MB為單位
圖2 free -命令結果顯示
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 字符串的文件,并打印出該字符串的所在行內容(如果當前目錄存在子目錄,會提示子目錄是文件 夾,并不會查找子目錄下的文件)。
圖3 grep hello *命令執行結果
● 用法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:完整的啟動進程所用的命令和參數
● 注意:"ps -aux"不同于"ps aux",使用時兩者之間直接選擇ps aux;ps aux 和ps -ef,兩者的輸出結果差別不大,但展示風格不同。aux是BSD風格,-ef是System V風格。如果想查看進程的CPU占用率和內存占用率,可以使用aux,如果想查看進程的父進程ID和完整的COMMAND命令,可以使用ef
管道
● 功能:管道符左邊指令的輸出就會作為管道符右邊指令的輸入;連續使用管道意味著第一個指令的輸出會作為 第二個指令的輸入,第二個指令的輸出又會作為第三個指令的輸入,依此類推。
● 語法:指令A|指令B ...
● 常用用法1:#ps -ef|grep JAVA,在ps的結果中查找出想要查看的進程狀態,比如進程名包含java的所有進程
● 常用用法2:#ls /xx|wc -l,統計xx目錄下的文檔的總個數
● 說明:由上兩個例子可見,管道符|右邊的指令中的路徑不寫了,其實這個路徑代表的是輸入,而這個輸入現在是管道左邊指令的輸出。
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核心的詳細信息
圖4 top命令執行結果
表頭含義:
● 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,先只要會看.NET后的ip就可以了
● 用法:# ifconfig
圖5 ifconfig命令執行結果
● 用法:# ip addr
圖6 ip addr命令執行結果
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端口被哪個進程占用
圖7 netstat -tnlp命令執行結果
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將失效:
圖8 查看ln -s執行結果
● 用法2:# ln log2013.log ln2013,給文件創建硬鏈接,為log2013.log創建硬鏈接ln2013,log2013.log與ln2013的各項屬性相同:
圖9 查看ln執行結果
● 注意:du在統計大小的時候默認不計算同目錄下硬鏈接(即硬鏈接的源文件也在這個目錄下)的大小,添加-l選項會重復計算
以上內容希望對初學Linux的你有所幫助。