進程概念mysql
內核的功用:進程管理,文件系統,網絡功能,內存管理,驅動程序,安全功能等 process:運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID 號碼被用來標記各個進程 UID,GID和SELinux語境決定對文件系統的存取和訪問權限一般從執行進程的用戶來繼承 存在生命週期 task struct:linux內核存儲進程信息的數據結構格式 task list:多個任務的task struct組成的鏈表 進程建立: init:第一個進程 父子關係 進程:都由其父進程建立,Cow fork() ,cione()
進程的基本狀態linux
建立狀態:進程在建立時須要申請一個空白PCB(process control block進程控 制塊),向其中填寫控制和管理進程的信息,完成資源分配。 若是建立工做沒法完 成,好比資源沒法知足,就沒法被調度運行,把此時進程所處狀態稱爲建立狀態 就緒狀態:進程已準備好,已分配到所需資源,只要分配到CPU就可以當即運行 執行狀態:進程處於就緒狀態被調度後,進程進入執行狀態 阻塞狀態:正在執行的進程因爲某些事件(I/O請求,申請緩存區失敗)而暫時 沒法運行,進程受到阻塞。在知足請求時進入就緒狀態等待系統調用 終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。沒法再執行
進程的基本狀態ios
建立狀態:進程在建立時須要申請一個空白PCB(process control block進程控 制塊),向其中填寫控制和管理進程的信息,完成資源分配。 若是建立工做沒法完 成,好比資源沒法知足,就沒法被調度運行,把此時進程所處狀態稱爲建立狀態 就緒狀態:進程已準備好,已分配到所需資源,只要分配到CPU就可以當即運行 執行狀態:進程處於就緒狀態被調度後,進程進入執行狀態 沒法運行,進程受到阻塞。在知足請求時進入就緒狀態等待系統調用 終止狀態:進程結束,或出現錯誤,或被系統終止,進入終止狀態。沒法再執行
狀態之間轉換六種狀況nginx
運行——>就緒:1,主要是進程佔用CPU的時間過長,而系統分配給該進程佔 用CPU的時間是有限的;2,在採用搶先式優先級調度算法的系統中,當有更高 優先級的進程要運行時,該進程就被迫讓出CPU,該進程便由執行狀態轉變爲 就緒狀態。 就緒——>運行:運行的進程的時間片用完,調度就轉到就緒隊列中選擇合適 的進程分配CPU 運行——>阻塞:正在執行的進程因發生某等待事件而沒法執行,則進程由執 行狀態變爲阻塞狀態,如發生了I/O請求 阻塞——>就緒:進程所等待的事件已經發生,就進入就緒隊列 如下兩種狀態是不可能發生的: 阻塞——>運行:即便給阻塞進程分配CPU,也沒法執行,操做系統在進行調 度時不會從阻塞隊列進行挑選,而是從就緒隊列中選取 就緒——>阻塞:就緒態根本就沒有執行,談不上進入阻塞態
進程優先級算法
進程優先級: 系統優先級:數字越小,優先級越高 0-139(CentOS4,5) 各有140個運行隊列和過時隊列 0-98,99(CentOS6) 實時優先級: 99-0 值最大優先級最高 nice值:-20到19,對應系統優先級100-139或99 Big O:時間複雜度,用時和規模的關係 O(1), O(logn), O(n)線性, O(n^2)拋物線, O(2^n)
進程相關概念sql
進程內存: Page Frame: 頁框,用存儲頁面數據,存儲Page 4k LRU:Least Recently Used 近期最少使用算法,釋放內存 物理地址空間和線性地址空間 MMU:Memory Management Unit負責轉換線性和物理地址 TLB:Translation Lookaside Buffer 翻譯後備緩衝器,用於保存虛擬地址和物理地址 映射關係的緩存 IPC: Inter Process Communication 同一主機: signal:信號 shm: shared memory semaphore:信號量,一種計數器 不一樣主機:socket: IP和端口號 RPC: remote procedure call MQ:消息隊列,Kafka,ActiveMQ
進程狀態apache
Linux內核:搶佔式作任務 進程類型: 守護進程:daemon,再系統引導過程當中啓動的進程,和終端無關進程 前臺進程:跟終端相關,經過終端啓動的進程 注意:二者能夠相互轉換 進程狀態: 運行態:running 就緒態:ready 睡眠態: 可中斷:interruptable 不可中斷:uninterruptable 中止態:stopped,暫停於內存,但不會被天調度,除非手動啓動 僵死態:zombie,結束進程,父進程結束前子進程不關閉
系統管理工具編程
進程的分類: CPU-Bound:CPU密集型,非交互 IO-Bound:IO密集型,交互 Linux系統狀態的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup pstree命令: pstree - display a tree of processes ps: process state ps - report a snapshot of the current processes Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中
查看進程進程psvim
ps 支持三種選項: UNIX選項:如 -A -e BSD選項: 如a GNU選項 :如--help 選項:默認顯示當前終端的進程 a 選項包括全部終端中的進程 x 選項包括不連接終端的進程 u 選項顯示進程全部者信息 f 選項顯示進程樹,至關於 --forest k|--sort 屬性 對屬性排序,屬性前加- 表示倒序 o 屬性... 選項顯示定製的信息 pid cmd %cpu %mem L 顯示支持的屬性列表
PS常見選項centos
-C cmdlist 指令命令,多個命令用 ,分割 -L 顯示進程 -e 顯示全部進程,至關於——A -f 顯示完整格式程序信息 -F 顯示更完整的格式進程信息 -H 以進程層級格式顯示進程相關信息 -u userlist 指定有效的用戶ID或名稱 -U userlist 指定真正用戶ID或名稱 -g gid 或groupname 指定有效的gid或組名稱 -G gid或groupname 指定真正的gid 或組名稱 -p pid 顯示pid的進程 --ppid pid 顯示屬於pid的子進程 -M 顯示SELinux信息,至關於Z
PS輸出屬性
VSZ: Virtual memory SiZe,虛擬內存集,線性內存 RSS: ReSident Size, 常駐內存集 STAT:進程狀態 R:running S: interruptable sleeping D: uninterruptablesleeping T: stopped Z: zombie +: 前臺進程 l: 多線程進程 L:內存分頁並帶鎖 N:低優先級進程 <: 高優先級進程 s: session leader,會話(子進程)發起者
PS
ni: nice值 pri: priority 優先級 psr: processor CPU編號 rtprio: 實時優先級 示例: ps axo pid,cmd,psr,ni,pri,rtprio 經常使用組合: aux -ef -eFH -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
PS示例
ps示例 查詢你擁有的全部進程: ps -x 顯示指定用戶名(RUID)或用戶ID的進程: ps -fU apache ps -fu 48 顯示指定用戶名(EUID)或用戶ID的進程: ps -fu wang ps -fu 1000 查看以root用戶權限(實際和有效ID)運行的每一個進程: ps -U root -u root 列出某個組擁有的全部進程(實際組ID:RGID或名稱): ps -fG nginx 列出有效組名稱(或會話)所擁有的全部進程: ps -fg mysql ps -fG 27 經過進程ID來顯示所屬的進程: ps -fp 1234 以父進程ID來顯示其下全部的進程,如顯示父進程爲1154的全部進程: ps -f --ppid 1234 顯示指定PID的多個進程: ps -fp 1204,1239,1263 要按tty顯示所屬進程: ps -ft pst/0 以進程樹顯示系統中的進程如何相互連接: ps -e --forest 以進程樹顯示指定的進程 ps -f --forest -C sshd ps -ef --forest | grep -v grep | grep sshd 要顯示一個進程的全部線程,將顯示LWP(輕量級進程)以及NLWP(輕量級進 程數)列: ps -fL -C nginx 要列出全部格式說明符: ps L 查看進程的PID,PPID,用戶名和命令: ps -eo pid,ppid,user,cmd 自定義格式顯示文件系統組,ni值 開始時間和進程的時間: ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime 使用其PID查找進程名稱: ps -p 1244 -o comm= 要以其名稱選擇特定進程,顯示其全部子進程 ps -C sshd,bash 查找指定進程名全部的所屬PID,在編寫須要從std輸出或文件讀取PID的腳本時 這個參數頗有用: ps -C httpd,sshd -o pid= 檢查一個進程的執行時間 ps -eo comm,etime,user | grep nginx 查找佔用最多內存和CPU的進程: ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head 顯示安全信息: ps -eM ps --context 使用如下命令以用戶定義的格式顯示安全信息。 ps -eo euser,ruser,suser,fuser,f,comm,label 使用watch實用程序執行重複的輸出以實現對就程進行實時的監視,以下面的命 令顯示每秒鐘的監視 watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
進程優先級
進程優先級調整: 靜態優先級:100-139 進程默認啓動時的nice值爲0,優先級爲120 只有根用戶才能下降nice值(提升優先性) nice命令: nice [OPTION] [COMMAND [ARG]...] renice命令: renice [-n] priority pid... 查看: ps axo pid,comm,ni
搜索進程
最靈活:ps 選項 | 其它命令 按預約義的模式:pgrep pgrep [options] pattern -u uid: effective user,生效者 -U uid: real user,真正發起運行命令者 -t terminal: 與指定終端相關的進程 -l: 顯示進程名 -a: 顯示完整格式的進程名 -P pid: 顯示指定進程的子進程 按確切的程序名稱:/sbin/pidof pidof bash
系統工具
uptime 顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(一、五、10分 鐘的平均負載,通常不會超過1) 系統平均負載: 指在特定時間間隔內運行隊列中的平均進程數 一般每一個CPU內核的當前活動進程數不大於3,那麼系統的性能良好。若是每 個CPU內核的任務數大於5,那麼此主機的性能有嚴重問題 若是linux主機是1個雙核CPU,當Load Average 爲6的時候說明機器已經被 充分使用
進程管理工具
top:有許多內置命令: 排序: P:以佔據的CPU百分比,%CPU M:佔據內存百分比,%MEM T:累積佔據CPU時長,TIME+ 首部信息顯示: uptime信息:l命令 tasks及cpu信息:t命令 cpu分別顯示:1 (數字) memory信息:m命令 退出命令:q 修改刷新時間間隔:s 終止指定進程:k 保存文件:W top命令 欄位信息簡介 us:用戶空間 sy:內核空間 ni:調整nice時間 id:空閒 wa:等待IO時間 hi:硬中斷 si:軟中斷(模式切換) st:虛擬機偷走的時間 進程管理工具 選項: -d #: 指定刷新時間間隔,默認爲3秒 -b: 所有顯示全部進程 -n #: 刷新多少次後退出 htop命令:EPEL源 選項: -d #: 指定延遲時間; -u UserName: 僅顯示指定用戶的進程 -s COLUME: 以指定字段進行排序 子命令: s: 跟蹤選定進程的系統調用 l: 顯示選定進程打開的文件列表 a:將選定的進程綁定至某指定CPU核心 t: 顯示進程樹
內存空間
內存空間使用狀態: free [OPTION] -b 以字節爲單位 -m 以MB爲單位 -g 以GB爲單位 -h 易讀格式 -o 不顯示-/+buffers/cache行 -t 顯示RAM + swap的總和 -s n 刷新間隔爲n秒 -c n 刷新n次後即退出
內存工具
vmstat命令:虛擬內存信息 vmstat [options] [delay [count]] vmstat 2 5 procs: r:可運行(正運行或等待運行)進程的個數,和核心數有關 b:處於不可中斷睡眠態的進程個數(被阻塞的隊列的長度) memory: swpd: 交換內存的使用總量 free:空閒物理內存總量 buffer:用於buffer的內存總量 cache:用於cache的內存總量 swap: si:從磁盤交換進內存的數據速率(kb/s) so:從內存交換至磁盤的數據速率(kb/s) io: bi:從塊設備讀入數據到系統的速率(kb/s) bo: 保存數據至塊設備的速率 system: in: interrupts 中斷速率,包括時鐘 cs: context switch 進程切換速率 cpu: us:Time spent running non-kernel code sy: Time spent running kernel code id: Time spent idle. Linux 2.5.41前,包括IO-wait time. wa: Time spent waiting for IO. 2.5.41前,包括in idle. st: Time stolen from a virtual machine. 2.6.11前, unknown. 選項: -s: 顯示內存的統計數據 iostat:統計CPU和設備IO信息 示例:iostat 1 10 pmap命令:進程對應的內存映射 pmap [options] pid [...] -x: 顯示詳細格式的信息 示例:pmap 1 另一種實現: cat /proc/PID/maps
系統監控工具
glances命令:EPEL源 glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [t refresh] [-f file] [-o output] 內建命令: a Sort processes automatically l Show/hide logs c Sort processes by CPU% b Bytes or bits for network I/O m Sort processes by MEM% w Delete warning logs p Sort processes by name x Delete warning and critical logs i Sort processes by I/O rate 1 Global CPU or per-CPU stats d Show/hide disk I/O stats h Show/hide this help screen f Show/hide file system stats t View network I/O as combination n Show/hide network stats u View cumulative network I/O s Show/hide sensors stats q Quit (Esc and Ctrl-C also work) y Show/hide hddtemp stats 經常使用選項: -b: 以Byte爲單位顯示網卡數據速率 -d: 關閉磁盤I/O模塊 -f /path/to/somefile: 設定輸入文件位置 -o {HTML|CSV}:輸出格式 -m: 禁用mount模塊 -n: 禁用網絡模塊 -t #: 延遲時間間隔 -1:每一個CPU的相關數據單獨顯示 C/S模式下運行glances命令 服務器模式 glances -s -B IPADDR IPADDR: 指明監聽的本機哪一個地址 客戶端模式: glances -c IPADDR IPADDR:要連入的服務器端地址 dstat命令:系統資源統計,代替vmstat,iostat dstat [-afv] [options..] [delay [count]] -c: 顯示cpu相關信息 -C #,#,...,total -d: 顯示disk相關信息 -D total,sda,sdb,... -g:顯示page相關統計數據 -m: 顯示memory相關統計數據 -n: 顯示network相關統計數據 -p: 顯示process相關統計數據 -r: 顯示io請求相關的統計數據 -s: 顯示swapped相關的統計數據 --tcp --udp --unix --raw --socket --ipc --top-cpu:顯示最佔用CPU的進程 --top-io: 顯示最佔用io的進程 --top-mem: 顯示最佔用內存的進程 --top-latency: 顯示延遲最大的進程
iotop
iotop命令是一個用來監視磁盤I/O使用情況的top類工具iotop具備與top類似的UI,其 中包括PID、用戶、I/O、進程等相關信息,可查看每一個進程是如何使用IO iotop輸出 第一行:Read和Write速率總計 第二行:實際的Read和Write速率 第三行:參數以下: 線程ID(按p切換爲進程ID) 優先級 用戶 磁盤讀速率 磁盤寫速率 swap交換百分比 IO等待所佔的百分比 線程/進程命令 iotop經常使用參數 -o, --only只顯示正在產生I/O的進程或線程,除了傳參,能夠在運行過程當中按o 生效 -b, --batch非交互模式,通常用來記錄日誌 -n NUM, --iter=NUM設置監測的次數,默認無限。在非交互模式下頗有用 -d SEC, --delay=SEC設置每次監測的間隔,默認1秒,接受非×××數據例如1.1 -p PID, --pid=PID指定監測的進程/線程 -u USER, --user=USER指定監測某個用戶產生的I/O -P, --processes僅顯示進程,默認iotop顯示全部線程 -a, --accumulated顯示累積的I/O,而不是帶寬 -k, --kilobytes使用kB單位,而不是對人友好的單位。在非交互模式下,腳本 編程有用 iotop經常使用參數和快捷鍵 -t, --time 加上時間戳,非交互非模式 -q, --quiet 禁止頭幾行,非交互模式,有三種指定方式 -q 只在第一次監測時顯示列名 -qq 永遠不顯示列名 -qqq 永遠不顯示I/O彙總 交互按鍵 left和right方向鍵:改變排序 r:反向排序 o:切換至選項--only p:切換至--processes選項 a:切換至--accumulated選項 q:退出 i:改變線程的優先級
lsof
Lsof:list open files查看當前系統文件的工具。在linux環境下,一切皆文件,用戶通 過文件不只能夠訪問常規數據,還能夠訪問網絡鏈接和硬件如傳輸控制協議 (TCP) 和 用戶數據報協議 (UDP)套接字等, 系統在後臺都爲該應用程序分配了一個文件描述符 命令參數 -a:列出打開文件存在的進程 -c<進程名>:列出指定進程所打開的文件 -g:列出GID號進程詳情 -d<文件號>:列出佔用該文件號的進程 +d<目錄>:列出目錄下被打開的文件 +D<目錄>:遞歸列出目錄下被打開的文件 -n<目錄>:列出使用NFS的文件 -i<條件>:列出符合條件的進程(四、六、協議、:端口、 @ip ) -p<進程號>:列出指定進程號所打開的文件 -u:列出UID號進程詳情 -h:顯示幫助信息 -v:顯示版本信息。 進程管理 查看由登錄用戶啓動而非系統啓動的進程 lsof /dev/pts1 指定進程號,能夠查看該進程打開的文件 lsof -p 9527 文件管理 查看指定程序打開的文件 lsof -c httpd 查看指定用戶打開的文件 lsof -u root | more 查看指定目錄下被打開的文件 lsof +D /var/log/ lsof +d /var/log/ 參數+D爲遞歸列出目錄下被打開的文件,參數+d爲列出目錄下被打開的文件 網絡管理 查看全部網絡鏈接 lsof -i –n lsof -i@127.0.0.1 經過參數-i查看網絡鏈接的狀況,包括鏈接的ip、端口等以及一些服務的鏈接狀況 例如: sshd等。也能夠經過指定ip查看該ip的網絡鏈接狀況 查看端口鏈接狀況 lsof -i :80 -n 經過參數-i:端口能夠查看端口的佔用狀況,-i參數還有查看協議,ip的鏈接狀況等 查看指定進程打開的網絡鏈接 lsof -i –n -a -p 9527 參數-i、-a、-p等,-i查看網絡鏈接狀況,-a查看存在的進程,-p指定進程 查看指定狀態的網絡鏈接 lsof -n -P -i TCP -s TCP:ESTABLISHED -n:no host names, -P:no port names,-i TCP指定協議,-s指定協議狀態經過多個參數能夠 清晰的查看網絡鏈接狀況、協議鏈接狀況等 恢復刪除文件 lsof |grep /var/log/messages rm -f /var/log/messages lsof |grep /var/log/messages cat /proc/653/fd/6 cat /proc/653/fd/6 > /var/log/messages
進程管理工具
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) 信號完整名稱:SIGHUP (3) 信號的簡寫名稱:HUP 進程管理工具 按PID:kill [-SIGNAL] pid … kill –n SIGNAL pid;kill –s SIGNAL pid 按名稱:killall [-SIGNAL] comm… 按模式:pkill [options] pattern -SIGNAL -u uid: effective user,生效者 -U uid: real user,真正發起運行命令者 -t terminal: 與指定終端相關的進程 -l: 顯示進程名(pgrep可用) -a: 顯示完整格式的進程名(pgrep可用) -P pid: 顯示指定進程的子進程
做業管理
Linux的做業控制 前臺做業:經過終端啓動,且啓動後一直佔據終端 後臺做業:可經過終端啓動,但啓動後即轉入後臺運行(釋放終端) 讓做業運行於後臺 (1) 運行中的做業: Ctrl+z (2) 還沒有啓動的做業: COMMAND & 後臺做業雖然被送日後臺運行,但其依然與終端相關;退出終端,將關閉後臺做業。若是但願 送日後臺後,剝離與終端的關係 nohup COMMAND &>/dev/null & 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任務
包:at at命令: 經常使用選項: -V 顯示版本信息 -l 列出指定隊列中等帶運行的做業,至關於atq -d 刪除指定的做業,至關於atrm -c 查看具體做業任務 -f /path/file 指定的文件中讀取任務 注意:做業執行命令的結果的標準輸出和錯誤以郵件通知給相關用戶 TIME :定義出什麼時間進行at這項任務的時間 HH:MM [YYYY-mm-dd] noon, midnight, teatime(4pm) tomorrow now+#{minutes,hours,days, OR weeks} 他的定時任務放在了 /var/spool/at下 例:at 11:27 at> wall "dang" at> <EOT> job 4 at 2018-08-29 11:27 退出時按Ctrl+d 例:at now+1minutes [這是一分鐘後執行] at> wall "dang" at> <EOT> job 4 at 2018-08-29 11:27
at時間格式
HH:MM 02:00 在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務 HH:MM YYYY-MM-DD 02:00 2016-09-20 規定在某年某月的某一天的特殊時刻進行該項任務 HH:MM[am|pm] [Month] [Date] 04pm March 17 17:20 tomorrow HH:MM[am|pm] + number [minutes|hours|days|weeks] 在某個時間點再加幾個時間後才進行該項任務 now + 5 min 02pm + 3 days
at任務
執行方式: 1)交互式 2)輸入重定向 3)at –f 文件 依賴與atd服務,須要啓動才能實現at任務 at隊列存放在/var/spool/at目錄中 /etc/at.{allow,deny}控制用戶是否能執行at任務 白名單:/etc/at.allow【默認沒有手工鍵】 默認不存在,只有該文件中的用戶才能執行at命令 例:把dang 加到這個文件中,他就有at權限了 黑名單:/etc/at.deny【默認有】 例:把dang 加到這個文件中,他就沒有at權限了 默認存在,拒絕該文件中用戶執行at命令,而沒有在 at.deny 文件中的使用者則可執行 若是兩個文件都不存在,只有 root 能夠執行 at 命令 若是兩個文件都存在,白名單有限期更高
週期性任務計劃
週期性任務計劃:cron 相關的程序包: cronie: 主程序包,提供crond守護進程及相關輔助工具 cronie-anacron:cronie的補充程序,用於監控cronie任務執行情況,如 cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨後啓動一次 此任務 crontabs:包含CentOS提供系統維護任務
計劃任務
確保crond守護處於運行狀態: CentOS 7: systemctl status crond CentOS 6: service crond status 計劃週期性執行的任務提交給crond,到指定時間會自動運行 系統cron任務:系統維護做業 /etc/crontab 用戶cron任務: crontab命令 日誌:/var/log/cron tail -f /var/log/cron 能夠跟蹤/var/log/cron 的日誌 計劃任務 系統cron任務:/etc/crontab 註釋行以 # 開頭 詳情參見 man 5 crontab # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 例如:晚上9點10分運行echo命令 10 21 * * * wang /bin/echo "Howdy!" 計劃任務 時間表示法: • (1) 特定值 給定時間點有效取值範圍內的值 • (2) * 給定時間點上有效取值範圍內的全部值 表示「每...」 • (3) 離散取值 #,#,# • (4) 連續取值 #-# • (5) 在指定時間範圍上,定義步長 /#: #即爲步長 時間格式 @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 * * * * 示例:每3小時echo和wall命令 0 */3 * * * centos /bin/echo 「howdy」;/usr/bin/wall 「welcome to Magedu!」 計劃任務 • 系統的計劃任務: /etc/crontab 配置文件 /etc/cron.d/ 配置文件 兩個多能夠:例:vim /etc/cron.d/dang[而後把配置文件寫進去] /etc/cron.hourly/ 腳本 /etc/cron.daily/ 腳本 /etc/cron.weekly/ 腳本 /etc/cron.monthly/ 腳本
anacron系統
運行計算機關機時cron不運行的任務,centos6之後取消anacron服務,由crond服務管理 對筆記本電腦,臺式機,工做站,偶爾要關機的服務器及其餘不一直開機的系統頗有用也很重要 配置文件:/etc/anacrontab,負責執行/etc/ cron.daily /etc/cron.weekly /etc/cron.monthly中系統任務 • 字段1:若是在這些日子裏沒有運行這些任務…… • 字段2:在從新引導後等待這麼多分鐘後運行它 • 字段3:任務識別器,在日誌文件中標識 • 字段4:要執行的任務 由/etc/cron.hourly/0anacron執行 當執行任務時,更新/var/spool/anacron/cron.daily 文件的時間戳
管理臨時文件
CentOS6使用/etc/cron.daily/tmpwatch定時清除臨時文件 CentOS7使用systemd-tmpfiles-setup服務實現 配置文件: /etc/tmpfiles.d/*.conf /run/tmpfiles.d/*.conf /usr/lib/tmpfiles/*.conf /usr/lib/tmpfiles.d/tmp.conf d /tmp 1777 root root 10d d /var/tmp 1777 root root 30d 命令: systemd-tmpfiles –clean|remove|create configfile
用戶計劃任務
crontab命令定義 每一個用戶都有專用的cron任務文件: /var/spool/cron/USERNAME crontab命令: crontab [-u user] [-l | -r | -e] [-i] -l: 列出全部任務 -e: 編輯任務 -r: 移除全部任務 -i:同-r一同使用,以交互式模式移除指定任務 【就是提示一下】 -u user: 僅root可運行,指定用戶管理cron任務 控制用戶執行計劃任務: /etc/cron.{allow,deny} 【allow 白名單 ,deny 黑名單 用法和at的同樣】 cd /var/spool/cron/ 定時任務寫完之後 會放在一個目錄下 , root能看 root查看用戶的定時任務 roo -i -u dang[查看dang 用戶的定時任務] crontab -e 要想帶顏色 寫入文件 vim /etc/profile.d/jiu.sh :內容爲export EDITOR=vim