<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] > [參考](https://shellscript.readthedocs.io/zh_CN/latest/2-library/2-commonfunc/index.html) ## 概述 `/etc/init.d/functions` 中的常用函數 **顏色函數** - success:顯示綠色的OK,表示成功 - failure:顯示紅色的FAILED,表示失敗 - passed:顯示黃色的PASSED,表示pass該任務 - warning:顯示黃色的warning,表示警告 **顯示函數** - is_true:$1的布爾值代表為真時,返回狀態碼0,否則返回1;包括t/y/yes/true,不區分大小寫 - is_false:$1的布爾值代表為假時,返回狀態碼0,否則返回1;包括f/n/no/false,不區分大小寫 - action:根據進程退出狀態碼自行判斷是執行success還是failure **進程函數** - checkpid:檢查/proc下是否有給定pid對應的目錄,給定多個pid時,只要存在一個目錄都返回狀態碼0 - __pids_var_run:檢查pid是否存在,并保存到變量pid中,同時返回幾種進程狀態碼 - __pids_pidof:獲取進程pid - pidfileofproc:獲取進程pid,但只能獲取/var/run下的pid文件中的值 - pidofproc:獲取進程pid,可獲取任意給定pidfile或默認/var/run下pidfile中的值 - status:檢查給定進程的運行狀態 **程序控制** - daemon:啟動一個服務程序,啟動前還檢查進程是否已在運行 - killproc:殺掉給定的服務進程 ## 顯示函數 ### success demo.sh ``` #!/bin/bash . /etc/init.d/functions success echo "啟動" ``` 輸出 ![](blob:http://www.hmoore.net/cb4b160b-058a-4101-94d4-08241ea71e36) ### is_true ``` > is_true t > echo $? 0 > is_true n > echo $? 1 ``` ### action 實用 退出狀態碼自動判斷是執行success還是執行failure函數 1. 當只有一個參數直接打印 2. 當大于一個參數時,從第二個參數開始執行 先將第一個參數保存并踢掉,再執行后面的命令("$@"表示執行后面的命令) 當action函數只有一個參數時,action直接返回OK,狀態碼為0;當超過一個參數時,第一個參數先被打印,再執行從第二個參數開始的命令 實例 ``` #!/bin/bash . /etc/init.d/functions action "啟動" action "啟動" /bin/false action "啟動" sleep 5 ``` 輸出 ![](https://img.kancloud.cn/57/f6/57f6d9db0798993d7d331e149147b89e_499x45.png) ## 進程函數 ### checkpid 查看 pid 是否正常運行 檢查 `/proc`下是否存在pid ``` #!/bin/bash . /etc/init.d/functions # 單個 checkpid 23 echo $? # 多個 checkpid 23 24 echo $? # 不存在的 checkpid 83230 echo $? ``` 輸出 ``` 0 0 1 ``` ### __pids_var_run 判斷程序運行狀態 格式 :`__pids_var_run program [pidfile] ` 如果不指定 pidfile ,則默認查找 `/var/run/程序名.pid` 返回狀態 * `0`:表示`program`正在運行 * `1`:表示`program`進程已死,`pid文件`存在,但`/proc`目錄下沒有對應的文件 * `3`:表示pid文件不存在 * `4`:表示pid文件的權限錯誤,不可讀 ![](https://img.kancloud.cn/d2/ea/d2ea6fd7ac6f10521893ee3552ffaeaf_518x208.png) ### daemon 啟動程序返回結果 格式: ``` daemon [--check=servicename] [--user=USER] [--pidfile=PIDFILE] [--force] program [prog_args] -p pidfile:用于指定從此文件中獲取進程的pid號,不指定時默認從/var/run/$base.pid中獲取 -d delay:指定未使用-signal時的延遲檢測時間;有效單位為秒、分、時、日("smhd"),不寫時默認為秒 -signal:用于指定kill發送的信號;如果不指定,則默認先發送TERM信號,在-d delay時間段內仍不斷檢測是否進程已經被殺死,如果還未死透,則delay超時后發送KILL信號強制殺死 ``` 這個"--pidfile"是寫在"$httpd"前面的,表示這是daemon的參數,而非"$httpd"的啟動參數 ``` echo -n $"Starting $prog: " daemon --pidfile=${pidfile} $httpd $OPTIONS ``` ``` [root@xuexi ~]# /etc/init.d/httpd start Starting httpd: [ OK ] ``` ### killproc 殺進程 格式: `killproc [-p pidfile] [ -d delay] {program} [-signal] ` 需要再三確定`pid文件`是否存在,`/proc`下是否有和`pid`對應的目錄。直到`/proc`下已經沒有了和`pid`對應的目錄時,才表示進程真正殺死了 ``` . /etc/init.d/functions killproc httpd ``` 輸出 ![](https://img.kancloud.cn/da/35/da357c61de06c567a79c927639440deb_504x47.png) ### status 提示 ``` ${base} (pid $pid) is running... ${base} dead but pid file exists ${base} status unknown due to insufficient privileges ${base} dead but subsys locked ${base} is stopped ``` 實例 ``` > . /etc/init.d/functions > status httpd httpd (pid 27649) already running > apachectl stop > status httpd httpd is stopped ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看