常用指令待整理
ps:process Status
ps命令用來列出系統中當前運行的那些進程,列出的是當前那些進程的快照,就是執行ps命令的那個時刻的那些進程,如果想要動態的顯示進程信息,就可以使用top命令。
即使用該命令 可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵屍、哪些進程占用了過多的資源等等,但ps提供不動態連續的進程查看結果。
直接用ps命令,會顯示所有進程的狀態,通常結合grep命令查看某進程的狀態。
grep :(global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。
kill -9 PID命令用於殺死進程,-9強制殺進程。
kill命令用來刪除執行中的程序或工作。kill可將指定的信息送至程序。預設的信息為SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用SIGKILL(9)信息嘗試強制刪除程序。程序或工作的編號可利用ps指令或job指令查看。
語法: kill(選項)(參數)
選項
-a:當處理當前進程時,不限制命令名和進程號的對應關系;
-l <信息編號>:若不加<信息編號>選項,則-l參數會列出全部的信息名稱;
-p:指定kill 命令只打印相關進程的進程號,而不發送任何信號;
-s <信息名稱或編號>:指定要送出的信息;
-u:指定用戶。
參數:進程或作業識別號:指定要刪除的進程或作業。
使用示例:
ps -aux | grep java|grep -v grep 列出所有在內存中進行的關於java的進程,當前指令除外
ps -ef | grep java|grep -v grep列出所有關於java的進程,當前指令除外
[root@node20 updateDB]# ps aux|grep ./update_stock
root 14232 0.0 0.0 5928 724 pts/1 S+ 18:16 0:00 grep ./update_stock
root 25021 0.0 0.0 3056 816 ? S Apr12 0:03 ./update_stock
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)
ps工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.命令格式:
ps[參數]
2.命令功能:
用來顯示當前進程的狀態
3.命令參數:
a 顯示所有進程
-a 顯示同一終端下的所有程序
-A 顯示所有進程
c 顯示進程的真實名稱
-N 反向選擇
-e 等於“-A”
e 顯示環境變量
f 顯示程序間的關系
-H 顯示樹狀結構
r 顯示當前終端的進程
T 顯示當前終端的所有程序
u 指定用戶的所有進程
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
-C<命令> 列出指定命令的狀況
--lines<行數> 每頁顯示的行數
--width<字符數> 每頁顯示的字符數
--help 顯示幫助信息
--version 顯示版本顯示
4.使用實例:
實例1:顯示所有進程信息
命令:
ps -A
實例2:顯示指定用戶信息
命令:
ps -u root
實例3:顯示所有進程信息,連同命令行
命令:
ps -ef
實例4: ps 與grep 常用組合用法,查找特定進程
命令:
ps -ef|grep ssh
實例5:將目前屬於您自己這次登入的 PID 與相關信息列示出來
命令:
ps -l
實例6:列出目前所有的正在內存當中的程序
命令:
ps aux
實例7:列出類似程序樹的程序顯示
命令:
ps -axjf
實例8:找出與 cron 與 syslog 這兩個服務有關的 PID 號碼
命令: ps aux | egrep ‘(cron|syslog)‘
其他實例:
1. 可以用 | 管道和 more 連接起來分頁查看
命令:
ps -aux |more
2. 把所有進程顯示出來,並輸出到ps001.txt文件
命令:
ps -aux > ps001.txt
3. 輸出指定的字段
命令:
ps -o pid,ppid,pgrp,session,tpgid,comm
說明:
各相關信息的意義:
F 代表這個程序的旗標 (flag), 4 代表使用者為 super user
S 代表這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹
UID 程序被該 UID 所擁有
PID 就是這個程序的 ID !
PPID 則是其上級父程序的ID
C CPU 使用的資源百分比
PRI 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹
NI 這個是 Nice 值,在下一小節我們會持續介紹
ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"
SZ 使用掉的內存大小
WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作
TTY 登入者的終端機位置
TIME 使用掉的 CPU 時間。
CMD 所下達的指令為何
在預設的情況下, ps 僅會列出與目前所在的 bash shell 有關的 PID 而已,所以, 當我使用 ps -l 的時候,只有三個 PID。
說明:
USER:該 process 屬於那個使用者賬號的
PID :該 process 的號碼
%CPU:該 process 使用掉的 CPU 資源百分比
%MEM:該 process 所占用的物理內存百分比
VSZ :該 process 使用掉的虛擬內存量 (Kbytes)
RSS :該 process 占用的固定的內存量 (Kbytes)
TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。
STAT:該程序目前的狀態,主要的狀態有
R :該程序目前正在運作,或者是可被運作
S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。
T :該程序目前正在偵測或者是停止了
Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態
START:該 process 被觸發啟動的時間
TIME :該 process 實際使用 CPU 運作的時間
COMMAND:該程序的實際指令
top命令:
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程序為止.比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定.
1.命令格式:
top [參數]
2.命令功能:
顯示當前系統正在執行的進程的相關信息,包括進程ID、內存占用率、CPU占用率等
3.命令參數:
-b 批處理
-c 顯示完整的治命令
-I 忽略失效過程
-s 保密模式
-S 累積模式
-i<時間> 設置間隔時間
-u<用戶名> 指定用戶名
-p<進程號> 指定進程
-n<次數> 循環顯示的次數
4.使用實例:
實例1:顯示進程信息
命令:
top
說明:
統計信息區:
前五行是當前系統情況整體的統計信息區。下面我們看每一行信息的具體意義。
第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明情況如下:
14:06:23 — 當前系統時間
up 70 days, 16:44 — 系統已經運行了70天16小時44分鐘(在這期間系統沒有重啟過的吆!)
2 users — 當前有2個用戶登錄系統
load average: 1.15, 1.42, 1.44 — load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
第二行,Tasks — 任務(進程),具體信息說明如下:
系統現在共有206個進程,其中處於運行中的有1個,205個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。
第三行,cpu狀態信息,具體屬性說明如下:
5.9%us — 用戶空間占用CPU的百分比。
3.4% sy — 內核空間占用CPU的百分比。
0.0% ni — 改變過優先級的進程占用CPU的百分比
90.4% id — 空閑CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.2% si — 軟中斷(Software Interrupts)占用CPU的百分比
備註:在這裏CPU的使用比率和windows概念不同,需要理解linux系統用戶空間和內核空間的相關知識!
第四行,內存狀態,具體信息如下:
32949016k total — 物理內存總量(32GB)
14411180k used — 使用中的內存總量(14GB)
18537836k free — 空閑內存總量(18GB)
169884k buffers — 緩存的內存量 (169M)
第五行,swap交換分區信息,具體信息說明如下:
32764556k total — 交換區總量(32GB)
0k used — 使用的交換區總量(0K)
32764556k free — 空閑交換區總量(32GB)
3612636k cached — 緩沖的交換區總量(3.6GB)
備註:
第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。
如果出於習慣去計算可用內存數,這裏有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺服務器的可用內存:18537836k +169884k +3612636k = 22GB左右。
對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。
第六行,空行。
第七行以下:各進程(任務)的狀態監控,項目列信息說明如下:
PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
其他使用技巧:
1.多U多核CPU監控
在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況,再按數字鍵1,就會返回到top基本視圖界面。
Kill命令
Linux中的kill命令用來終止指定的進程(terminate a process)的運行,是Linux下進程管理的常用命令。通常,終止一個前臺進程可以使用Ctrl+C鍵,但是,對於一個後臺進程就須用kill命令來終止,我們就需要先使用ps/pidof/pstree/top等工具獲取進程PID,然後使用kill命令來殺掉該進程。kill命令是通過向進程發送指定的信號來結束相應進程的。在默認情況下,采用編號為15的TERM信號。TERM信號將終止所有不能捕獲該信號的進程。對於那些可以捕獲該信號的進程就要用編號為9的kill信號,強行“殺掉”該進程。
1.命令格式:
kill[參數][進程號]
2.命令功能:
發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果任無法終止該程序可用“-KILL” 參數,其發送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程。
3.命令參數:
-l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
-a 當處理當前進程時,不限制命令名和進程號的對應關系
-p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
-s 指定發送信號
-u 指定用戶
註意:
1、kill命令可以帶信號號碼選項,也可以不帶。如果沒有信號號碼,kill命令就會發出終止信號(15),這個信號可以被進程捕獲,使得進程在退出之前可以清理並釋放資源。也可以用kill向進程發送特定的信號。例如:
kill -2 123
它的效果等同於在前臺運行PID為123的進程時按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數的kill命令或最多使用-9信號。
2、kill可以帶有進程ID號作為參數。當用kill向這些進程發送信號時,必須是這些進程的主人。如果試圖撤銷一個沒有權限撤銷的進程或撤銷一個不存在的進程,就會得到一個錯誤信息。
3、可以向多個進程發信號或終止它們。
4、當kill成功地發送了信號後,shell會在屏幕上顯示出進程的終止信息。有時這個信息不會馬上顯示,只有當按下Enter鍵使shell的命令提示符再次出現時,才會顯示出來。
5、應註意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的後臺作業,可以輸入kill 0。因為有些在後臺運行的命令會啟動多個進程,跟蹤並找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的進程,是個有效的方法。
4.使用實例:
實例1:列出所有信號名稱
命令:
kill -l
說明:
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
刪除文件
rm
用戶可以用rm命令刪除不需要的文件。該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對於鏈接文件,只是斷開了鏈接,原文件保持不變。
rm命令的一般形式為:rm [選項]... 目錄... 刪除指定的<文件>(即解除鏈接)。
-d
--directory 刪除可能仍有數據的目錄 (只限超級用戶)
-f --force 略過不存在的文件,不顯示任何信息,強制刪除
-i --interactive 進行任何刪除操作前必須先確認
-r/R --recursive 同時刪除該目錄下的所有目錄層
-v --verbose 詳細顯示進行的步驟
--help 顯示此幫助信息並離開
--version 顯示版本信息並離開
PS1:最好用的帶參命令是rm -rf <filename>,確定好了要刪除的話,改命令不管是文件夾還是文件都會直接強制刪除。
PS2:rm同時刪除多個文件命令:rm <filename1> <filename2>
要刪除第一個字符為‘-’的文件 (例如‘-foo’),請使用以下其中一種方法:
rm --
-foo
rm ./-foo
請註意,如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。如果想保證
該文件的內容無法還原,請考慮使用 shred。
範例:
刪除所有rb語言程序檔;刪除前逐一詢問確認 :
rm -i
*.rb
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished
將 Finished 子目錄及子目錄中所有檔案刪除,並且不用--確認 :
rm -rf Finished
rmdir
rmdir命令用來刪除空目錄。當目錄不再被使用時,或者磁盤空間已到達使用限定值,就需要刪除失去使用價值的目錄。利用rmdir命令可以從一個目錄中刪除一個或多個空的子目錄。該命令從一個目錄中刪除一個或多個子目錄,其中dirname佬表示目錄名。如果dirname中沒有指定路徑,則刪除當前目錄下由dirname指定的目錄;如dirname中包含路徑,則刪除指定位置的目錄。刪除目錄時,必須具有對其父目錄的寫權限。
註意:子目錄被刪除之前應該是空目錄。就是說,該目錄中的所有文件必須用rm命令全部,另外,當前工作目錄必須在被刪除目錄之上,不能是被刪除目錄本身,也不能是被刪除目錄的子目錄。
雖然還可以用帶有-r選項的rm命令遞歸刪除一個目錄中的所有文件和該目錄本身,但是這樣做存在很大的危險性。
rmdir(選項)(參數)
-p或--parents:刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一並刪除; --ignore-fail-on-non-empty:此選項使rmdir命令忽略由於刪除非空目錄時導致的錯誤信息; -v或-verboes:顯示命令的詳細執行過程; --help:顯示命令的幫助信息; --version:顯示命令的版本信息。
目錄列表:要刪除的空目錄列表。當刪除多個空目錄時,目錄名之間使用空格隔開。
刪除子目錄os_1和其父目錄bin
cd /usr/meng/test
rmdir -p bin/os_1
linux查看tomcat服務:
ps-ef |grep tomcat
ps -ef |grep java
殺掉進程:kill -9 PID -9強制殺進程
grep指令
linux下端口號查看
netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]
netstat -nupl (UDP類型的端口)
netstat -ntpl (TCP類型的端口)
1)查看端口占用情況
netstat -ntlp|grep 端口號
找出程序運行的端口:netstat -ap | grep ssh
在 netstat 輸出中顯示 PID 和進程名稱:netstat –pt
找出運行在指定端口的進程:netstat -anpt | grep ‘:16064‘
netstat -nuplf|grep 3306 //這個表示查找處於監聽狀態的,端口號為3306的進程
查看哪些端口被打開: netstat
2)查看某個端口的連接數
netstat -antlp |grep 端口號 |wc –l
netstat -anpt | grep 6064
1、
查看主機信息
# more /etc/hosts
2、
查看進程
# ps -aux|grep java //顯示所有進程名中包含java字符串的進程
說明:
grep是查找字符串,把包含有匹配字符串的那行顯示出來。
-aux 顯示所有包含其他使用者的進程
4、查看網絡狀態
netstat -tln 命令是用來查看linux的端口使用情況
netstat -a 查看所有的服務端口
netstat -an | grep 端口號 來檢驗下是不是已經打開了某某端口
#netstat -an 示所有跟本機連接的IP以及連接的端口
查看8080端口占用情況
# netstat -aln|grep 8080
3. 若要關閉某個端口,則可以:
1)通過iptables工具將該端口禁掉,如:
sudo iptables -A INPUT -p tcp --dport $PORT -j DROP
sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP
2)或者關掉對應的應用程序,則端口就自然關閉了,如:
"kill -9 PID" (PID:進程號)
如:通過"netstat -anp | grep ssh"
有顯示:tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh
則: kill -9 7546
在工作中,經常來備份文件和系統應用,常用到的主要是tar和cp命令,分別介紹如下:
一、tar命令,這個現在經常使用用來打包:
tar包指的是檔案文件:
tar -cvf filename_20140805.tarfilename 打tar包的方法
tar -xvf filename_20140805.tar 解tar包的方法
gz包指的是壓縮包文件:
tar -czvf filename_20140805.tar.gz filename打壓縮包的方法
tar -xzvf filename_20140805.tar.gz解壓縮包的方法
以下為對比的幾個:
tar-cvf/path/filename.tar ——>
僅打包,不壓縮!
tar -zcvf/path/filename.tar.gz——>打包後,以 gzip 壓縮
tar
-jcvf /path/filename.tar.bz2 ——>打包後,以 bzip2 壓縮
壓縮文件:
tar -xvzf /abc/bcd/mm_20141223.tar.gz /aaa/bbb/ccc.txt 將文件/aaa/bbb/ccc.txt 壓縮到另一個路徑/abc/bcd/下,並以mm_20141223.tar.gz名字命名
實例:壓縮服務器上當前目錄的內容為xxx.zip文件
zip -r xxx.zip ./*
解壓zip文件到當前目錄
unzip filename.zip
二、cp命令,這個常用來拷貝文件/文件夾:
1、同一文件夾內拷貝:
cp filename filename_20140805拷貝文件
cp -rf foldername foldername_20140805拷貝文件夾
2、本文件夾內某個文件拷貝到另一個文件夾:
cp filename /app/xx/xx/filename(filename_20140805) 拷貝文件
cp -rf filename /app/xx/xx/filename(filename_20140805) 拷貝文件夾
3、某文件夾內所有文件拷貝到另一個文件夾下:
cp /abc/a*.jsp /path/to/newfilepath/
將/abc/路徑下以a開頭的.jsp文件拷貝到 /path/to/newfilepath/路徑下
cp /abc/* /path/to/newfilepath/
將/abc/路徑下所有文件拷貝到 /path/to/newfilepath/路徑下
註:本文主要是為了總結自己在工作中常用的幾個命令和方法,算做自我工作總結。
grep
cat caselist.htm
cd caseManage/
cat server.xml
cd ../conf/
cd /root/.jenkins/workspace/DCBossSite/target/DCBossSite
1、從服務器下載文件指令
sz -y 文件名
2、上傳文件 rz -y 選擇文件
ls
常用指令待整理