網站最近在做年中大促,其中圖片業務使用的是nginx集羣,爲了滿足大促時負載規模需要擴容,我們現在使用的自動化運維工具是基於saltstack的,自動化部署後有個小需求,想把nginx編譯安裝時的參數重定向備份到一個文件裏,查看編譯參數使用-V,這裏說下大V和小v的區別,
-v : show version and exit 查看版本後退出
-V : show version and configure options then exit 查看版本和配置參數後退出
於是,/usr/local/nginx/sbin/nginx -V > nginx_configure.txt
問題來了,無法把信息定向到文件裏而是直接定向到終端顯示
爲什麼會這樣呢?還是看看nginx源碼吧。
在src/core/nginx.c中找到一個函數ngx_write_stderr函數,然後繼續往下找到與這個函數相關的代碼
ngx_write_stderr是nginx自定義的inline函數,當使用-V參數查看版本的時候會調用這個函數。既然是stderr肯定是說把-V的輸出當做錯誤輸出打印到終端顯示了,那麼就很清楚了linux下stdout標準正確輸出也是默認輸出是1,標準錯誤輸出是2,於是/usr/local/nginx/sbin/nginx -V 2> nginx_configure.txt
有內容了,問題很簡單,主要是遇到問題解決問題的思路很重要。這種備份參數的對於中小企業網站運維時還是必要的,避免在網站遷移後瞭解過去的編譯安裝情況。