婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 如何利用 tee 命令調(diào)試shell腳本中的管道

如何利用 tee 命令調(diào)試shell腳本中的管道

熱門標(biāo)簽:地圖標(biāo)注審核周期 黑暗之魂3地圖標(biāo)注 電話機(jī)器人對(duì)家居行業(yè)幫助大嗎 電商外呼系統(tǒng)排名 蘭州電銷機(jī)器人加盟 沈陽(yáng)ai電銷智能機(jī)器人 AI智能電銷機(jī)器人壞處 合肥電銷外呼系統(tǒng)供應(yīng)商 如何申請(qǐng)400的電話呀

實(shí)例

下面是一個(gè)簡(jiǎn)單的腳本,腳本中 processid 函數(shù)的作用是查詢指定進(jìn)程名字的進(jìn)程ID,在管理linux服務(wù)器的過(guò)程中,這個(gè)是很常見(jiàn)的功能,processid 函數(shù)作用是利用多層管道命令查詢進(jìn)程ID,以下是測(cè)試腳本源碼

#!/bin/sh

processid()
{
    ipid=$(ps -ef | grep -w $1 | grep -v grep | awk '{print $2}')
    echo $ipid
}

case "$1" in
    i)
       processid $2
      ;;
    *)
        echo "parameter error..$1"
      ;;
esac

執(zhí)行腳本

我們執(zhí)行這個(gè)腳本查詢 zone9_log1 的進(jìn)程ID,下面是執(zhí)行的結(jié)果

[wanng@localhost ~]$ ./a.sh i zone9_log1
130530 144391 144392

為了和 zone9_log1 進(jìn)程實(shí)際的進(jìn)程ID對(duì)比,我們單獨(dú)執(zhí)行 ps -ef | grep -w zone9_log1 | grep -v grep | awk '{print $2}' 命令,執(zhí)行結(jié)果如下:

[wanng@localhost ~]$ ps -ef | grep -w zone9_log1 | grep -v grep | awk '{print $2}'
130530

問(wèn)題

同樣的命令,確得到了不同的結(jié)果,我們?cè)谀_本中加入 tee 命令輸出管道的中間結(jié)果,調(diào)整之后的的腳本如下:

processid()
{
    ipid=$(ps -ef | grep -w $1 | tee out1 | grep -v grep | tee out2 | awk '{print $2}') | tee out3
    echo $ipid
}

case "$1" in
    i)
       processid $2
      ;;
    *)
        echo "parameter error..$1"
      ;;
esac

再次執(zhí)行腳本,本地會(huì)生成 out1 out2 out3 三個(gè)文件,記錄這管道命令的中間結(jié)果,下面是腳本執(zhí)行結(jié)果以及 out1 out2 out3 文件的內(nèi)容

[wang@localhost ~]$ ./a.sh i zone9_log1
130530 144885 144886

[wang@localhost ~]$ cat out1
wang      130530      1  0 4月24 pts/10  00:07:47 ./zone9_log1 ./zone9_log1.lua
wang       144885 109338  0 20:45 pts/8    00:00:00 /bin/sh ./a.sh i zone9_log1
wang       144886 144885  0 20:45 pts/8    00:00:00 /bin/sh ./a.sh i zone9_log1
wang       144888 144886  0 20:45 pts/8    00:00:00 grep -w zone9_log1
[wang@localhost ~]$ cat out2
wang      130530      1  0 4月24 pts/10  00:07:47 ./zone9_log1 ./zone9_log1.lua
wang       144885 109338  0 20:45 pts/8    00:00:00 /bin/sh ./a.sh i zone9_log1
wang       144886 144885  0 20:45 pts/8    00:00:00 /bin/sh ./a.sh i zone9_log1
[wang@localhost ~]$ cat out3
130530
144885
144886
[wang@localhost ~]$ 

原因

執(zhí)行腳本的時(shí)候,默認(rèn)會(huì)創(chuàng)建一個(gè)新的shell(也即一個(gè)新的進(jìn)程),上面的腳本 a.sh 就是在新的shell環(huán)境中執(zhí)行的。從上面的測(cè)試結(jié)果可以看出,ps -ef | grep -w zone9_log1 命令的結(jié)果中包含了執(zhí)行腳本身啟動(dòng)的進(jìn)程和我們要查詢的目標(biāo)進(jìn)程,我們只需要過(guò)濾掉腳本本身的進(jìn)程,就可以得到準(zhǔn)確的進(jìn)程ID,調(diào)整之后的腳本如下(暫時(shí)先保留 tee命令輸出的中間結(jié)果):

processid()
{
    ipid=$(ps -ef | grep -w $1 | grep -v $0 | tee out1 | grep -v grep | tee out2 | awk '{print $2}') | tee out3
    echo $ipid
}

case "$1" in
    i)
       processid $2
      ;;
    *)
        echo "parameter error..$1"
      ;;
esac

上面processid函數(shù)中 grep -v $0 作用是過(guò)濾掉腳本的名字,其中 $0 表示腳本的名字 ( a.sh )

驗(yàn)證

再次執(zhí)行腳本,結(jié)果如下:

[wanng@localhost ~]$ ./a.sh i zone9_log1
130530

[wanng@localhost ~]$ cat out1
wanng      130530      1  0 4月24 pts/10  00:07:51 ./zone9_log1 ./zone9_log1.lua
wanng       146170 146168  0 21:11 pts/8    00:00:00 grep -w zone9_log1
[wanng@localhost ~]$ cat out2
wanng      130530      1  0 4月24 pts/10  00:07:51 ./zone9_log1 ./zone9_log1.lua
[wanng@localhost ~]$ cat out3
130530

從上面的測(cè)試結(jié)果中看出,最后輸出的結(jié)果是正確的

總結(jié)

多層管道在shell腳本中是很常見(jiàn)的用法,使用起來(lái)也非常方便和高效的,但是腳本一旦出問(wèn)題調(diào)試就會(huì)變得困難起來(lái),合理的使用 tee 命令輸出管道的中間結(jié)果,可以快速的定位問(wèn)題所在

以上就是如何利用 tee 命令調(diào)試shell腳本中的管道的詳細(xì)內(nèi)容,更多關(guān)于tee 命令調(diào)試shell腳本中的管道的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Shell腳本中管道的幾種使用實(shí)例講解
  • Shell腳步攻略之管道重定向基礎(chǔ)
  • PowerShell管道入門必看篇(管道例子大全)
  • linux shell 管道命令(pipe)使用及與shell重定向區(qū)別
  • PowerShell實(shí)現(xiàn)按條件終止管道的方法
  • PowerShell中終止管道的方法
  • PowerShell入門教程之PowerShell管道介紹
  • Windows Powershell導(dǎo)出管道結(jié)果
  • Windows Powershell過(guò)濾管道結(jié)果
  • shell腳本一鍵同時(shí)推送代碼至github和gitee的解決辦法

標(biāo)簽:河池 黔南 淮南 河北 黔南 隴南 通遼 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何利用 tee 命令調(diào)試shell腳本中的管道》,本文關(guān)鍵詞  如何,利用,tee,命令,調(diào)試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何利用 tee 命令調(diào)試shell腳本中的管道》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于如何利用 tee 命令調(diào)試shell腳本中的管道的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 奉化市| 江达县| 沂源县| 南充市| 黑河市| 灵石县| 安福县| 合阳县| 札达县| 和顺县| 峨边| 互助| 南部县| 朝阳县| 来安县| 无锡市| 平南县| 葫芦岛市| 安平县| 安阳市| 会东县| 林口县| 宁明县| 交口县| 五家渠市| 南安市| 连城县| 海晏县| 大城县| 博爱县| 闵行区| 丰镇市| 安阳市| 雅安市| 车险| 汨罗市| 宁夏| 辽阳县| 施秉县| 罗田县| 东源县|