linux系統引導,管理進程,計劃任務
先了解下linux的引導流程:
開機自檢-------MBR引導--------GRUB引導--------加載linux內核--------加載init進程初始化
開機自檢:即BIOS 對硬件進行檢查
MBR引導:根據硬盤第一個扇區裏的MBR(master Boot Record 主引導記錄)設置,將系統控制權交給包含操作系統引導文件的分區,或者直接根據MBR裏記錄的引導性能系調用啓動菜單(如GRUB)
GRUB引導:顯示啓動菜單給用戶,加載linux內核,然後將控制權交給內核
加載內核:啓動操作系統(linux默認內核文件爲 /boot/vmlinuz-xxxxxxx)
INIT進程:初始化操作系統--------讀取/etc/inittab,根據其內容首先執行/etc/rc.d/rc.sysinit,並通過/etc/rc.d/rc腳本來決定啓動那些服務和進程,最後運行終端程序/sbin/mingetty,等待用戶登錄(登錄過程由/bin/login 程序負責驗證)
系統初始化進程文件:
init進程:第一個啓動的進程,所以PID(進程ID)永遠爲1
/etc/inittab:裏面的配置文本每行基本格式如:四個字段,:號分隔意思爲:
標記:運行級別:動作:程序或腳本
runlevels運行級別:
0:關機狀態
1:單用戶模式
2:字符界面多用戶模式(不支持網絡)
3:字符界面多用戶模式(完整模式)
4:未分配模式
5:圖形界面模式
6:重新啓動
action---動作類型:
initdefault:設置系統默認運行級別
sysinit: 設置系統初始化的操作腳本
wait: init進程等待此行的配置完成後,在往下進行
ctrlaltdel: 設置用戶按CTRL+ALT+Delete組合鍵的操作
powerfail: 設置斷電(使用不間斷電源)時採取的動作
powerwait: 設置恢復供電時纔去的動作
repawn: 一旦該行的配置對應的進程被終止,立即重啓該進程
process: 程序或腳本字段
/etc/rc.d/rc.sysinitinit進程所調用的系統初始化腳本,主要設置網絡,主機名,加載文件系統,設置時鐘等(如啓用磁盤配額功能就在該腳本中運行)
/etc/rc.d/rc 通過制定不同的級別參數來加載及終止不同的系統服務
/etc/rc.d/rcX.d/ 在/etc/rc.d/下有/ect/rc.d/rc0.d------到------/etc/rc.d/rc6.d/ 7個目錄,都被/etc/rc.d/rc所調用,這些目錄裏記錄了在以自己文件名(0---6)啓動的系統級別時,所要運行的一些系統服務,其中以S開頭表示運行,以K開頭表示終止,中間的數字表示啓動或者終止服務的執行順序,目錄中的文件鏈接了/etc/rc.d/init.d/目錄中的原始服務啓動腳本
/etc/rc.d/init.d/ 裏面的系統服務腳本都可直接執行,如start reload stop restart 等,也可用service調用
service httpd start 啓動http服務
關於服務:能終止不殺死
能加載不重啓
/etc/rc.d/rc.local/ 一個額外的系統啓動控制文件,主要爲管理員自行設置啓動命令提供了一種途徑
運行級別控制:
runlevel顯示系統運行級別,如之前未切換過運行級別,第一列將顯示“N”
init用於設置系統的運行級別
init 3 進入字符界面的完整模式
init 0 關機
init 6 重啓
設置系統服務在不同運行級別中的狀態:
ntsysv調出一個交互式界面,用於集中配置系統服務的啓動狀態
ntsysv --level 35 同時對運行級別3,5 進行系統服務啓動狀態的設置
星號選中爲開機啓動,爲空是開機不啓動 F1 獲得該服務的詳細說明
chkconifg與ntsysv功能類似,對單一的服務設定較方便
--list 顯示所有服務的所有運行狀態(後跟服務名則顯示這一個服務狀態)
--level 35 服務名 on/off 在運行級別35中開啓或關閉該服務
缺少—level 35 選項時,默認在2345中都設置
進程管理>>
查看進程:
ps查看靜態進程的統計信息
-a 顯示當前終端所有進程,包括其他用戶進程,與-x 結合用,將顯示系統中所有進程信息
-u 使用以用戶名爲主的格式輸出信息
-x 顯示當前用戶在所有終端下的進程信息
-e 顯示系統內所有進程信息
-l 以長格式顯示
-f 使用完整格式顯示
各個字段的含義:
USER:啓動該進程的用戶賬號
PID:該進程在系統的ID號(唯一的)
%CPU:該進程佔用的CPU(百分比)
%MEM 該進程佔用的內存百分比
VSZ:佔用的虛擬內存
RSS:佔用的物理內存
TTY:在哪個終端運行(?表示未知或不需要終端)
SATA: 進程的狀態(S表示休眠,R表示運行,Z表示僵死,<表示高優先級,N表示低優先級,s表示父進程,+ 表示前臺運行)
START: 開始時間
TIME:佔用的CPU時間
COMMAND:啓動該進程的命令的名稱
top 查看進程的動態信息(默認3秒刷新一次)
按P:根據CPU佔用情況對進程列表進行排序
M:根據內存佔用情況對進程列表進行排序
N:根據啓動時間排序
h: 獲得幫助
q: 退出
k:殺死某一進程
pgrep查詢特定進程的信息
-U 針對某個用戶查詢
-t 針對某個終端查詢
-l 同時列出對應的進程名
pstree查看進程樹
-p 同時列出對應的PID
-u 列出對用的用戶名
-a 列出完整的命令信息
查看到了luojunyong用戶現在的操作,及對應PID
進程後臺運行:
有些耗時的進程,我們可以放在後臺運行,而不影響我們的繼續工作,我們可以加”&”號來改變進程的運行方式,如,cp–avf /media/ ./ &這樣這個任務就在後臺運行了
有時要用nohup命令表示不再終端屏幕上顯示
jobs幫助我們看到正在運行的進程 jobs –l 連同PID一同顯示出來
終止進程:
kill 終止進程
-9 強制殺死
killall終止系統中多個形同名字的進程時用此很方便
-9 強制殺死
pkill根據各種屬性來終止進程
-9 強制殺死
-U 指定用戶
-t 指定終端
killall殺同名進程
已經無進程了,pkill可以根據各種情況來選擇性的殺死
計劃任務管理
at 一次性計劃任務
首先包證atd服務的運行
確定現在的時間並加一個計劃任務:
最後按CTRL+D 來提交
可以看出已經執行了
atq查詢當前系統中的任務列表
atrm刪除當前系統中的任務列表
我們也可用 at now+5minutes 五分鐘後
at now+5hours 五小時後
at now+5days 五天後
at now+5weeks 五週後
at noon 中午12點
at midnight 晚上零點
at teatime 下午4點(下午茶)
等來指定任務計劃
上圖在午夜零點查看內存狀態並記錄
在3小時後查看CPU狀態並記錄
查看任務列表
刪除一個代號爲3的計劃任務
在次查看時,已經就剩一個任務計劃了
列隊裏能查看具體內容:
crontab週期性任務設置
確保服務運行狀態:
配置文件:
/etc/crontab系統任務配置文件
上面爲每行爲:
腳本用的shell類型
執行路徑
任務輸出信息發送到指定用戶信箱
執行任務計劃時所使用的主目錄
藍色字體爲範例:告訴我們格式應該寫成:分時天月周命令或腳本
/etc/cron*
上面的目錄分別放入我們指定的任務腳本到每天,每月,每小時,每星期各個目中去
/var/spool/cron/*
cron任務將被保存在上個目錄,文件名與對應的用戶賬號同名
crond進程會每分鐘都會檢查/etc/crontab /etc/cron.d /var/spool/cron/ 目錄,若發現有變更,他們就會被載入內存,所以添加任務計劃後並不需要重啓crond服務
crontab管理用戶的計劃任務
-e 編輯計劃任務列表
-u 指定管理的計劃任務屬於哪個用戶,默認只針對當前用戶(自己) (root權限)
-l 列表顯示計劃任務
-r 刪除計劃任務
上面爲沒到星期天的晚上8點零1分則執行後面的命令
符號 * 表示取值範圍中的任意時間
“-”減號表示一個連續範圍
“,”逗號表示一個間斷的不連續範圍
“/”斜槓表示時間頻率如 */3 表示每隔 3
來做一個案例:
每天早上7:30自動開啓sshd服務,22點50時關閉sshd服務
每隔五天清空一次FTP服務器公共目錄/var/ftp/pub/中的數據
每週六的7:30時重啓系統中的http服務
每週一週三週五的下午17:30 ,使用tar命令自動備份/etv/httpd目錄
查看指定用戶的任務計劃:
通過隊列查看:
刪除指定用戶的任務計劃
刪除後,任務計劃列表爲空