Linux工作調度的種類
1、例行性的工作,每隔一定週期需要辦的事項,通過crontab設置
2、突發性工作,at可以處理僅執行一次就結束調度的命令
Linux常見的例行性工作
- 進行日誌文件的輪替(log rotate)
- 日誌文件分析(logwatch任務)
- 更新locate的數據庫
- RPM軟件日誌文件的新建與更新
- 刪除臨時文件
crontab解析
crontab -e 編輯例行性工作,針對用戶而言,實質上是執行/usr/bin/crontab這個文件
對於系統的例行性文件,需要以root的身份編輯/etc/crontab文件
cron這個服務的最低檢測限制是分鐘,cron每分鐘會讀取一次/etc/crontab和/var/spool/cron裏面的數據內容
anacron用於處理非24小時一直啓動的Linux系統的crontab執行,它會檢測停機期間應該進行但沒有執行的crontab任務並將該任務執行一遍,執行完畢後則自動停止。
進程(process)
在Linux系統中,觸發任何一個事件時,系統都會將之定義成一個進程,並給予其一個PID,依據觸發該進程的用戶和相關屬性關係,給予該PID一組有效的權限設置。
程序和進程
程序(二進制文件)一般存放在磁盤中,通過用戶的執行觸發,觸發後則會加載到內存中成爲一個個體,從而成爲進程。不同的用戶取得的PID不同,從而衍生的進程也不同,權限也不同。當這個進程在進行其他工作而衍生出來的其他進程在一般狀態下也會沿用這個進程的相關權限。
進程就是一個正在運行中的程序,它的內容包括程序代碼(二進制文件)、程序所需數據、執行者的權限與屬性
過程調用的流程
父進程 ——> 以fork的方式複製一個暫存進程,僅僅是PID與父進程不同 ——> 暫存進程以exec的方式加載實際要執行的程序成爲新的進程,即子進程
常駐在內存當中的進程
這類型的進程啓動後便在後臺一直持續不斷地運行,一般負責一些系統所提供地功能以服務用戶各項任務
工作管理(job control)
用在bash環境下,當登陸系統取得bash shell之後,在單一終端機下同時進行多個工作的行爲管理。僅限於同一個bash下的不同工作
& 可將命令直接丟到後臺運行,此時bash會給予該命令一個工作號碼,在後臺執行的任務如果有輸出數據最好是採用數據流重定向輸出到某個文件,防止其輸出到前臺屏幕打斷前臺執行的任務
fg 將後臺工作拿到前臺來執行
bg 將後臺暫停的工作繼續運行
kill 將工作進程結束,幾個參數:1 — 重新讀取一次參數配置文件;9 — 強制刪除一個工作;15 — 以正常的程序方式終止一項工作
進程管理
ps -l 查看當前bash操作環境下的進程信息
ps aux 查看系統所有進程
top 持續監測進程運行的狀態
列出的進程信息主要有:
F —— 進程標誌(Process Flags),說明進程的權限
S —— 進程狀態,RSDTZ(運行、可喚醒的睡眠狀態、不可喚醒的睡眠狀態、停止、殭屍狀態)
UID、PID、PPID —— 擁有該進程的UID、進程PID、進程的父進程的PID
C —— CPU的利用率,單位爲百分比
PRI/NI —— 進程被CPU執行的優先級
ADDR —— 進程在內存的哪個部分
SZ —— 進程用掉多少內存
WCHAN —— 目前進程是否在運行
TIME —— 進程實際花費CPU運行的時間
殭屍進程 :進程已經執行完畢或者因故要終止了,但是其父進程卻無法將其完全結束掉,而造成該進程一直在內存中