最新文章:

首頁 運維技術

菜單式Shell運維腳本調試小記

發布時間:2015年05月23日 評論數:搶沙發 閱讀數:2688

    今天上午,同事叫我幫他看下他正在寫的腳本到底哪里出了問題,執行總是達不到預期功能。于是ssh連過去看能否發現問題,經過多次Debug定位與排除,問題終于得到解決。

     

    同事在網上down了一個腳本菜單模板,想把我們已經存在的功能腳本整合到一起,做成多功能的Linux運維工具。目前已經添加了挺多功能,而早上才添加的一個抓取高占用CPU的Java線程功能時出現了無法出現交互界面的問題,而單獨去執行這個子腳本又是正常的。

    我將這個案子拿到手之后,第一件事就是打開了主菜單,分析了一下菜單功能原理和大致結構。通過斷點定位法我找到問題出現的位置:

    這是主菜單調用子腳本關鍵代碼:

    我在子腳本調用的前面加入了 echo $run,用來確定腳本是否運行到了此處、變量內容是否是我們所預期的。

    執行后,打印結果如下:

    看到第一行后面的 &符號,再打開如下的子菜單查看,立馬得出結論:原來是同事編寫的子菜單格式兼容性存在問題,他在每個調用子腳本語句后面加了后臺運行標識符 &

    有了這個&標識符,調用的腳本將置于后臺執行,之所以前15項都能正常,唯獨第16項有問題,是因為這項功能存在read交互語句,如第9、13行:

    將其置于后臺運行,read -p的顯示根本都看不到,焉能交互?! 終于抓到了“元兇”,就是置于后臺運行的方式存在問題,它不兼容執行中需要交互的腳本。直接在vim中將&批量刪除,保存后立竿見影!

    正確的寫法應該是:

    雖然就是這樣一個小問題,但是200多行的主菜單腳本,還不是我寫的,不仔細分析一下真的很難找到原因!空閑時間,我又回頭觀賞了一下這個工具菜單邏輯結構,感覺設計的不錯,功能的添加非常靈活,值得借鑒,等完善之后,我會在博客記錄分享一下!

二維碼加載中...
本文作者:Mr.linus      文章標題: 菜單式Shell運維腳本調試小記
本文地址:http://www.xgunjfvk.cn/84.html  本文已經被百度收錄,點擊查看詳情
版權聲明:若無注明,本文皆為“挨踢 Blog”原創,轉載請保留文章出處。
?擠眼 親親 咆哮 開心 想想 可憐 糗大了 委屈 哈哈 小聲點 右哼哼 左哼哼 疑問 壞笑 賺錢啦 悲傷 耍酷 勾引 厲害 握手 耶 嘻嘻 害羞 鼓掌 饞嘴 抓狂 抱抱 圍觀 威武 給力
提交評論

清空信息
關閉評論
? 福彩3d组选走势