內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等
進程管理:
系統優先級:數字越小,優先級越高
實時優先級: 99-0,值最大優先級最高
nice值:-20 到19 ,對應系統優先級100-139或99
Linux 內核:搶占式多任務
進程類型:
守護進程: daemon, 在系統引導過程中啟動的進程,和終端無關進程
前臺進程:跟終端相關,通過終端啟動的進程
注意:兩者可相互轉化
進程狀態:
運行態:running
就緒態:ready
睡眠態:
可中斷:interruptable
不可中斷:uninterruptable
停止態:stopped, 暫停于內存,但不會被調度,除非手動啟動
僵死態:zombie,結束進程,父進程結束前,子進程不關閉
進程和線程的區別:
一個進程可以有多個線程,一個CPU只能運行一個進程,
線程可以共享資源,包括網絡資源,內存資源
進程管理工具:
pstree -p : 查看進程樹 -p 查看pid
ps : 查看終端信息
默認顯示當前終端中的進程
? a 選項包括所有終端中的進程
? x 選項包括不鏈接終端的進程
? u 選項顯示進程所有者的信息
? f 選項顯示進程的父進程
? o 屬性… 選項顯示定制的信息
pid 、comm 、%cpu 、%mem 、state 、tty 、euser 、ruser
pidof command : 查看運行命令的pid
stat:進程狀態
R S D T Z L N <
可中斷休眠 停止 僵尸進程 多線程 高優先級
常用組合:-ef
-e: 顯示所有進程
-f: 顯示完整格式程序信息
常用組合:-eFH
-F: 顯示更完整格式的進程信息
-H: 以進程層級格式顯示進程相關信息
nice命令:
nice 10 pid
renice -n 10 pid 調整進程優先級
uptime : 顯示當前時間,和系統平均負載
top命令:
-d # :指定刷新時間間隔,默認為3秒
-b :以批次方式 (就是一次顯示一個頁面)
-n # :顯示多少批次(比如顯示3次頁面就退出的意思)
排序:
P :以占據的CPU 百分比,%CPU
M :占據內存百分比,%MEM
T :累積占據CPU 時長,TIME+
首部信息顯示:
uptime 信息: l 命令
tasks 及cpu 信息: t 命令
cpu 分別顯示: 1 ( 數字)
memory 信息: m 命令
退出命令: q
修改刷新時間間隔: s
終止指定進程: k
保存文件: W
top欄位信息簡介;進程查看對比就方便記住了
htop 命令:需從Fedora-EPEL 源安裝 yum -y install htop
vmstat: 虛擬內存信息
vmstat 2 5 : 每2秒顯示一次,顯示五次結束
iostat: 統計CPU 和設備IO 信息
iostat 2 5 :
系統監測工具:
glance:
服務器模式:
glances -s -B IPADDR
IPADDR: 指明監聽的本機哪個地址
客戶端模式:
glances -c IPADDR
IPADDR: 要連入的服務器端地址
dstat:, 代替vmstat,iostat;功能很強大
-c: 顯示cpu 相關信息
-d: 顯示disk 相關信息
-g :顯示page 相關統計數據
-m: 顯示memory 相關統計數據
-n: 顯示network 相關統計數據
-p: 顯示process 相關統計數據
-r: 顯示io 請求相關的統計數據
-s: 顯示swapped相關的統計數據
kill 命令:
向進程發送控制信號;以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭(可省略)不區分大小寫
顯示當前系統可用信號: kill –l,trap -l
常用信號:man 7 signal
1) SIGHUP: 無須關閉進程而讓其重讀配置文件
2) SIGINT: 中止正在運行的進程;相當于Ctrl+c
3) SIGQUIT: 相當于ctrl+\
9) SIGKILL: 強制殺死正在運行的進程
15) SIGTERM :終止正在運行的進程
18) SIGCONT :繼續運行
19) SIGSTOP :后臺休眠
指定信號的方法:
(1) 信號的數字標識:1, 2, 9
(2) 信號的簡寫名稱:HUP
例如:kill -9 PID kill -1 pid
作業管理:
Linux 的作業控制
前臺作業:通過終端啟動,且啟動后一直占據終端;
后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)
? 如何讓作業運行于后臺?
(1) 運行中的作業: Ctrl+z (此操作會使進程休眠)
(2) 尚未啟動的作業:# COMMAND & (此操作后臺運行)
? 后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉
后臺作業。如果希望送往后臺后,剝離與終端的關系
# nohup COMMAND & #screen;COMMAND
? 查看所有作業:
# jobs
? 作業控制: 后臺作業都會有一個編號,直接指定編號也行
# fg [[%]JOB_NUM] :把指定的后臺作業調回前臺
# bg [[%]JOB_NUM] :讓送往后臺的作業在后臺繼續運行
# kill [%JOB_NUM] :終止指定的作業
并行運行:
方法1 (寫三個腳本,放到一個腳本運行,每個腳本后用&)
vi all.sh
f1.sh&
f2.sh&
f3.sh&
? 方法2
(f1.sh&);(f2.sh&);(f3.sh&)
? 方法3
{ f1.sh& f2.sh& f3.sh& }
任務計劃:
Linux 任務計劃、周期性任務執行
? 未來的某時間點執行一次任務
at
batch :系統 自行選擇空閑時間去執行此處指定的任務
? 周期性運行某任務
cron
at: 依賴軟件包,考試時候類似的包都會挖坑,需要手動啟動服務,否則做完不生效
rpm -q at :查詢軟件包名稱
rpm -ql at : 查詢安裝包路徑
service atd status :查看當前服務是否啟動 start和stop,臨時啟動
chkconfig –list atd :查看是否開機啟動的
chkconfif –level 5 atd on/off :在模式5設置開機啟動或者關閉 –help 查看幫助
centos7 :
systemctl is-enabled atd :查看atd下次啟動是否自動啟動
systenctl enabled atd : 下次啟動自動啟動
systenctl disable atd : 下次啟動不自動啟動
at time :命令格式,后面跟時間,ctrl+d 結束
at -l : 查看計劃任務
at -d #: 刪除指定的計劃任務編號
at -c #: 查看任務計劃內容, 目錄在 /var/spool/at/
at -f *.text time: 把多個任務計劃寫到文件調用
at -m : 當任務 被完成之后,將給用戶發送郵件,即使沒有標準輸出
計劃任務結果以郵件形式發送,建議使用重定向解決 >/dev/null
同時間的計劃任務支持并行運行。
at.deny 和at.allow /et/at.deny 默認/etc/at.allow 不存在
at.deny 黑名單,要生效的前提,at.allow不存在,白名單的優先級最高
at.allow 白名單,只有白名單的用戶才可能執行at,默認不存在,如果存在,at.deny失效,優先級高
如果都不存在,只有root可以執行at
如果 兩個文件都不存在有 ,只有 root 行 可以執行 at 命令
周期性任務計劃:
cron : 和at一樣,需要先查詢清楚路徑和是否啟動服務,或者開機啟動
rpm -qa cron* : 可以用通配符搜索;
確保crond 守護處于運行狀態:
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
? 計劃周期性執行的任務提交給crond ,到指定時間會自動運行
系統cron 任務:系統維護作業
/etc/crontab
用戶cron 任務:
crontab 命令
? 日志:/var/log/cron
周期性計劃對符號敏感,比如%,所以建議調用腳本,否則需要加單引號;
vim /etc/crontab
時間表示法:
? (1) 特定值
給定時間點有效取值范圍內的值
? (2) *
給定時間點上有效取值范圍內的所有值
表示 “每…”
? (3) 離散取值
#,#,#
? (4) 連續取值
#-#
? (5) 在指定時間范圍上, 定義步長
/#: #即為步長
? 示例:每3小時echo 命令
0 */3 * * * centos /bin/echo “howdy!”
一般來說,幾月幾號和周幾一般不同時出現,如果都出現,表示或者的關系,都會執行
@reboot Run once after reboot :表示下次開機運行
? @yearly 0 0 1 1 *
? @annually 0 0 1 1 *
? @monthly 0 0 1 * *
? @weekly 0 0 * * 0
? @daily 0 0 * * *
? @hourly 0 * * * *
系統的計劃任務:
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 腳本
/etc/cron.daily/ 腳本
/etc/cron.weekly/ 腳本
/etc/cron.monthly/ 腳本
原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/71581