第13章,進程和計劃任務

更多內容請點擊:mysql

Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~) 
linux

https://blog.51cto.com/13683480/2095439ios

 

第13章,進程和計劃任務nginx


本章內容:算法

               進程相關概念sql

               進程及系統相關工具apache

               計劃任務vim

        

進程概念:centos

               內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等緩存

               process:       運行中的程序的一個副本,是被載入內存的一個指令集合

                     進程ID(PID)號碼被用來標記各個進程

                     UID、GID、和SElinux語境決定對文件系統的存取和訪問權限

                     一般從執行進程的用戶來繼承

                     存在生命週期

               task struct:   Linux內核存儲進程信息的數據結構格式

               task list:              多個任務的task  struct組成的鏈表

               進程建立:

                     init/systemd:  第一個進程

                     進程都是由其父進程建立, CoW 寫時複製機制

                             fork()生成子進程,clone()生成子進程或者兄弟進程

 

               進程的基本狀態:

                     建立狀態:

                             進程在建立時須要申請一個空白PCB(process  control block進程控制塊)

                             向其中填寫控制和管理進程的信息,完成資源分配。若是建立工做沒法

                             完成,好比資源沒法知足,就沒法被調度運行、把此時進程所處狀態稱爲

                            建立狀態

                     就緒狀態:

                             進程已準備好,已分配到所需資源,只要分配到CPU舊可以當即運行

                     執行狀態:

                             就緒狀態被調度後,進程進入執行狀態

                     阻塞狀態:

                             正在執行的進程因爲某些事件(io請求,申請緩存區失敗)而暫時沒法運行,

                             進程受到阻塞。在知足請求時進入就緒狀態等待系統調用

                     終止狀態:

                             進程結束,或出現錯誤,或被系統終止,進入終止狀態,沒法再執行

                    

                     ------       許可        ------             時間片完 ------    釋放           ----

                  | 建立  |    ————————>> | 就緒  |<<=============>>| 執行 |————————>> |終止|

                     ------                         ------    進程調度           ------                        ----

                     o                                   |                                              |

                     o                                   |    I/O完成   ------    I/O請求|

                     o                                 <<————————| 阻塞 |<<————————

 

                      就緒狀態沒法直接變成阻塞狀態,先執行

                      阻塞狀態沒法直接變成執行狀態,先就緒

 

進程優先級:

               系統優先級:

                     0-139     centos4 5

                            各有140個運行隊列和過時隊列

                     0-98,99   centos6

               實時優先級:99-0        值越大優先級最高

               nice值:-20到19,對應系統優先級100-139(centos45) 或99(centos6)

               

               Big O:時間複雜度,用時和規模的關係

                     O(1),O(logn),O(n)線性,O(n^2)拋物線,O(2^n)

                    

               進程優先級調整:

                     靜態優先級:100-139

                     進程默認啓動時的nice值爲0,優先級爲120

                     只有root用戶才能下降nice值(提升優先級)

 

nice:    

               nice [option][cmd [arg]]

                     如:nice -n 10 vim & 將vim的優先級下降10

                            nice -n -15 vim     將vim的優先級提升15並執行

               

renice:

               renice [-n] priority

               如:

                     renice 0|5|-5 -p 93074  將pid爲93074的ni 設爲0|5|-5

                     renice 10 -u root         將用戶root的進程ni設置爲10

                    

進程相關概念:

               進程內存:

                            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

               

               進程類型:

                            守護進程:daemon,在系統引導過程當中啓動的進程,和終端無關進程

                             前臺進程:跟終端相關,經過終端啓動的進程

                             注意:二者可相互轉化

               

               進程狀態

                            運行態:        running

                            就緒態:        ready

                            睡眠態:      

                                    可中斷:    interruptable

                                    不可中斷:uninterruptable

                            中止態:        stopped,暫停於內存,但不會被調度,除非手動啓動

                            僵死態:       zombie,僵死進程

               

               進程分類:

                             CPU-Bound:       cpu密集型,非交互,如加密解密

                             IO-Bound:   IO密集型,交互

                             

系統管理工具:

               Linux系統狀態的查看及管理工具:

                     pstree,ps,pidof,top,htop,glance,pmap,vmstat,

                     dstat,kill,pkill,job,bg,fg,nohup

               

pstree:

               pstree -p

               Linux 系統各進程的相關信息均保存在/proc/PID目錄下的各文件中

               

ps:

               ps [option]...           查看進程狀態信息

               支持三種風格選項:

                            UNIX選項     -A  -e

                            BSD選項              a u  x

                            GNU選項              --help

               ps:        默認顯示當前終端中的進程

                            a                                  全部終端中的進程

                            x|-x                       全部非終端進程

                            u                                  顯示進程全部者的信息

                            f|--forest              顯示進程樹

                             k|--sort  [-]屬性      對屬性排序,-表示倒序

                                                                       centos6不支持%cpu %mem排序

                            o 屬性1,屬性2..        指定須要顯示的信息

                                    如:pid,cmd,%cpu,%mem

                            L                                  支持的屬性列表

                    

                            -C cmd1,cmd2,..            指定命令

                            -L                                顯示線程

                            -e|-A                           顯示全部進程

                            -f                                 顯示完成格式進程信息

                            -F                                 顯示更完整格式的進程信息

                            -H                               以進程層級格式顯示進程相關信息

                            -u userlist                    指定有效的用戶ID或名稱 euid

                            -U userlist                    指定真正的用戶ID或名稱 ruid

                            -g gid或groupname   指定有效的gid或組     egid

                            -G gid或groupname    ruid

                            -p pid                          顯示pid的進程

                            --ppid pid                   顯示pid的子進程信息

                            -M|Z                            顯示SElinux的信息,至關於Z

                            -C cmd -o pid=           經過cmd查看pid

                            -p pid -o comm=        經過pid查看comm

               

               alias ps1='ps xo user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,pri,nice,cmd'        

               

               輸出屬性:

                            VSZ:     Virtual memmory  size,虛擬內存集,線性內存

                            RSS:     Rdsident Size,     常駐內存集,實際佔用內存

                            STAT:   進程狀態

                                   R:           running

                                    S:          interrupttable sleeping 可中斷睡眠

                                    D:         uninterrupttable sleeping     不可中斷睡眠

                                    T:          stopped         中止

                                    Z:          zombie

                                   +            前臺進程

                                   l             多線程進程

                                   L            內存分頁並帶鎖

                                   N            低優先級進程

                                   <            高優先級進程

                            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

               

                     顯示指定用戶名(RUID)或用戶ID的進程

                            ps -fU  apache

                            ps -fU 48      

                                    此處貌似用-u 也不錯,由於apache是系統用戶,結果同樣

                     顯示指定用戶名(EUID)或用戶ID的進程

                            ps -fu  wang

                            ps -fu     1000

                                    這裏用-U,結果就有可能不同了

                     查看以root用戶權限(實際和有效ID)運行的每一個進程:

                            ps -U root -u  root

                     列出某個組擁有的全部進程(實際組ID:RGID  或名稱)ps

                            ps -fG  nginx

                       列出有效組名稱(或會話)所擁有的全部進程:

                            ps -fg  mysql

                            ps -fg  27

                     經過進程id來顯示所屬的進程:

                            ps -fp 1234  

                     以父進程ID來顯示其下全部的進程,如顯示父進程爲1154的全部進程:

                            ps  -f/l --ppid  1154

                     顯示中PID的多個進程

                            ps -lp 6507 6508  6509...

                     要按tty 顯示所屬進程

                            ps -lt  pts/4

                     以進程樹顯示系統中的進程如何相互連接

                            ps -e --forest      ps auxf

                     以進程樹顯示指定的進程

                            ps f -f -C  sshd

                            ps -ef --forest  |grep -v grep |grep sshd

                      要顯示一個進程的全部線程,將顯示LWP(輕量級進程)以及NLMP(輕量級進程數)列:

                            ps -fL -C  httpd

                     要列出全部格式說明符:

                            ps  L

                    

                     查看進程的PID ppid 用戶名 和命令

                            ps -eo pid,ppid,user,cmd

                     自定義格式顯示文件系統組,ni值開始時間和進程的時間

                            ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime

                     使用其PID查找進程名稱

                            ps -p 1234 -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                   watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu f -mem%|head'

                    

                    

搜索進程:----------------------------------------------------------------

               ps 選項 | grep等其餘命令

               按預約義的模式:pgrep

pgrep:

               pgrep [options] pattern

                     -u uid            euid,有效用戶爲uid的全部進程 的pid

                     -U uid           Ruid,真實用戶爲uid的全部進程 的pid

                     -t termina      與指定終端相關的進程的pid

                     -l                  顯示進程名

                     -a                 顯示完成進程名(centos6 不支持)

                     -P pid            顯示指定進程的子進程

               

pidof       按確切的程序名稱查找

               piodof /bin/bash

 

系統工具:---------------------------------------------------------

uptime:    

               顯示當前時間,系統已啓動的時間,當前上線人數,系統平均負載(1/5/10分鐘  )

                    

               系統平均負載:

                             在特定時間間隔內運行隊列中的平均進程數

                            一般每一個cpu內核的當前活動進程數不大於3,那麼系統的性能良好。

                            若是每一個cpu內核的任務數大於5,那麼次主機的性能有嚴重問題

                            若是linux主機是1個雙核cpu,當load Average = 6  ,說明機器已經被充分使用

 

進程管理工具:------------------------------------------------------------------                             

top:

               內鍵命令:

                     排序:

                            p           以佔據的cpu百分比,%cpu

                            M          佔據內存百分比

                            T            累計佔據cpu時間,TIME+

                     首部信息顯示:

                            l                    uptime信息

                            t                    tasks及cpu信息

                            1(數字)     cpu分別顯示

                            m                  memory信息

                     退出命令                     q

                     修改刷新時間間隔       s

                     終止指定進程               k

                     保存文件:                   W

                     顯示完成cmd                      c

               欄位信息簡介

                     cpu:us 用戶空間,sy 內核空間,ni  調整nice時間,id 空閒時間

                             wa 等待IO時間,hi 硬中斷,si 軟中斷,st  被虛擬機偷走的時間

                             

               選線:

                            -d # 指定刷新時間間隔,默認爲3s

                            -b          所有顯示全部進程

                            -n # 刷新多少次後退出

                    

htop:

               選項:

                     -d #              指定延遲時間

                     -u                 僅顯示指定用戶的進程

                     -s COLUME   以指定字段進行排序

               排序:P M T

                     s     跟蹤選定進程的系統調用

                     l      顯示選定進程打開的文件列表

                     a     將選定的進程綁定至某指定CPU核心

                     t     顯示進程數

                     k     結束進程

                     q     退出

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,2,9,15

                            信號的完成名稱     SIGHUP

                            信號的簡寫名稱    HUP

               

               按PID:

                            kill [-signal]  pid

                            kill -n HUP pid      kill -s SIGHUP  pid

               按名稱:

                            killall [-signal]  command

               按模式:

                            pkill [options]  pattern

                                    -signal

                                   -u uid                  euser爲pid 的進程

                                   -U uid                  ruser爲pid 的進程

                                   -t  terminal            指定終端相關的進程

                                   -l  顯示進程名

                                   -P pid                  指定進程的子進程

                             

               

內存工具:-----------------------------------------------------------                  

free:

               free [option] 查看內存空間使用狀態

                     -b          以字節爲單位

                     -m         以MB爲單位

                     -g          以GB爲單位

                     -h          human 易讀格式

                     -o          不顯示-/+  buffers/cache 行

                     -t           顯示RAM+swap  的總和

                     -s n       刷新時間爲n秒

                     -c n       刷新n次後退出

                    

vmstat:

               vmstat [optins] [delay[count]]      虛擬內存以及磁盤io查詢

               vmstat 2 5             表示2秒刷新一次,一共刷5次

                     -m         查看內存具體使用狀況很是詳細

                     -s          內存統計信息

                     --help    使用幫助

        

               信息顯示:     

                     procs:    

                                   r      可運行(正在執行或等待運行)進程的個數,和核心數有關

                                   b    處於不可中斷睡眠態的進程個數(被阻塞的隊列的長度)

                      memory

                            swpd     交換內存使用總量

                            free 空閒物理內存總量

                            buffers cache  用於buffer/cache的內存總量

                     swap

                            si           從磁盤交換進內存的數據速率(kb/s)

                            so          從內存交換至磁盤的數據速率(kb/s)

                     io

                            bi           從塊設備讀入數據到內存的速率(kb/s)

                            bo          保存數據至塊設備的速率

                     system  

                            in: interrupts   中斷速率,包括時鐘

                            cs   context switch 進程切換速率

                     cpu

                            us 用戶空間,sy 內核空間,id 空閒時間,wa  等待時間 st 偷走時間

                    

iostat:

               統計cpu和設備io信息

               iostat 1 5       刷新顯示

               

pmap     進程對應的內存映射

                     pmap [options] pid..

                            -x    顯示詳細格式

                     如  pmap -x 1

               另一種實現:

                     cat  /proc/pid/maps

               

系統監控工具-----------------------------------------------------------

 

glances:

               glaces [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p  port]

                     [-P password] [--password]  [-t refresh] [-f file] [-o output]

               內鍵命令:

                     排序:    a     自動排序

                                   c     cpu%排序

                                   m   mem%排序

                                   p    按名稱排序

                                   i      按IO排序

                                   u    user排序

                                   t     network I/O

                                    

                     顯示/隱藏 左側窗口顯示

                                   d    disk 磁盤io信息

                                   f      file system stats,文件系統信息

                                   n    network stats       網絡信息

                                   s      Show/hide sensors  stats

                                   y     Show/hide hddtemp  stats

                                   l      Show/hide logs

                     其餘:

                                   b    網絡信息用bit爲單位

                                   w    Delete warning logs

                                   x      Delete warning and critical  logs

                            數字1     分別顯示單顆cpu

                                   h    help 幫助界面

                                   q    退出

               經常使用選線:

                            -b          =b以byte爲單位顯示網卡數據速率

                            -d          d 關閉磁盤IO模塊

                            -f file      設定輸入文件位置

                            -t #        延遲時間間隔

               

               C/S模式下雲心glances命令

               服務器模式:

                     glances -s -B  IP

               客戶端模式:

                     glances -c  IP

                    

dstat:  

               系統資源統計,代替vmstat iostat

               dstat [avf][options] [delay[count]]

               例如:

                     dstat -av 3 5 3秒一次刷新 一共刷新5次

               選項:    -c           cpu相關

                            -d          disk相關

                            -g          page相關

                            -m         mem相關

                            -n          net相關

                            -p          proc相關

                            -r          io 相關

                            -s          swap相關

               長選項     

                     --tcp  --udp  --unix   --raw  --socket  --ipc

                    

                      --top-cpu

                      --top-io

                      --top-mem

                     --top-latency 延遲最大的進程

                    

iotop:

               用來監視磁盤I/O使用情況的top類工具,具備與top類似的UI,其中包括

               PID、用戶、IO、進程等相關信息,可查看每一個進程是若是使用io

               

               iotop輸出信息:

                     第一行:       read 和write的速率總計

                     第二行:       實際的read和write速率

                     第三行:

                            TID/PID   :       線程id,按p轉換爲pid

                            PRIO:          優先級

                            USER:          用戶

                            DISK  READ: 磁盤讀速度

                            DISK  WRITE:磁盤寫速度

                            SWAPIN:     swap使用百分比

                            COMMAND:  進程命令

               選項:     

                            -o --only                    只顯示正在產生IO的進程, 運行中按o生效

                            -b --batch           非交互模式,通常用戶記錄日誌

                            -d # --delay=              刷新間隔默認1s  能夠爲小數 好比1.5

                            -n # --iter=          檢測次數,默認無限

                            -p PID   --pid=           指定檢測的進程

                            -u USER --user=         指定檢測某個用戶產生的IO

                            -P --processes            僅顯示進程,默認iotop顯示全部線程

                            -a  --accumulated 顯示累計的IO,而不是帶寬       交互a鍵

                            -k --kilobytes              使用KB單位

                            -t --time       加上時間戳,非交互式

                            -q --quit              禁止頭幾行,非交互式,有三種指定方式

                                   -q          只在第一次檢測時顯示列名

                                   -qq        永遠不顯示列名

                                   -qqq      用戶不顯示i/o彙總

                             

               交互式按鍵:

                            r                    反向排序

                            o                  切換至選線only

                            p                   切換至processes選線

                            a                   速率/帶寬切換

                            q                  退出

                            i                    改變線程的優先級

 

做業管理--------------------------------------------------------------------

               linux的做業控制:

                            前臺做業:    經過終端啓動,且啓動後一直佔據終端

                            後臺做業:     可經過終端啓動,但啓動後即轉入後臺運行(釋放終端)

               讓做業運行與後臺:

                             1     運行中的做業:    ctrl+z

                            2     還沒有啓動的做業    cmd &

               後臺做業雖然被送日後臺運,但其依然與終端相關,退出終端,將關閉後臺做業

               若是但願送日後臺後,剝離與終端的關係

                     nohup cmd  &>/dev/null &

                     screen;cmd

               查看當前終端全部做業:

                     jobs

               做業控制:

                     fg [[%]num]    把指定的後臺做業調回前臺

                     bg [[%]num]   讓送日後臺的做業在後臺繼續運行

                     kill [%num]     終止指定的做業

 

並行運行:

               同時運行多個進程,提升效率

               方法1:

                     vim all.sh  

                            f1.sh  &

                            f2.sh  &

                            f3.sh  &

                      all.sh

               方法2:

                     (f1.sh&);(f2.sh&);(f3.sh)

               方法3:

                     {  f1.sh& f2.sh& f3.sh& }

               

計劃任務:

               Linux任務計劃、週期性任務執行

               將來的某個時間點執行一次任務

                     at

                     batch      系統自行選擇空閒時間去執行此處執行的任務

               週期性運行某任務

                     cron

                    

                             

centos設置時間同步

               需有一臺用於同步時間的服務器,提供同步IP

               centos6:

                            vim  /etc/ntp.conf

                            添加一行:

                                   server IP  iburst

                            chkconfig ntpd  on

                            service ntpd  star

                            ntpdate  ip

               centos7

                            vim  /etc/chrony.conf

                            添加一行:server ip iburst

                            systemctl start  chronyd

                            systemctl enable  chronyd

                            ntpdate  ip

                             

at任務:

               at [option] TIME

               經常使用選項:

                            -V         顯示版本信息

                            -l           列出指定隊列中等待運行的做業,至關於atq

                            -d          刪除指定的做業,至關於atrm

                            -c          查看具體做業任務

                            -f file      從指定的文件中讀取任務

                            -m         當任務完成以後,將給用戶發送郵件,即便沒有標準輸出

               注意:做業執行命令的結果中的標準輸出和標準錯誤以郵件經過給相關用戶

               

               TIME:      定義出何時進行at這項任務的時間

                            HH:MM [yyyy-mm-dd]       

                            noon,midnight,teatime(4pm)

                             tomorrow

                            now+#{minutes,hours,days,weeks}

                    

                     HH:MM 如 2:00  

                            在今天2:00進行,若今天時間已過,則明天此時執行任務

                     HH:MM YYYY-MM-DD  如  2:00  2019-09-20

                             規定在某年某月的某一天的特殊時刻進行該項任務

                     HH:MM [am|pm][Month] [date]

                            04pm March 17            3月17號下午4點

                            17:20 tomorrow                 明天17.20

                      在某個時間點再加幾個時間後才進行該項任務

                            now + 5  minutes|min

                            02pm + 3 days     第一個下午2點以後在加3天

                             

               執行方式:

                     1     交互式

                     2     輸入重定向

                     3     at -f file

               

                     依賴於atd 服務,須要啓動才能實現at任務

                     at 隊列存放在/var/spool/at目錄中

               

               權限控制:

               /etc/at.{allow,deny},控制用戶是否能執行at任務

                            白名單/etc/at.allow        默認不存在,若是存在,只有該文件中的用戶才能執行at命令

                            黑名單/etc/at.deny 默認存在,

                                           若是白名單存在,黑名單無效

                                           若是白名單不存在,在除黑名單中以外的用戶可使用at命令

                             若是兩個文件都不存在,只有root能夠執行at命令

               

cron:

               週期性任務計劃:cron

               相關的程序包:

                             cronie:主程序包,提供crond守護進程及相關輔助工具

                             cronie-anacron:cronie的補充程序,用於監控cronie任務執行情況,

                                   如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會

                                    隨後啓動一塊兒此任務

                             crontabs:包含centos提供系統維護服務

               

               確保crond守護處於運行狀態:

                     centos7:      systemctl status  crond

                     centos6:  service crond stadus

               

               計劃週期性執行的任務提交給crond,到指定時間會自動運行

                     系統cron任務:系統維護做業

                                    /etc/crontab

                     用戶cron任務:

                                   crontab  命令

                     日誌:/var/log/cron

               

               系統cron任務:/etc/crontab

               時間格式: * * * * *

                     分(0-59) 小時(0-23)  day(1-31) month(1-12) week(0-6  或者1-7,周天是0或者7)

                    

               時間表示法:

                            1     特定值:       給定時間點有效取值範圍內的值

                            2     *                   每。。。

                            3     離散取值       #,#,#

                            4     連續取值       #-#

                            5     /#                  指定步長,好比 0 /2 * * * 表示每2小時執行一次

                     特殊格式:    @reboot        開機執行      

                                           @yearly         每一年 = 0 0 1 1 *

                                          @annually           

                                           @monthly    

                                           @weekly

                                           @daily

                                           @hourly

                     在etc下有相關腳本執行     /etc/cron.daily

                                                                /etc/cron.hourly

                                                                /etc/cron.monthly

                                                                /etc/cron.weekly

                                                                /etc/crontab

/usr/bin/run-parts  dir                      運行目錄下全部可執行腳本                                           

               anacron系統:

                            運行計算機關機時cron不運行的任務,centos6 之後版本取消anacron服務

                            有crond服務管理

                                           

用戶計劃任務:

crontab:

               每一個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME

               crontab [-u user] [-l|-r|-e][-i]

                     -l            列出全部任務

                     -e           編輯任務

                     -r          移除全部任務

                     -i           同-r  一同使用,以交互式模式移除指定任務

                     -u user 僅root 能夠執行,指定用戶管理cron任務

               控制用戶執行計劃任務

                      /etc/cron.allow

                      /etc/cron.deny

                     規則同at

 

注意事項:

               運行結果的標準輸出和錯誤以郵件通知相關用戶

               對於cron任務來說,%有特殊用途;若是在計劃任務命令中要使用%。須要轉義,

               或者放置在單引號中(貌似無效)

               或者將命令放在單獨腳本中,計劃任務中執行腳本便可

               

               也能夠將寫好的計劃任務腳本放在/etc/cron.d/ 下,系統自動執行

               

 

練習:

               一、每週的工做日1:30,將/etc備份至/backup目錄中,保存的文件名稱格式

               爲「etcbak  -yyyy-mm-dd-HH.tar.xz」,其中日期是前一天的時間

                     vim  /root/bin/etcbackup.sh

                            #!/bin/bash

                            tar -Jcvpf  /backup/etcbak-`date +%F-%H`.tar.xz  /etc

                     chmod +x  /root/bin/etcbackup.sh

                     crontab  -e

                            30 1 * * 1-5  /root/bin/etcbackup.sh

                             

               二、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至

               /tmp/meminfo.txt文件中

                     crontab  -e

                     0 */2 * * * cat  /proc/meminfo|grep -Ei '^s|^m' >> /tmp/meminfo.txt

               三、工做日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高

               於80%,就執行wall警報     

               

               

實驗做業:

        添加@reboot root reboot 計劃任務以後修復

相關文章
相關標籤/搜索