• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            程序讓生活更美好

            半畝方塘 天光云影

              C++博客 ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
              55 隨筆 :: 4 文章 :: 202 評論 :: 0 Trackbacks
            AIX中的inittab 文件(轉)原文地址http://blog.chinaunix.net/u/20198/showart_437679.html
            /etc/inittab 文件控制著初始化過程。
            /etc/inittab 文件為 init 命令提供腳本作為一個普通進程調度程序。構成 init 命令進程調度活動的主要(多數)進程是 /etc/getty 線進程(line process),發起(啟動)專用線進程。被 init 命令特別調度的其他進程為后臺進程(Daemon)和shell。
            /etc/inittab 文件由 位置相關[position-dependent ]的條目組成,格式如下:
             
            Identifier:RunLevel:Action:Command
             
            每一個條目都被一個換行字符分隔。一個換行字符前面一個反斜杠 (\) 表示一個條目的延續。/etc/inittab 文件中的條目數目沒有限制(而不是指條目的最大長度)。條目的最大長度是 1024 個字符。
            條目字段有:
            Identifier: 標識唯一對象的一個 1-4 位字符的字段。
            RunLevel: 該條目運行的級別。
            運行級別有下列屬性:
               - 運行級別有效地符合系統進程的配置。
               - 由 init 命令啟動的每一個進程都被分配一個或多個該進程可存在于之的運行級別。
               - 運行級別由 0-9 的數字來表示。例如,如果系統運行于級別 1,只有在運行級別字段有 1 的那些條目被啟動。
               - 請求 init 命令改變運行級別時,條目中運行級別字段與目標運行級別不匹配的所有進程都會收到一條警告信號 (SIGTERM),在進程被刪除符號[kill signal (SIGKILL)]強行終止前,有20秒的寬限期。
               - 運行級別字段可為一個進程定義多個運行級別,可以0-9的任意組合。如果沒有指定運行級別,進程假定在所有的運行級別有效。
               - 還有其他四個值會出現在運行級別字段,即使他們并不是真正的運行級別:a, b, c 和 h。在運行級別字段有這些字符的條目僅僅在telinit 命令請求時才運行(與當前的系統運行級別無關)。他們不同于init命令的運行級別,init命令永遠不能進入a, b, c, h 運行級別。并且,所有這些進程的運行請求都不改變當前的運行級別。此外,init 命令改變級別時,由a, b, c 命令啟動的進程并不斷開(killed)。只有當 /etc/inittab 文件中他們的行在action字段標記為 off,他們的行從 /etc/inittab 文件中完全刪除,或者init 命令進入單用戶模式,這些進程才會被中斷(killed)。
            Action: 告知 init 命令如何處理在 process 字段指定的進程。init 命令可識別的 actions 如下:
              respawn: 如果進程不存在,則啟動進程。卻不等待進程終止(繼續掃描 /etc/inittab 文件)。如進程死掉,則重啟該進程。如進程存在,繼續掃描 /etc/inittab 文件。
              wait: 當 init 命令進入匹配某條目的運行級別時,啟動該進程并等待該進程的終止。當init命令處于同樣的運行級別時,所有對 /etc/inittab 文件隨后的讀取都會導致 init 命令忽略該條目。
              once: 當 init 命令進入匹配某條目的運行級別時,啟動該進程,并且不等待終止。當進程死掉時,也不重啟該進程。當系統進入一個新的運行級別時,該進程仍然從之前運行級別的變化運行,程序也不重啟。
              boot: 只在系統引導過程中運行的條目,這些進程是系統啟動過程中,init 命令從 /etc/inittab 文件中讀取的。啟動該進程,不等待進程終止,并且進程死掉時,也不重啟進程。有意義的指導依次為,運行級別應為默認,或者必須與系統引導時 init 命令的運行級別匹配。此 action 對于系統硬件重啟后的初始化功能非常有用。
              bootwait: 系統引導后,init 命令從單用戶到多用戶狀態,第一次運行的條目。啟動該進程,并等其終止,進程死時,不重啟該進程。如果 initdefault為 2 ,則系統引導后直接運行該進程。
              powerfail: 只有當 init 命令收到一個電源故障信號(SIGPWR)的時候,才執行與此條目相關的進程。
              powerwait: 只有當 init 命令收到一個電源故障信號(SIGPWR)的時候,才執行與此條目相關的進程。并等該進程終止,才繼續處理 /etc/inittab 文件。
              off: 如果與該條目相關的進程當前正在運行,發送一個警告信號(SIGTERM),然后等待 20 秒才用 kill 信號(SIGKILL)終止該進程。如果進程不在運行,忽略該條目。
              ondemand: 功能上與 respawn 相同,不過,此 action 應用 a, b, 或 c 值,而不用運行級別。
              initdefault: init 命令只在 最初調用時才掃描與此 action 相關的條目。如果存在,init 命令使用該條目來決定初始進入的運行級別。一般情況下,使用run-level 字段中指定的最高運行級別來作為初始狀態。如果運行級別字段為空,則認作0123456789;因此,init 命令進入運行級別 9 。另外,如果 init 命令在 /etc/inittab 文件中找不到initdefault 條目,則在引導時向用戶請求一個初始的運行級別。
              sysinit: 此類型的條目在登錄前 init 命令正要訪問控制臺之前被執行。該條目只被用來初始化設備,init 命令可能會針對這些設備詢問運行級別。這些條目被執行,并等待完成后才繼續。

            Command: 可執行的殼(shell)命令。整個 command 字段以 exec 為前綴,并傳給一個 forked sh成為 sh -c exec 命令。任何合法的 sh 命令語法都可出現在該字段。并可用 # 插入注釋。
             
            getty 命令覆寫 /etc/inittab 文件中出現在它之前所有命令的輸出。要在引導日志中記錄這些命令的輸出,可輸送這些輸出到 alog -tboot 命令。
            當 init 命令正在處理 inittab 條目時,stdin, stdout, 和 stderr 這些文件描述符(file descriptors)可能是不可用的。所有寫入 stdout 或 stderr 的條目不起作用,除非把輸出重定向到一個文件或者到 /dev/console。
             
            下列命令是唯一支持在 /etc/inittab 文件中修改記錄的方法:
            mkitab: 把記錄添加到 /etc/inittab 文件。
            lsitab: 列出 /etc/inittab 文件中的記錄。
            chitab: 修改 /etc/inittab 文件中的記錄。
            rmitab: 從 /etc/inittab 文件中刪除記錄。
             
            例如,想在 /etc/inittab 文件中添加一條記錄,以運行級別2(run level 2)運行 find 命令并使之一旦完成就再次啟動。
            1. 運行 ps 命令,只顯示包含 find 的進程:
            # ps -ef | grep find
            root 19750 13964 0 10:47:23 pts/0 0:00 grep find
            #
            2. 使用 mkitab 命令,在 /etc/inittab 文件中添加一個名為 xcmd 的記錄:
            # mkitab "xcmd:2:respawn:find / -type f > /dev/null 2>&1"
            3. 使用 lsitab 命令顯示新記錄:
            # lsitab xcmd
            xcmd:2:respawn:find / -type f > /dev/null 2>&1
            #
            4. 查看進程:
            # ps -ef | grep find
            root 25462 1 6 10:56:58 - 0:00 find / -type f
            root 28002 13964 0 10:57:00 pts/0 0:00 grep find
            #
            5. 取消 find 命令進程:
            # kill 25462
            6. 查看進程:
            # ps -ef | grep find
            root 23538 13964 0 10:58:24 pts/0 0:00 grep find
            root 28966 1 4 10:58:21 - 0:00 find / -type f
            #
            本例中,由于 action 字段被配置 respawn,故而每一次該命令一完成,一個新進程就會啟動。
            該進程將繼續再生 (re-spawning),除非修改 action 字段,例如:
            1. 把記錄 xcmd 的 action 字段由 respawn 修改為 once:
            # chitab "xcmd:2:once:find / -type f > /dev/null 2>&1"
            2. 查看進程:
            # ps -ef | grep find
            root 20378 13964 0 11:07:20 pts/0 0:00 grep find
            root 28970 1 4 11:05:46 - 0:03 find / -type f
            3. 取消 find 命令進程:
            # kill 28970
            4. 查看進程:
            # ps -ef | grep find
            root 28972 13964 0 11:07:33 pts/0 0:00 grep find
            #
            要從 /etc/inittab 文件中刪除該記錄,可使用 rmitab 命令。例如:
            # rmitab xcmd
            # lsitab xcmd
            #
            /etc/inittab 條目的次序
            /etc/inittab 文件中的基本進程條目次序安裝如下:
            1. initdefault
            2. sysinit
            3. Powerfailure Detection (powerfail)
            4. Multiuser check (rc)
            5. /etc/firstboot (fbcheck)
            6. System Resource Controller (srcmstr)
            7. Start TCP/IP daemons (rctcpip)
            8. Start NFS daemons (rcnfs)
            9. cron
            10.pb cleanup (piobe)
            11.getty for the console (cons)
             
            系統資源控制器 (SRC)必須在 /etc/inittab 文件的開頭附近就被啟動,因為啟動其他的進程需要SRC進程(Daemon)。
            由于NFS需要TCP/IP進程(Daemon)才能正常運行,所以TCP/IP進程必須在NFS進程之前被啟動。
            /etc/inittab 文件中的條目按相互依賴性排序,就是說,如果一個進程(process2)需要另外一個進程(process1)存在才能正常運行,那么在 /etc/inittab文件中,process1的條目應該在process2的條目之前。
            posted on 2008-09-08 14:32 北風之神007 閱讀(2663) 評論(0)  編輯 收藏 引用 所屬分類: UNIX
            久久久免费观成人影院| 伊人久久一区二区三区无码| 久久超碰97人人做人人爱| 欧美大香线蕉线伊人久久| 91精品国产综合久久四虎久久无码一级 | 一本大道久久a久久精品综合| 国产亚洲精久久久久久无码AV| 亚洲精品97久久中文字幕无码 | 精品综合久久久久久97超人| 久久精品国产精品亚洲| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久精品一区二区影院| 99精品久久精品一区二区| 人人狠狠综合久久亚洲婷婷| 久久强奷乱码老熟女网站| 亚洲国产精品久久66| 日韩精品久久无码人妻中文字幕| 久久天天躁狠狠躁夜夜2020老熟妇| 色8久久人人97超碰香蕉987| 亚洲伊人久久成综合人影院 | 中文字幕成人精品久久不卡| 精品久久久久久中文字幕大豆网| 青青草原1769久久免费播放| 潮喷大喷水系列无码久久精品| 伊人久久综合成人网| 武侠古典久久婷婷狼人伊人| 精品久久久久久国产三级| 久久99毛片免费观看不卡| 欧美黑人激情性久久| 熟妇人妻久久中文字幕| 亚洲中文字幕无码久久综合网| 香蕉aa三级久久毛片| 一本久久a久久精品综合香蕉| 久久亚洲精品无码观看不卡| 91久久精品视频| 久久精品中文字幕有码| 久久97久久97精品免视看| 久久久久国产日韩精品网站| 久久精品国产一区二区 | 亚洲av成人无码久久精品| 熟妇人妻久久中文字幕|