鹅厂后台开发工程师的工作日常
?寫在前面?:本故事純屬虛構,如有雷同,不負責任。為了整理 Linux 開發和日常使用的常用命令,想了好幾天才串了這么個故事。雖然有點牽強,但是內容還是挺干的~歡迎大家點評。
在很久很久以前,鵝廠開發類工程師職級分為:助理工程師、工程師、高級工程師和專家工程師四大類。
小特特從北京某學校畢業后,據傳因為其性別比較突出,所以很幸運地拿到了工程師的職級,并在畢業后順利成為了一只新鵝。
1. 班車風云
這天,小特特頂著亂糟糟的頭發,穿著拖鞋和短褲,斜挎著塑料編織袋,抓上工卡和手機就擠上了最晚的一趟班車。
正當其憨憨入睡時,手機不知趣地響起了一陣"悅耳"的鈴聲。那獨一無二的動聽旋律,小特特不用拿出手機便已知是公司的告警電話。
她慌慌張張從編織袋里拿出手機,按下接聽后,一個熟悉的機器女聲:"您有一個硬盤告警,IP為...",話音未落,小特特就按下了 1 而自動結束了這次人機對話。
2. 辦公室之殤
來到工位后,小特特既嫻且熟地打開 xshell 登錄到跳板機后,使用 ssh xiaott@1.2.3.4 登錄到了硬盤告警的機器。輸入 sudo su - worker 切換到 worker 用戶后,小特特使用 df -h 命令查看完各分區的容量,再快速輸入 du -h --max-depth=1 命令查看當前目錄下各文件(及文件夾)的大小。發現 xxx.log 文件占用了近 100 G空間后,她果斷地使用了 rm xxx.log 命令將其進行了刪除。
刪除完文件后,小特特還執行了下 ls –lhS 命令將當前目錄下各文件以從大到小的順序進行展示。
處理完硬盤告警后,小特特通過 ssh 遠程連接到了個人云開發機,開始使用 Vim 進行日常開發。<Ctrl n> 自動補齊,ctags 進行函數跳轉,filetype 設置語法高亮,quickfix 列表快速編譯,vim-fugitive 插件實現在 Vim 中完成各種 git 操作。隨著自定義配置和插件的逐步完善,小特特已經能夠在 Vim 下完成日常的開發工作。
正當其在代碼的世界徜徉時,企業微信上彈出了一個線上服務告警通知。為了避免出現重大外網事故,小特特趕緊登上了告警服務所在的一個機器,先使用 cd 命令切換到服務的運行目錄,再使用 tail -f xxx.log.20191212 實時滾動下服務日志。
從滾動的命令行發現錯誤 log 均出現在請求某個外部 CGI 接口后,小特特使用 awk '-F,' '{if ($666==110) print $999}' xxx.log.20191212 提取出了返回錯誤的所有 URL。
為了確認是否是必現錯誤,小特特使用 curl -d 命令模擬了一次請求。由于內部請求使用的是 HTTP 協議,小特特還使用 tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)' 對模擬請求進行了抓包分析。
小特特確認錯誤原因是外部接口超時未返回后,立即聯系了該接口對應的負責同學。處理完這個問題后,小特特繼續了她的開發工作。
當需要安裝某個開源庫時,小特特使用 rz -bey 命令將本地 Windows 機器上的壓縮包傳到了開發機,然后使用 md5sum xxx.tar.gz 命令驗證傳輸的文件是否正確,最后再使用 tar xvzf xxx.tar.gz 命令將壓縮包解壓后進行使用。
find -type f -name README.md 命令在當前工作目錄中查找名為 README.md 的所有文件。
臨近黃昏時,又一個進程占用 CPU 過高的告警出現在了手機上。登錄上機器后,小特特先使用 history | tail -n 200 查看最近執行過的命令列表,看下是否有異常情況。確認無異常后,她使用 top 命令查看系統的 CPU、內存等的使用情況。
在 top 命令的基本視圖中,按數字 1 監控每個邏輯 CPU 的使用情況;按 P 實現按 CPU 降序排列,按 M 按內存降序排列。
為進一步查看系統運行現狀,小特特還使用 free -h 命令查看了內存的使用情況。發現確實是因為用戶請求量增加而導致服務使用 CPU 和內存過高后,小特特急忙通知了運維同學進行了擴容處理。
晚上九點半,小特特基本完成了一天的開發工作,為了測試下新開發的功能是否正常。編譯通過后,使用 nohup xxx 9999 啟動了進程,并監聽在 9999 端口。
啟動完進程后,小特特使用 netstat -anp | grep -w 9999 命令確認進程確實在監聽 9999 端口。測試過程中,她發現進程加載的一個外部 so 動態庫對應功能并沒有生效,lsof xxx.so 命令也顯示啟動的進程并沒有加載該 so 文件。
使用 GDB 調試時發現,該 so 并沒有導出函數 fffff 。nm -D xxx.so | grep fffff 命令也證實了該 so 確實沒有導出該函數。
因為這個 so 是其他團隊提供的組件,所以小特特通過 sz 命令將該文件傳輸到 Windows 機器上后發到了企業微信群進行討論。
同時,小特特使用 ps aux | grep -w xxx| grep -v grep | awk '{print $2}' | xargs kill -9 停掉了測試進程 xxx。
3. 結語
數了下,文中出現了近 30 個 Linux 命令,我"太男"了。熟練使用這些命令,個人覺得已經可以應付 Linux 下的初級開發和運維工作了。
歡迎關注
總結
以上是生活随笔為你收集整理的鹅厂后台开发工程师的工作日常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EntityFramework Core
- 下一篇: .NET Core开发的iNeuOS工业