計劃任務與啟動流程

一、任務計劃

未來的某時間點執行一次任務:
    at:在指定的時間執行任務
    batch:系統自行選擇空閑時間去執行此處指定的任務
周期性運行某任務:
    cron:在指定的時間執行任務

1、at任務
at [option] TIME
  常用選項:
    -V:顯示版本信息:
    -l: 列出指定隊列中等待運行的作業;相當于atq
    -d: 刪除指定的作業;相當于atrm
    -c: 查看具體作業任務
    -f /path/from/somefile:從指定的文件中讀取任務
    -m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

TIME:定義出什么時候進行at這項任務的時間
    HH:MM [YYYY-mm-dd]
    now + #{minutes,hours,days, OR weeks}
    noon, midnight, teatime(4pm),tomorrow

at時間格式
  HH:MM         02:00
    在今日的HH:MM 進行,若該時刻已過,則明天此時執行任務
  HH:MM YYYY-MM-DD         04:00 2016-09-20
  HH:MM[am|pm] [Month] [Date]         04pm March 17
    規定在某年某月的某一天的特殊時刻進行該項任務
  HH:MM[am|pm] + number [minutes|hours|days|weeks]         now + 5 minutes         04pm + 3 days
    在某個時間點再加幾個時間后才進行該項任務
    
執行方式:
    1)交互式
    2)輸入重定向
    3)at -f 文件

依賴與atd服務,需要啟動才能實現at任務,啟動atd服務
    centos6:service atd start
    centos7:systemctl start atd

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

使用條件參考配置文件/etc/at.{allow,deny}控制用戶是否能執行at任務
    先尋找/etc/at.allow文件,文件中的使用者才能使用at ,沒有在這個文件中的使用者則不能使用at(即使沒有寫在at.deny 當中)
    如果/etc/at.allow不存在,就尋找/etc/at.deny 這個文件,若寫在這個at.deny 的使用者則不能使用at,而沒有在這個at.deny文件中的使用者則可使用at命令。
    如果兩個文件都不存在,只有root可以使用at這個命令。

2、周期性任務計劃:cron

相關的程序包:
    cronie: 主程序包,提供crond守護進程及相關輔助工具
    cronie-anacron:cronie的補充程序;用于監控cronie任務執行狀況;如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨
后啟動一次此任務
    crontabs:包含CentOS提供系統維護任務

確保crond守護處于運行狀態:
    CentOS 7:systemctl status crond
    CentOS 6:service crond status

計劃周期性執行的任務提交給crond,到指定時間會自動運行,日志:/var/log/cron

系統cron任務:系統維護作業,/etc/crontab
用戶cron任務:crontab命令,/var/spool/cron/USERNAME

系統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 * * *centos /bin/echo "Howdy!"

計劃任務
  時間表示法:
  (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/  每月腳本

anacron系統
  運行計算機關機時cron不運行的任務,CentOS6.0以后版本取消anacron服務,由crond服務管理。
  假設計算機沒有一直開機
  對筆記本電腦、臺式機、工作站及其它不一直開機的系統很重要
  對偶爾要關機的服務器很有用
  配置文件:/etc/anacrontab,負責執行/etc/ cron.daily /etc/cron.weekly /etc/cron.monthly中系統任務,/etc/cron.hourly/由/cron.d/0hourly執行。

字段1:如果在這些日子里沒有運行這些任務……
字段2:在重新引導后等待這么多分鐘后運行它
字段3:任務識別器,在日志文件中標識
字段4:要執行的任務
當執行任務時,更新/var/spool/anacron/文件時間戳

清除臨時文件
  rhel6.0使用/etc/cron.daily/tmpwatch定時清除臨時文件。
  rhel7.0使用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

計劃任務
  用戶cron:
  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}

at和crontab
  一次性作業使用at
  重復性作業使用crontab
Create         at time           crontab -e
List           at -l              crontab -l
Details         at -c jobnum      N/A
Remove        at -d jobnum      crontab -r
Edit           N/A              crontab -e
  沒有被重定向的輸出會被郵寄給用戶
  根用戶能夠修改其它用戶的作業

計劃任務
  注意:運行結果的標準輸出和錯誤以郵件通知給相關用戶
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
  對于cron任務來講,%有特殊用途;如果在命令中要使用%,則需要使用\轉義

計劃任務
  思考:
  (1) 如何在秒級別運行任務?
        * * * * * for min in 0 1 2 ; do echo "hi"; sleep 20; done           每分鐘60秒,每次相隔20秒,所以有三組,0 1 2
  (2) 如何實現每7分鐘運行一次任務?
        
sleep NUMBER [SUFFIX]…
SUFFIX:
    s: 秒, 默認
    m: 分
    h: 小時
    d: 天

練習
  1、每4小時備份并壓縮一次/etc目錄至/backup目錄中,保存的文件名稱格式為“etc-yyyy-mm-dd-HH.tar.xz”

    corntab -e
    0 */4 * * * /usr/bin/cp -a /etc/ /backup/etc-`date +\%F-\%H`.tar.xz

二、系統啟動流程

Linux組成: kernel + rootfs
    kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能
    rootfs:程序和glibc

    庫:函數集合, function, 調用接口(頭文件負責描述)
    過程調用:procedure,無返回值
    函數調用:function
    程序:二進制執行文件

內核設計流派:
    單內核(monolithic kernel):Linux  把所有功能集成于同一個程序
    微內核(micro kernel):Windows, Solaris  每種功能使用一個單獨子系統實現

Linux內核特點:
    支持模塊化:.ko(kernel object)
        如:文件系統,硬件驅動,網絡協議等
    支持內核模塊的動態裝載和卸載

組成部分:
    核心文件:/boot/vmlinuz-VERSION-release
    ramdisk:輔助的偽根系統
        CentOS 5: /boot/initrd-VERSION-release.img
        CentOS 6,7: /boot/initramfs-VERSION-release.img
    模塊文件:/lib/modules/VERSION-release

centos6啟動流程
    1.加載BIOS的硬件信息,獲取第一個啟動設備。
    2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
    3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。
    4.核型執行init程序并獲取運行信息。
    5.Init執行/etc/rc.d/rc.sysinit文件。
    6.啟動核心的外掛模塊(/etc/modprobe.conf)。
    7.Init執行運行的各個批處理文件(scripts).
    8.Init執行/etc/rc.d/rc.local.
    9.執行/bin/login程序,等待用戶登錄。
    10.登錄之后開始以Shell控制主機。

1、POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。
2、ROM:BIOS,Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。
   RAM:CMOS互補金屬氧化物半導體,保存各項參數的設定。按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

3、bootloader: 引導加載器,引導程序
    windows: ntloader,僅是啟動OS
    Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
        LILO:LInuxLOader
        GRUB: GRand Unified Bootloader
        CENTOS 5,6:GRUB 0.X(GRUB Legacy)
        CENTOS 7:GRUB 2.X(GRUB2)

    MBR:(446: bootloader),(64: 分區表), (2: 55AA)
    GRUB:
        primary boot loader : 1st stage,1.5 stage
        secondary boot loader :2nd stage,分區文件

4、ramdisk:
    內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
    ramdisk–> ramfs提高速度
        CentOS 5: initrd, 工具程序:mkinitrd
        CentOS 6: initramfs,工具程序:mkinitrd, dracut

5、kernel自身初始化:
    探測可識別到的所有硬件設備
    加載硬件驅動程序(可能借助于ramdisk加載驅動)
    以只讀方式掛載根文件系統
    運行用戶空間的第一個應用程序:/sbin/init

    init程序的類型:
        CentOS 5:SysV: init,配置文件:/etc/inittab
        CentOS 6:Upstart: init,配置文件:/etc/inittab, /etc/init/*.conf
        CentOS 7:Systemd:systemd, 配置文件:/usr/lib/systemd/system,/etc/systemd/system

系統初始化:POST –> BootSequence(BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只讀) –> init(systemd)

CentOS6之前,/sbin/init
運行級別:為系統運行或維護等目的而設定;0-6:7個級別
    0:關機
    1:單用戶模式(root自動登錄), single, 維護模式
    2: 多用戶模式,啟動網絡功能,但不會啟動NFS(可以自行啟動);維護模式
    3:多用戶模式,正常模式;文本界面
    4:預留級別;可同3級別
    5:多用戶模式,正常模式;圖形界面
    6:重啟
  默認級別:3, 5
  切換級別:init #
  查看級別:runlevel; who -r

init讀取其初始化文件:/etc/inittab
    初始運行級別(RUN LEVEL)
    系統初始化腳本
    對應運行級別的腳本目錄
    捕獲某個關鍵字順序
    定義UPS電源終端/恢復腳本
    在虛擬控制臺生成getty
    在運行級別5初始化X

CentOS5的inittab文件:/etc/inittab
每一行定義一種action以及與之對應的process
    id:runlevel:action:process  
    action:
        wait: 切換至此級別運行一次
        respawn:此process終止,就重新啟動之
        initdefault:設定默認運行級別;process省略
        sysinit:設定系統初始化方式,此處一般為指定    /etc/rc.d/rc.sysinit
        ca::ctrlaltdel:/sbin/shutdown -t3 -r now
    id:3:initdefault:    設置系統默認的運行級別
    si::sysinit:/etc/rc.d/rc.sysinit
    l0:0:wait:/etc/rc.d/rc0
    l1:1:wait:/etc/rc.d/rc1…
    l6:6:wait:/etc/rc.d/rc6

CentOS6的inittab文件/etc/inittab
id:3:initdefault:   設置系統默認的運行級別
  /etc/init/control-alt-delete.conf
  /etc/init/tty.conf
  /etc/init/start-ttys.conf
  /etc/init/rc.conf
  /etc/init/prefdm.conf

/etc/rc.d/rc.sysinit: 系統初始化腳本
    (1) 設置主機名
    (2) 設置歡迎信息
    (3) 激活udev和selinux
    (4) 掛載/etc/fstab文件中定義的文件系統
    (5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統
    (6) 設置系統時鐘
    (7) 激活swap設備
    (8) 根據/etc/sysctl.conf文件設置內核參數
    (9) 激活lvm及software raid設備
    (10) 加載額外設備的驅動程序
    (11) 清理操作

說明:rcN –> 意味著讀取/etc/rc.d/rcN.d/
    K*: K##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務
    S*: S##*:##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務
    注:通常啟動次序越小,關閉次序越大

        for srvin /etc/rc.d/rcN.d/K*; do
            $srvstop
        done
        for srvin /etc/rc.d/rcN.d/S*; do
            $srvstart
        done

1、chkconfig
(1)添加:
    chkconfig –add name
        SysV的服務腳本放置于/etc/rc.d/init.d(/etc/init.d)
            腳本首部信息
                #!/bin/bash
                #chkconfig: LLLL nn ##     LLLL 默自啟級別,-表示都不啟動;  nn 啟動次序;   ## 關閉次序
                #description  centos5之前必須有,之后可沒有

(2)刪除:
    chkconfig –del name

(3)修改指定的鏈接類型:
    chkconfig [–level levels] name <on|off|reset>
         –level LLLL: 指定要設置的級別,省略時表示2345

(4)查看服務在所有級別的啟動或關閉設定情形,沒有指明服務時顯示所有服務的信息
    chkconfig –list [name]  

2、ntsysv   交互式設置服務的啟動或關閉設定,默認設置當前級別
    –level=LLLL name
    
3、xinetd管理的服務:非獨立服務
    瞬態(Transient)服務被xinetd進程所管理
        進入的請求首先被xinetd代理
        配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>
        與libwrap.so文件鏈接
        用chkconfig控制的服務:
        chkconfig tftp on

4、service 服務 start|stop|restart
    service –status-all

注意:
正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本
 不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中
 /etc/rc.d/rc.local在指定運行級別腳本后運行
可以根據情況,進行自定義修改

啟動流程
  1:2345:respawn:/usr/sbin/mingettytty1
  2:2345:respawn:/usr/sbin/mingettytty2
   …
  6:2345:respawn:/usr/sbin/mingettytty6
mingetty會自動調用login程序
  x:5:respawn:/etc/X11/prefdm -nodaemon

CentOS 6 init程序為: upstart, 其配置文件:/etc/inittab, /etc/init/*.conf,配置文件的語法遵循upstart配置文件語法格式,和CentOS5不同

CentOS 6啟動流程:
POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別–> 系統初始化腳本rc.sysinit–> 關閉或啟動對應級別的服務–> 啟動終端

作業:

1、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”

    crontab -e 

    0 0 * * 2,4,7 /bin/cp -a /var/log/messages /logs/messages-`date +\%Y\%m\%d`

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

    crontab -e

    0 */2 * * * cat /proc/meminfo | egrep '^(S|M)' &>> /tmp/meminfo

3、centos6  啟動流程

    POST –> Boot Sequence(BIOS) –> Boot Loader –>
Kernel(ramdisk) –> rootfs–> switchroot–>
/sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 設定默認運行級別–>
系統初始化腳本rc.sysinit–> 關閉或啟動對應級別的服務–> 啟動終端

4、centos5,6  添加腳本服務

vim /etc/rc.d/init.d/service

#!/bin/bash
#chkconfig: 2345 77 33

#description:

read -p "please input a select (start|stop|restart|status):" sel

case $sel in
start)
    echo start
        ;;
stop)
    echo stop
        ;;  
restart)
    echo restart
        ;;
status)
    echo status
*)
    echo not exits
        ;;
esac

chkconfig –add name

5、centos5,6  口令破解

敲任意鍵顯示開機菜單,輸入a選擇本次開機進入的運行級別,輸入1 s S single,回車啟動
系統為多內核時:敲任意鍵顯示開機菜單,在欲啟動的內核上輸入e進行編輯,在kernerl所在行輸入e進行編輯,輸入1或s或S或single,回車,按b啟動

原創文章,作者:anonymous,如若轉載,請注明出處:http://www.www58058.com/45924

(0)
anonymousanonymous
上一篇 2016-09-13
下一篇 2016-09-13

相關推薦

  • 初識linux內核編譯

    編譯內核前提:        1、準備開發環境。        2、獲取目標主機上硬件設備的相關信息。        3、獲取目標主機系統功能的相關信息,例如要啟用的文件系統。 &…

    Linux干貨 2016-09-13
  • Nginx 代理和緩存

    一 實驗環境 Nginx 版本:nginx-1.8.1 Nginx代理服務器WAN:192.168.1.5 LAN:172.16.2.1 Web1:172.16.2.2 Web2:172.16.2.3 1.  配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器 2.      …

    Linux干貨 2016-12-05
  • nginx服務

      Nginx 提供web服務,也是工作在應用層的負載均衡器,擁有強大的緩存能力。 本章主要學習,web server、web reverse proxy(http)和cache 緩存服務器使用較多的是varnish+squid: 任何緩存都是反向代理,但是varnish反向代理能力還是與nginx有很大差距。所以,varnish還是做緩存服務,而…

    Linux干貨 2016-11-01
  • 網絡管理3

    一、知識整理 1、跨網絡通信:路由 路由的分類:主機路由;網絡路由;默認路由。 將主機接入網絡,需要配置網絡相關設置。一般包括如下內容:主機名;IP/MASK;路由:默認網關;DNS服務器:主、次、第三DNS服務器。 2、網絡配置文件:IP、MASK、GW、DNS相關配置文件 /etc/sysconfig/network-scripts/ifcfg-IFAC…

    Linux干貨 2016-09-13
  • N22-第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s@^[[:space:]]\+[^[:space:]]@#\1@g 或 :%s@^[[:space:]]\+[^[:space:]]@#&a…

    Linux干貨 2016-09-26
  • Centos6.8 搭建LAMP平臺

    Centos6.8 搭建LAMP平臺 §·運行環境介紹 LAMP的運行環境介紹: L代表: Linux  Centos 6.8 A代表: apache  httpd-2.2.15-53.el6.centos.x86_64 M代表:MySQL  mysql-server-5.1.73-7.el6.x86_64 P代表: php &…

    Linux干貨 2016-10-12
欧美性久久久久