linux 程序管理

2021-07-22 11:54:00 字數 3859 閱讀 5793

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值,數值大,表示較少...