Linux 常用指令。
Linux的指令有幾百個,下面我将總結我常用到幾個指令。如果大家在學習和工作中遇到了陌生的且高頻的Linux指令,多查資料,掌握它,日積月累,知識面就會寬廣。
1、關機:init 0
2、重新開機:init 6
3、清屏:clear
4、檢視伺服器的ip位址:ip addr
5、檢視時間:date
6、設定時區為中國上海時間:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
7、設定時間:date -s “yyyy-mm-dd hh:mi:ss”
8、檢視目前目錄:pwd
9、改變目前工作目錄:cd 目錄名
示例:
(1)、cd /user(進入/user目錄)
(2)、cd …(進入上一級目錄)
(3)、cd (進入使用者主目錄)】
10、列出目錄和檔案資訊:ls [-lt] 目錄或檔案名
選項-l列出目錄和檔案的詳細資訊。
選項-lt列出目錄和檔案的詳細資訊,按時間降序顯示。
示例:
(1)、ls:列出目前工作目錄下全部的目錄和檔案名資訊
(2)、ls -l:列出目前工作目錄下全部的目錄和檔案名詳細的資訊。
(3)、ls /tmp:列出/tmp目錄下全部的目錄和檔案。
11、正規表達式【星号“*”:比對任意數量的字元。問号“?”:比對一個字元。】
示例:
(1)、ls /tmp/.cpp:列出/dmp目錄下以比對.dmp的目錄和檔案。
(2)、ls /tmp/.log列出/tmp目錄下比對.log的目錄和檔案,按時間降序顯示
12、建立目錄:mkdir 目錄名
13、删除目錄和檔案:rm [-rf] 目錄或檔案清單
選項-r可以删除目錄,如果沒有-r隻能删除檔案。
選項-f表示強制删除,不需要确認。
目錄和檔案清單中間用空格分隔。
示例:rm .*.swp:删除目前目錄下所有的.swp交換檔案
14、移動目錄和檔案:mv 舊目錄或檔案名 新目錄或檔案名
如果第二個參數是已經存在的目錄,則把第一個參數(舊目錄或檔案名)移動到該目錄中。
示例:
1)mv test.c test1.c:把目前工作目錄中的test.c檔案重命名為test1.c
2)mv test.c /tmp/test2:如果/tmp/test2是一個已經存在的目錄,以下指令将把目前工作目錄下的test.c檔案移動到/tmp/test3目錄中。
3)mv test.c /tmp/test3:如果/tmp/test3目錄不存在,以下指令将把目前工作目錄下的test.c檔案改名為/tmp/test3。
15、複制目錄和檔案:cp [-r] 舊目錄或檔案名 新目錄或檔案名
選項-r可以複制目錄,如果沒有選項-r隻能複制檔案。
示例:
1)把目前工作目錄下的book1.c檔案複制為book2.c
cp book1.c book2.c
2)把目前工作目錄下的aaa目錄複制為bbb
cp -r aaa bbb
3)把目前工作目錄下的book1.c檔案複制為/tmp/book1.c
cp book1.c /tmp/book1.c
cp book1.c /tmp/.
以上兩個指令的效果相同。
4)把目前工作目錄下的aaa目錄複制為/tmp/aaa
cp -r aaa /tmp/aaa
cp -r aaa /tmp/.
以上兩個指令的效果相同。
16、打包壓縮和解包解壓:tar指令
打包壓縮的文法:
tar zcvf 壓縮封包件名 目錄或檔案名清單
示例:
1)把目前工作目錄下的aaa目錄打包壓縮放到/tmp目錄下重命名為123.tgz檔案。
tar zcvf /tmp/123.tgz aaa
2)把/home/oracle/aaa、/home/oracle/bbb和/home/oracle/ccc目錄打包壓縮成/tmp/123.tgz檔案。
tar zcvf /tmp/123.tgz /home/oracle/aaa /home/oracle/bbb /home/oracle/ccc
解包解壓的文法:
tar zxvf壓縮封包件名
示例:
1)把/tmp/123.tgz壓縮封包件在目前工作目錄下解壓。
tar zxvf /tmp/123.tgz
2)把/tmp/123.tgz壓縮封包件在/tmp/aaa目錄下解壓。
cd /tmp/aaa
tar zxvf /tmp/123.tgz
注意:
1)用tar指令打包和解包的目錄和檔案沒有絕對路徑的說法,都成了相對的,在包中相對的。
2)用tar指令打包的檔案,用winrar可以解開。
3)在Linux系統中,還有其它的打包壓縮和解包解壓指令,例如zip/unzip和gzip/gunzip。
17、判斷網絡是否連通:ping -c 包的個數 ip位址或域名
ping用于确定本地主機是否能與另一台主機成功交換資料包,判斷網絡是否通暢。
18、顯示文本檔案的内容:顯示文本檔案的内容有三個指令:cat、more和tail。
more 檔案名:more指令分頁顯示檔案的内容,按空格鍵顯示下一頁,按b鍵顯上一頁,按q鍵退出。
tail -f 檔案名:tail -f用于顯示文本檔案的最後幾行,如果檔案的内容有增加,就實時的重新整理。tail -f極其重要,可以動态顯示背景服務程式的日志,用于調試和跟蹤程式的運作。
19、 統計文本檔案的行數、單詞數和位元組數 :wc 檔案名
20、搜尋檔案:find 目錄名 -name 檔案名 -print
從目前工作目錄開始搜尋,把全部的*.c檔案顯示出來。
find . -name *.c -print
21、搜尋檔案中的内容:grep “内容” 檔案名
22、增加/删除使用者組:groupadd 組名 groupdel 組名
23、增加/删除使用者:useradd -n 使用者名 -g 組名 -d 使用者的主目錄 ------ userdel 使用者名
示例:useradd -n lyp -g dba -d /home/lyp :增加一個使用者,使用者名為lyp,屬于dba組,使用者的主目錄是/home/lyp
userdel lyp:删除lyp使用者。
24、修改使用者的密碼:passwd [使用者名]
25、切換使用者:在指令提示符下輸入:su - root ,然後按提示輸入root的密碼後将切換到root使用者。
從root使用者切換到其它普通使用者不需要輸入密碼,從普通使用者切換到任何使用者都需要輸入密碼。
26、修改目錄和檔案的主人群組:chown [-R] 使用者名:組名 目錄或檔案名清單
-R 選項表示處理各及子目錄。
示例:
1)把/oracle/home和/oracle/base及其子目錄的主人改為oracle,組改為dba。
chown -R oracle:dba /oracle/home /oracle/base
27、檢視系統磁盤空間:df [-h] [-T]
28、檢視檔案編碼:file filename
29、檢視記憶體資訊: free -m(TX)
cached主要負責緩存檔案, 日志檔案過大造成cached區記憶體增大把記憶體占用完 .
linux下如何釋放cache記憶體
1、執行
sync
指令,将緩存中未被寫入磁盤的内容寫入磁盤。
2、通過調整/proc/sys/vm/drop_caches來釋放記憶體:
目的:清空緩存,騰出更多可用記憶體
echo 1 > /proc/sys/vm/drop_caches
30、檢視程式執行時間:time ./book
31、檢視網絡系統的狀态資訊:netstat(TX)
用于顯示與IP、TCP、UDP和ICMP協定相關的統計資料,一般用于檢驗本機各端口的網絡連接配接情況。

netstat的輸出結果可以分為兩個部分
1、Active Internet connections 有源TCP連接配接,其中"Recv-Q"和"Send-Q"指接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況隻能在非常少的情況見到。
2、Active UNIX domain sockets 有源Unix域套接口(和網絡套接字一樣,但是隻能用于本機通信,性能可以提高一倍)。
列名解釋:
Proto:顯示連接配接使用的協定。
RefCnt:表示連接配接到本套接口上的程序号。
Types:顯示套接口的類型。
State:顯示套接口目前的狀态。
Path:表示連接配接到套接口的其它程序使用的路徑名。
netstat常見參數
-a (all) 顯示所有選項,預設不顯示LISTEN相關。
-t (tcp) 僅顯示tcp相關選項。
-u (udp) 僅顯示udp相關選項。
-n 拒絕顯示别名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀态。
-p 顯示建立相關連結的程式名
-r 顯示路由資訊,路由表
-e 顯示擴充資訊,例如uid等
-s 按各個協定進行統計
-c 每隔一個固定時間,執行該netstat指令。
LISTEN和LISTENING的狀态隻有用-a或者-l才能看到。
32、監控linux的系統狀況:top(TX)
是常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用情況。
top各輸出參數含義
一、top前5行統計資訊
第1行:top - 05:43:27 up 4:52, 2 users, load average: 0.58, 0.41, 0.30
第1行是任務隊列資訊,其參數如下:
内容 | 含義 |
---|---|
05:43:27 | 表示目前時間 |
up 4:52 | 系統運作時間 格式為時:分 |
2 users | 目前登入使用者數 |
load average: 0.58, 0.41, 0.30 | 系統負載,即任務隊列的平均長度。 三個數值分别為 1分鐘、5分鐘、15分鐘前到現在的平均值。 |
load average: 如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了。
第2行:Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie
第3行:%Cpu(s): 37.0 us, 3.7 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第2、3行為程序和CPU的資訊
當有多個CPU時,這些内容可能會超過兩行,其參數如下:
内容 | 含義 |
---|---|
159 total | 程序總數 |
1 running | 正在運作的程序數 |
158 sleeping | 睡眠的程序數 |
0 stopped | 停止的程序數 |
0 zombie | 僵屍程序數 |
37.0 us | 使用者空間占用CPU百分比 |
3.7 sy | 核心空間占用CPU百分比 |
0.0 ni | 使用者程序空間内改變過優先級的程序占用CPU百分比 |
59.3 id | 空閑CPU百分比 |
0.0 wa | 等待輸入輸出的CPU時間百分比 |
0.0 hi | 硬中斷(Hardware IRQ)占用CPU的百分比 |
0.0 si | 軟中斷(Software Interrupts)占用CPU的百分比 |
0.0 st |
第4行:KiB Mem: 1530752 total, 1481968 used, 48784 free, 70988 buffers
第5行:KiB Swap: 3905532 total, 267544 used, 3637988 free. 617312 cached Mem
第4、5行為記憶體資訊
其參數如下:
内容 | 含義 |
---|---|
KiB Mem: 1530752 total | 實體記憶體總量 |
1481968 used | 使用的實體記憶體總量 |
48784 free | 空閑記憶體總量 |
70988 buffers(buff/cache) | 用作核心緩存的記憶體量 |
KiB Swap: 3905532 total | 交換區總量 |
267544 used | 使用的交換區總量 |
3637988 free | 空閑交換區總量 |
617312 cached Mem | 緩沖的交換區總量。 |
3156100 avail Mem | 代表可用于程序下一次配置設定的實體記憶體數量 |
上述最後提到的緩沖的交換區總量,這裡解釋一下,所謂緩沖的交換區總量,即記憶體中的内容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆寫,該數值即為這些内容已存在于記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。
計算可用記憶體數有一個近似的公式:
第四行的free + 第四行的buffers + 第五行的cached
二、程序資訊
列名 | 含義 |
---|---|
PID | 程序id |
PPID | 父程序id |
RUSER | Real user name |
UID | 程序所有者的使用者id |
USER | 程序所有者的使用者名 |
GROUP | 程序所有者的組名 |
TTY | 啟動程序的終端名。不是從終端啟動的程序則顯示為 ? |
PR | 優先級 |
NI | nice值。負值表示高優先級,正值表示低優先級 |
P | 最後使用的CPU,僅在多CPU環境下有意義 |
%CPU | 上次更新到現在的CPU時間占用百分比 |
TIME | 程序使用的CPU時間總計,機關秒 |
TIME+ | 程序使用的CPU時間總計,機關1/100秒 |
%MEM | 程序使用的實體記憶體百分比 |
VIRT | 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES |
SWAP | 程序使用的虛拟記憶體中,被換出的大小,機關kb |
RES | 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA |
CODE | 可執行代碼占用的實體記憶體大小,機關kb |
DATA | 可執行代碼以外的部分(資料段+棧)占用的實體記憶體大小,機關kb |
SHR | 共享記憶體大小,機關kb |
nFLT | 頁面錯誤次數 |
nDRT | 最後一次寫入到現在,被修改過的頁面數。 |
S | 程序狀态。D=不可中斷的睡眠狀态 R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序 |
COMMAND | 指令名/指令行 |
WCHAN | 若該程序在睡眠,則顯示睡眠中的系統函數名 |
Flags | 任務标志 |
33、檢視程序
ps [-au]檢視目前終端的程序。
ps -ef 檢視系統全部的程序。
ps -ef |more 檢視系統全部的程序,結果分頁顯示。
UID :啟動程序的作業系統使用者。
PID :程序編号。
PPID :程序的父程序的編号。
C :CPU使用的資源百分比。
STIME :程序啟動時間。
TTY :程序所屬的終端。
TIME :使用掉的CPU時間。
CMD :執行的是什麼指令。
ps -ef |grep book 檢視系統全部的程序,然後從結果集中過濾出包含“book”單詞的記錄。
34、檢視目前運作的程序:ps aux | grep test
35、檢視目前運作的輕量級程序:ps -aL | grep test
36、檢視主線程和子線程的關系:pstree -p 主線程id
37、檢視線程
在top指令中,如果加上-H參數,top中的每一行顯示的不是程序,而是一個線程。
top -H
2)在ps指令中加-xH參數也可以顯示線程,加grep可以過濾内容。
ps -xH
ps -xH|grep book261