Linux Shell 進階編程技巧2----shell工具

來源:互聯網
上載者:User

標籤:

2.shell工具
    2.1.記錄檔
        簡介
            建立記錄檔是很重要的,記錄了重要的資訊。一旦出現錯誤,這些資訊對於我們排錯是非常有用的;監控的資訊也可以記錄到記錄檔
        常用的記錄檔的方法
            以時間為標識的記錄檔
                例子

#!/bin/bash#當前的日期current_date=`date "+%Y%m%d"`#今天的記錄檔名todaylog="log/${current_date}.log"#如果記錄檔不存在,建立一個if [! -f $todaylog ]then    touch $todaylogfi#輸出日誌到記錄檔log_time_format=`date "+%Y-%m-%d %T"`echo "${log_time_format} 命令開始" >>$todaylog##command blockssleep 4##輸出日誌到記錄檔log_time_format=`date "+%Y-%m-%d %T"`echo "${log_time_format}命令結束" >>$todaylog

            以進程號為標識的臨時檔案
                例子

#!/bin/bash#取得當前進程號current_PID=$$#獲得特定進程的進程號並重新導向到一個臨時檔案中ps -aux | grep "/user/sbin/httpd" | grep -v "grep" | awk ‘{print $2}‘ > /tmp/${current_PID}.txt#命令塊開始for pid in `cat /tmp/${current_PID}.txt`do{    echo "kill -9 $pid    kill -9 $pid}done#命令塊結束#刪除臨時檔案rm -f /tmp/${current_PID}.txt

    2.2.訊號
        簡介
            訊號就是系統向指令碼或命令發出的訊息,告知它們某個事件的發生
        kill命令
            kill -l        列出所有的訊號
            列出一些常用訊號
                1    SIGHUP        掛起或父進程被殺死
                2    SIGINT        來自鍵盤的中斷訊號,通常是 Ctrl-C
                3    SIGQUIT        從鍵盤退出
                9    SIGKILL        無條件退出
                11    SIGSEGV        段(記憶體)衝突
                15    SIGTERM        軟體終止(預設殺進程)
                訊號0為”退出shell“訊號。為了發出訊號0,只要從命令列鍵入exit,或者在一個進程或命令列中使用 Ctrl-D 即可
            kill        發送訊號給進程
                例子
                    kill -s 訊號名 進程號    這種格式來給進程發送相應訊號
                        kill -s SIGKILL 7696    殺死進程號為7696的進程
                    kill -訊號的編號 進程號        這種格式來給進程發送對應的訊號
                        kill -9 7696        殺死進程號為7696的進程
    2.3.trap捕捉訊號
        簡介
            訊號可以被應用程式或指令碼捕獲,並依據該進程號(1、2、3和15)採取相應的行動。一些訊號不能被捕獲。例如,如果一個命令收到了訊號9,就無法再捕捉其他訊號
        捕捉到一個訊號後,它可能會採取下面的三種操作之一
            1.不採取任何行動,由系統來進行處理
            2.捕獲該訊號,但是忽略它
            3.捕捉該訊號,並採取相應行動
        trap可以使你在指令碼中捕捉訊號。命令格式是:trap name signal(s)
            其中name是捕捉到訊號以後所採取的一系列操作。實際中,name一般是一個專門用來處理所捕捉訊號的函數。name需要用雙引號""引起來。
            signal就是待捕捉的訊號
            最常見的行動是
                1.清除臨時檔案
                2.忽略該訊號    例子:trap "" 2 3
                3.詢問使用者是否終止該指令碼的運行
        例子1

#!/bin/bash#捕獲訊號2,如果捕獲到就執行exitprocesstrap "exitprocess" 2LOOP=0function exitprocess(){    echo "You just hit <CTRL-C>, at number $LOOP"    echo "I will now exit"    exit 1}while:do    LOOP=$[$LOOP+1]    echo $LOOP    sleep 1done

        例子2

#!/bin/bashLOOP=0trap "exitprocess" 2HOLD1=/tmp/hold1.$$HOLD2=/tmp/hold2.$$function exitprocess(){    echo -e "\nRecived Interrupt...."    echo -n "Do you really wish to exit?(Y/N)"    read ANS    case $ANS in    Y|y)        rm_tmp_file        ;;    N|n)        ;;    *)        exitprocess        ;;    esac}function rm_tmp_file(){    echo "<CTRL-c> detected .. Now cleaning up ... Wait"    rm /tmp/*.$$ 2>/dev/null    exit 1}while :do    LOOP=$[$LOOP+1]    echo $LOOP    df >> $HOLD1    ps -xa >> $HOLD2    sleep 1done

    2.4.eval
        簡介
            eval命令將會首先掃描命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃描無法實現其功能的變數
        例子,myfile 檔案的內容是 ls -l
            MYFILE="cat myfile";`eval $MYFILE`
            等價於    eval `cat myfile`
            也就是執行 cat myfile 輸出結果所代表的那條命令
    2.5.logger
        簡介:
            logger命令向/var/log/messages檔案發送訊息
        logger命令一般形式是:
            logger -p -i message
            -p    為優先順序,這裡只涉及到提示使用者注意的優先順序,這也是預設值
            -i    在每個資訊中記錄發送訊息的進程號
        例子
            logger -p -i "chinaitlab shenzhen"
            查看 /var/log/messages 就可以查看插入了這條資訊

Linux Shell 進階編程技巧2----shell工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.