執行系統命令並且將輸出寫到指定記錄檔的shell指令碼(2)

來源:互聯網
上載者:User

執行系統命令並且將輸出寫到指定記錄檔的shell指令碼(2)

上一篇是個簡單的可以執行並且寫入日誌的指令碼,但是如果放到生產環境上就顯得太粗糙了,所以需要進一步的最佳化:

#! /bin/bashif [ -d "/opt/bmc" ] ; then    if [ -f "/opt/bmc/usysfault.log" ] ; then        {            date +"%Y-%m-%d %H:%M:%S"            /usr/lpp/diagnostics/bin/usysfault    #要執行的命令的絕對路徑        } > /opt/bmc/usysfault.log     #要存放記錄檔的絕對路徑    else        touch /opt/bmc/usysfault.log        chmod 755 /opt/bmc/usysfault.log        {            date +"%Y-%m-%d %H:%M:%S"            /usr/lpp/diagnostics/bin/usysfault        } > /opt/bmc/usysfault.log    fielse    if [ -f "/tmp/usysfault.log" ] ; then        {            date +"%Y-%m-%d %H:%M:%S"            /usr/lpp/diagnostics/bin/usysfault        } > /tmp/usysfault.log    else        touch /tmp/usysfault.log        chmod 755 /tmp/usysfault.log        {            date +"%Y-%m-%d %H:%M:%S"            /usr/lpp/diagnostics/bin/usysfault        } > /tmp/usysfault.log    fifi
注釋:

 

 

[ -d "xxxx" ] 判斷目錄路徑是否存在[ -f "xxxx" ] 判斷檔案是否存在touch 命令用於建立空檔案,chmod 命令用於賦權。

 

特別注意:

 

shell指令碼對空格的要求異常的嚴格,必須注意空格,否則報錯了你查都很難查。if 條件使用結束時必須有fi結尾,不然會報錯,也是很難查了。

 

最後,這個是單詞執行的指令碼,如果要迴圈執行的話加上上一篇寫的while true即可。不過我採用的是類unix系統的計劃工作管理員crontab來添加計劃任務,讓系統按指定的計劃時間來執行指令碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.