程式:是一組計算機能識別和執行的指令,執行於電子計算機上,滿足人們某種需求的資訊化工具用於描述程序要完成的功能,是控制程序執行的指令集
執行中的程式的一個副本,是被載入記憶體的一個指令集合,是資源分配的單位,
程序ID(Process ID,PID)號碼被用來標記各個程序
UID、GID語境決定對檔案系統的存取和存取許可權
通常從執行程序的使用者來繼承
存在生命週期
全生命週期 (誕生--->死去)程序的產生,執行,消失 (殭屍程序)(Zombie process)
執行中的程式的一個副本,是被載入記憶體的一個指令集合,是資源分配的單位,
程序ID(Process ID,PID)號碼被用來標記各個程序
UID、GID語境決定對檔案系統的存取和存取許可權
通常從執行程序的使用者來繼承
存在生命週期
都由其父程序建立
init:第一個程序,從 CentOS7 以後為systemd
程序:都由其父程序建立,fork(),父子關係,CoW:Copy On Write 寫實更新,有資料寫入子程序需要新的記憶體空間
動態性:程序是程式的一次執行過程,是臨時的,有生命期的,是動態產生,動態消亡的
並行性:任何程序都可以同其他程序一起並行執行;
獨立性:程序是系統進行資源分配和排程的一個獨立單位
結構性:程序由程式、資料和過程控制塊三部分組成。
例題 :怎麼確定一個程式是多執行緒還是單執行緒
#查nginx的程序數
#用prtstat這個命令來查nginx的執行緒 ,顯示執行緒是1
另一種方法
建立狀態:程序在建立時需要申請一個空白PCB(process control block過程控制塊),向其中填寫控制和管理程序的資訊,完成資源分配。如果建立工作無法完成,比如資源無法滿足,就無法被排程執行,把此時程序所處狀態稱為建立狀態
就緒狀態:程序已準備好,已分配到所需資源,只要分配到CPU就能夠立即執行
執行狀態:程序處於就緒狀態被排程後,程序進入執行狀態
阻塞狀態:正在執行的程序由於某些事件(I/O請求,申請快取區失敗)而暫時無法執行,程序受到阻塞。在滿足請求時進入就緒狀態等待系統呼叫
終止狀態:程序結束,或出現錯誤,或被系統終止,進入終止狀態。無法再執行
執行態:running
就緒態:ready
睡眠態:分為兩種,可中斷:interruptable,不可中斷:uninterruptable
停止態:stopped,暫停於記憶體,但不會被排程,除非手動啟動
僵死態:zombie,殭屍態,結束程序,父程序結束前,子程序不關閉,殺死父程序可以關閉僵死態 的子程序
#使用kill -l 來檢視訊號的型別
程序優先順序 系統優先順序 使用者優先順序
PRI(優先順序) NI(手動可調的優先順序) -20 ~ 19
調優先順序 renice -n (數位) PID號
( )
a #顯示當前終端下的所有程序資訊,包括其他使用者的程序。與「x」選項結合時將示系統中所有的程序資訊
-a #顯示所有終端機下執行的程式,除了階段作業領導者之外
u #使用以使用者為主的格式輸出程序資訊
x #顯示當前使用者在所有終端下的程序資訊
-e #顯示系統內的所有程序資訊
-l #使用長(Long)格式顯示程序資訊
-f #使用完整的(Full)格式顯示程序信
k|--sort 屬性 對屬性排序,屬性前加 - 表示倒序 ps aux k -%cpu
o #屬性… 選項顯示客製化的資訊 pid、cmd、%cpu、%mem
au #
aux #檢視系統中所有的程序
ps axo pid,usr|head
-elf|head
pstree -p#檢視PID號
chattr +i a #加上i的許可權 不允許刪除
chattr -i a #減去i的許可權 允許刪除
ps aux |grep Z #過濾殭屍程序
ps aux |grep -v grep|grep Z #過濾殭屍程序
user:使用者
PID:pid號
%cpu:使用的cpu佔用的百分率
%MEM:佔用的記憶體百分率
VSZ:虛擬記憶體
RSS:真實記憶體
TTY:終端
STAT:狀態
START:執行開始時間
TIME:分片時間 (統計一共佔用了多少時間)
COMMAND:程序的名字
#檢視pid號
-d 秒數:#指定 top 命令每隔幾秒更新。預設是 3 秒;
-b:#使用批次處理模式輸出。一般和"-n"選項合用,用於把 top 命令重定向到檔案中;
-n 次數:#指定 top 命令執行的次數。一般和"-"選項合用;
-p 程序PID:#僅檢視指定 ID 的程序;
-s:#使 top 命令在安全模式中執行,避免在互動模式中出現錯誤;
-u 使用者名稱:#只監聽某個使用者的程序;
- ? 或 h:#顯示互動模式的幫助;
- c:#按照 CPU 的使用率排序,預設就是此選項;
- M:#按照記憶體的使用率排序;
- N:#按照 PID 排序;
- T:#按照 CPU 的累積運算時間排序,也就是按照 TIME+ 項排序;
- k:#按照 PID 給予某個程序一個訊號。一般用於中止某個程序,訊號 9 是強制中止的訊號;
- r:#按照 PID 給某個程序重設優先順序(Nice)值;
- q:#退出 top 命令;
Tasks: 157 total | 系統中的程序總數 |
---|---|
內 容 | 說 明 |
1 running | 正在執行的程序數 |
149 sleeping | 睡眠的程序數 |
7 stopped | 正在停止的程序數 |
0 zombie | 殭屍程序數。如果不是 0,則需要手工檢查殭屍程序 |
內 容 | 說 明 |
---|---|
Cpu(s): 0.0 %us | 使用者模式佔用的 CPU 百分比 個人使用者開啟的程序佔用的 cpu 率 |
0.2%sy | 系統模式佔用的 CPU 百分比 |
0.0%ni | 改變過優先順序的使用者程序佔用的 CPU 百分比 |
99.8%id | 空閒 CPU 佔用的 CPU 百分比 |
0.0%wa | 等待輸入/輸出的程序佔用的 CPU 百分比 1 |
0.0%hi | 硬中斷請求服務佔用的 CPU 百分比 |
0.0%si | 軟中斷請求服務佔用的 CPU 百分比 |
0.0%st | st(steal time)意為虛擬程式佔用 cpu 時間百分比,就是當有虛擬機器器時,虛擬 CPU 等待實際 CPU 的時間百分比 |
KiB Mem | 記憶體 |
1867048 total | 總記憶體 |
591836 free | 剩餘記憶體 |
440024 used | 用掉記憶體 |
835188 buff/cache | 快取 |
(增強版的top )htop
-U #指定使用者
-l: #顯示程序名
-a: #顯示完整格式的程序名
-P pid #顯示指定程序的子程序
只知程式名不知pid號
pidof nginx #檢視 niginx程序的pid號
-p #按時程序數 ,並顯示程序號
-a #顯示啟動每個程序對應的完整指令,包括啟動程序的路徑、引數等
-u #顯示使用者切換
-H #pid 高亮顯示指定程序及其前輩程序
記憶體 :free top
cpu :top ps aux
磁碟
大小:lsblk 剩餘df
讀寫 :dd iostat vmstat
網路 :dstat iftop
-c 字串 #只列出以字串開頭的程序開啟的檔案
+d 目錄名 #列出某個目錄中所有被程序呼叫的檔案
-u 使用者名稱 #只列出某個使用者的程序開啟的檔案
-p pid #列出某個PID程序開啟的檔案
#先複製個/etc/passwd 到/date下取名test
#這個比如是別人正在使用
#你刪除這個檔案
#過濾出這個檔案
#去 /proc下的6597
#去往fd下
#裡面的都是軟連線
#通過軟連結4 的/date/.test.swp 中去找
#從記憶體裡撈資料
欄位 | 含義 |
---|---|
procs | 程序資訊欄位: -r:等待執行的程序數,數量越大,系統越繁忙。 -b:不可被喚醒的程序數量,數量越大,系統越繁忙。 |
memory | 記憶體資訊欄位: -swpd:虛擬記憶體的使用情況,單位為 KB。 -free:空閒的記憶體容量,單位為 KB。-buff:緩衝的記憶體容量,單位為 KB。-cache:快取的記憶體容量,單位為 KB。 |
swap | 交換分割區資訊欄位: -si:從磁碟中交換到記憶體中資料的數量,單位為 KB。 -so:從記憶體中交換到磁碟中資料的數量,單位為 KB。這兩個數越大,表明資料需要經常在磁碟和記憶體之間進行交換,系統效能越差。 |
io | 磁碟讀/寫資訊欄位: -bi:從塊裝置中讀入的資料的總量,單位是塊。 -bo:寫到塊裝置的資料的總量,單位是塊。這兩個數越大,代表系統的 I/O 越繁忙。 |
system | 系統資訊欄位: -in:每秒被中斷的程序次數。 -cs:每秒進行的事件切換次數。這兩個數越大,代表系統與介面裝置的通訊越繁忙。 |
cpu | CPU資訊欄位: -us:非核心程序消耗 CPU 運算時間的百分比。 -sy:核心程序消耗 CPU 運算時間的百分比。 -id:空閒 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虛擬機器器所盜用的 CPU 百分比 |
選項 | 含義 |
-fs | -f:顯示從啟動到目前為止,系統複製(fork)的程式數,此資訊是從 /proc/stat 中的 processes 欄位中取得的。 -s:將從啟動到目前為止,由一些事件導致的記憶體變化情況列表說明。 |
-S | 令輸出的資料顯示單位,例如用 K/M 取代 bytes 的容量。 |
-d | 列出硬碟有關讀寫總量的統計表 |
-p | 檢視硬碟分割區的讀寫情況 (分割區,裝置,檔名) |
free -h
#echo 3 > /proc/sys/vm/drop_caches (清快取)
iostat 1 -d/dev/sda 只檢視sda磁碟 (每一秒重新整理一次)
系統不自帶,得安裝 (epel)
#安裝外源
#安裝 iftop
#安裝外源
#安裝dstat
#下載安裝包
#安裝webmin-2.100-1.noarch.rpm
#檢視有無安裝上
#開啟webmin
#檢視webmin目前服務的狀態
#關閉防火牆和安全機制
#開啟瀏覽器搜尋你的IP地址後面加上:10000
#你的使用者名稱和密碼
#改中文
#以改變中文
+& 將前臺任務放在後臺執行
例如:dd if =/dev/zero of=/dev/null &
jobs:檢視後臺執行的命令
fg 1 :把後臺命令調回前臺
在調回後臺 ctrl +z 掉入後臺 並停止
bg 1 :繼續後臺命令 bg序號
#放到後臺執行
#fg 1調回前面,ctrl +z 停止
#想讓已停止的它啟動 bg 1
#檢視是否再執行
at 工具
由包 at 提供
依賴與atd服務,需要啟動才能實現at任務
at佇列存放在/var/spool/at目錄中,ubuntu存放在/var/spool/cron/atjobs目錄下
執行任務時PATH變數的值和當前定義任務的使用者身份一致
格式 | 用法 |
---|---|
HH:MM | 比如 04:00 AM。如果時間已過,則它會在第二天的同一時間執行。 |
Midnight(midnight) | 代表 12:00 AM(也就是 00:00)。 |
Noon(noon) | 代表 12:00 PM(相當於 12:00)。 |
Teatime(teatime)下午茶 | 代表 4:00 PM(相當於 16:00)。 |
英文月名 日期 年份 | 比如 January 15 2018 表示 2018 年 1 月 15 號,年份可有可無。 |
MMDDYY、MM/DD/YY、MM.DD.YY | 比如 011518 表示 2018 年 1 月 15 號。 |
now+時間 | 以 minutes、hours、days 或 weeks 為單位,例如 now+5 days 表示命令在 5 天之後的此時此刻執行。 |
-e #編輯一個定時任務
* * * * *(分 ,時,日,月,周)(分:0-59,時(0-23),日(1-31),月(1-12),周(0-6)(0和7代表星期天)
-u #指定使用者
-l #目前有哪些計劃任務
-r #刪除計劃任務
分時日月周 + 命令(寫絕對路徑)
#在這些路徑下可以不用絕對路徑
符號 | 代表 |
* | 代表任何時間。比如第一個"*"就代表一小時種每分鐘都執行一次的意思 |
, | 代表不連續的時間。比如"0 8,12,16***命令"就代表在每天的 8 點 0 分、12 點 0 分、16 點 0 分都執行一次命令。 |
- | 代表連續的時間範圍。比如"0 5 ** 1-6命令",代表在週一到週六的凌晨 5 點 0 分執行命令。 |
/ | 代表每隔多久執行一次。比如"*/10****命令",代表每隔 10 分鐘就執行一次命令。 |
0 17 * * 1-5 #週一到週五每天17:00
30 8 * * 1,3,5 #每週一、三、五的8點30分
0 8-18/2 * * * #每天的8點到18點之間每2小時
0 * */3 * * #每3天
#編輯定時任務
#每2分鐘複製 /etc/passwd 到/opt下取名soft
#檢視目前有哪些計劃任務書