linux shell script
執行指令碼:
sh指令碼需要具有rx許可權,那麼可以選擇如下方式執行
1:絕對路徑;/home/zhao/sh01.sh
2:相對路徑,進入/home/zhao目錄, ./sh01.sh
3:利用path變數執行,將sh01.sh指令碼放入path對應的目錄之下
以bash程式來執行bs01.sh
bash sh01.sh 或者 sh sh01.sh
------
linux 程序管理
1:檢視程序
2:系統資源檢視
3:系統定時任務
4:工作管理
——————————
檢視程序 ps |pstree
ps aux 或者 ps -le
檢視系統中所有程序
aux 的輸出解釋:
user:使用者名稱
pid:程序id
cpu:cpu使用百分比,占用越高,程序越耗費資源
mem:記憶體百分比,占用越高,程序越耗費資源
vsz:該程序占用虛擬記憶體的大小,單位kb;
rss:該程序占用世紀記憶體的大小,單位kb;
tty:該程序是在哪乙個終端下執行的,tty1-7代表本地終端,pts/0-255 虛擬終端;
stat:程序狀態,r:執行,s:睡眠,t:停止,s:包含子程序,+:位於後台;d:不可被喚醒的睡眠狀態,通常這只程式可能在等該io的情況;z(zombie):殭屍狀態已經被終止,但無法被移除至記憶體。
pri/ni:priority/nice的縮寫,代表此程式配cpu所執行的優先順序,數值越小,代表程式越快被cpu執行。
start:程序啟動時間
time:程序占用cpu的運算時間,占用時間也是乙個評估程序是否異常的標準;
commad:產生此程序的命令;
------
cache 快取 加速讀取
buffer 緩衝 加速寫入硬碟
------
pstree
選項和引數:
-a:各程式樹之間以ascii字元連線
-u:各程式樹之間以萬國碼的字元來連線
-p:並同時列出每個process的pid
-u:同時列出每個process的所屬賬號
----
程式管理
程式之間是可以相互控制的,那麼程式如何互相管理呢,其實是透過給予該程式乙個訊號signal去告知該程式如何去做。
kill -l 可以檢視主要的訊號代號,名稱以及內容,常用
1 : 啟動被終止的程式,可以讓該pid重新讀區自己的配置檔案,類似重啟
9 : 代表強制中斷乙個程式的進行,如果該程式進行到一半,那麼尚未完成的部分可能會有 殘留 產生,例如vim 產生的 .filename.swp 檔案保留下來;
15: 以正常的結束程式來終止該程式。
kill -signal pid
----
killall -signal 指令名稱
其中 加入 -i 選項,interactive 互動式。詢問是否操作某pid
------
程式的執行順序
linux 給予程式乙個 所謂的 優先執行序 priority pri,這個pri的值越小,表示越優先。不過pri的值是由核心動態調整的,使用者無法直接調整pri的數值。
pri = pri + ni
注意:若原本的pri=50,並不是我們賦予ni=5,那麼pri=55,因為pri是系統動態決定,雖然nice值可以影響pri,不過最終的pri仍是藥經過系統分析才可以決定;
另外:nice的值可以的調整範圍 -20 ~ 19
root可以調整自己或者他人程式的nice值;
一般使用者僅可以調整自己程式的nice值,且範圍是0-19
--------
調整 程式nice值的方式:
1:一開始執行程式就立刻給予指定nice值
nice -n 數字 cmd
-n 後面接 -20~ 19的數字
2:renice [數字] pid
----
系統資源檢視
除了如上的top指令以外,還有一些其它指令可以參考哦;
1:free 觀察記憶體使用情況
free [-b|-k|-m|-g][-t]
選項和引數:
-b :直接輸入free ,顯示的單位是kb,我們可以使用 b(bytes),m(mbytes)k,g等來顯示單位
-t:在輸出的結果,顯示物理記憶體和swap總量
2:uname [-asrmpi]
-s:系統核心名稱
-r:核心的版本
-m:本系統的硬體名稱,例如i686
-p:cpu的型別
-i:硬體的平台
3:uptime 觀察系統啟動時間和 工作負載
顯示top畫面的最上面一行資訊
4:netstat 追蹤網路 或 插槽檔案
其實這個指令比較常用在網路監控方面,netstat的輸出分為2部分,分別是網路與系統程式相關性部分
netstat -[atunlp]
a:將目前系統上所有的聯機,監控,socket資料都列出來
t:列出tcp網路封包的資料
u:udp網路封包
n::以埠號來顯示 服務名稱
l:列出目前正在網路監聽的服務
p:列出該網路服務的程式pid
dmesg 分析核心產生的訊息
系統在開機的時候,核心回去偵測系統的硬體,所有核心偵測的訊息都會被記錄到記憶體中某乙個保護區段,一般以 [| more]管道符來是畫面暫停
vmstat 偵測系統資源的變化
vmstat 可以偵測 cpu 記憶體 磁碟io狀態等。
vmstat
-a cpu 記憶體等資訊
-fs 記憶體資訊
-s 單位 設定顯示資料的單位
-d 磁碟相關
fuser: 找出正在使用該檔案的程式
若想知道程式啟動過程中開啟了多少檔案,那麼可以利用fuser來檢視。
fuser [-umv][-k[i] [-signal]] file/dir
-u:除了程式的pid之外,同時列出該程式的owner;
-m:後面接的那個文件名 會主動的上提到該檔案系統的最頂層,對nmount不成功很有效;
-v:列出每個檔案和程式還有指令的完整相關性
-k:找出使用該檔案/目錄的pid,並試圖以sigkill這個訊號給該pid
-i:必須和-k配合,在刪除pid之前會詢問使用者
-signal: -1 -15等,預設是-9(sigkill);
fuser -uv .
在輸出結果中,許可權列access,各個引數代表的意義
c:此程式在當前的目錄下
e:可被觸發為執行狀態
f:是乙個被開啟的檔案
r:代表頂層目錄
f:該檔案被開啟,不過在等待回應中
m:可能未分享的動態函式庫
————————————————————————
lsof 列出被程式所開啟的檔案
相對於fuser是由檔案或者裝置去找出使用該檔案或裝置的程式,反過來說,如何查出某個程式開啟或者使用的檔案和裝置?lsof
選項和引數
-a:多項資料需要同時成立,才顯示 and
-u:僅列出unix like 系統的socket 檔案型別
-u:後面接 username,列出該使用者相關程式所開啟的檔案
+d:後面接 目錄,找出該目錄下已經被開啟的檔案
----
pidof 找出某支正在執行的程式pid
pidof [-sx] program_name
選項和引數
-s:僅僅列出乙個pid,而不列出所有的pid
-x:同時列出該programe name可能的ppid程式的pid
LINUX程序管理
1.程序是什麼?乙個程序就是出於執行期的程式,包括 可執行程式 段 開啟的檔案,掛起的訊號,核心內部資料,處理器狀態,位址空間,乙個或多個執行執行緒,當然還包括用來存放全域性變數的資料段,等等.2.什麼是執行緒?它和程序的關係是什麼樣的?執行緒在linux中具體是怎麼樣實現的?是在程序中活動的物件,...
linux程序管理
程序的監控 使用ps aux 檢視當前所有程序。可以使用top檢視當前程序自動更新列表,在top中m 按記憶體大小排列,p 按cpu佔用率排列 終止和管理程序 程序之間通過訊號來進行通訊 top和kill都用於向程序傳送訊號。kill l顯示訊號編號表。kill 9 pid kill pid 向pi...
Linux 程序管理
1.linux程序管理工具,包括ps pgrep top kill killall pkill 等 常用 ps aux 或lax輸出的解釋 user 程序的屬主 pid 程序的id ppid 父程序 cpu 程序占用的cpu百分比 mem 占用記憶體的百分比 ni 程序的nice值,數值大,表示較少...