前陣子因為用了六年多的DigitalOcean主機顯示硬碟容量不足,因此開始清理裡面的垃圾。清理完畢後發現MySql竟然記憶體飆高到40%,重啟服務、更新版本能試的方法試過一輪還是一樣。最後才發現原來自己誤刪了swap(類似Window的虛擬記憶體)。以下是當時在檢查問題點時常用到的command,我把他整理起來,免得之後要用又忘掉。注意:有些在mac上可用,有些不行。且有些雖然可用,但options可能會有點出入。
列出檔案大小
指令:du -h

du是硬碟使用統計的指令,-h 是顯示成人類好閱讀的形式。但因為會列出目錄中所有檔案的大小,如果目錄中檔案非常多,會捲到天荒地老看找不到,這時候可以直接指定檔案或目錄:du -h ./my_folder
硬碟空間剩多少
指令:df -h

df (display free disk space) 指令一樣可以加上 -h 來顯示成好閱讀的形式。會列出整個檔案系統的尺寸、已用、可用空間,以及使用百分比。左側看到的tmpfs是系統暫存空間。
列出記憶體使用狀態
指令:free -hw

左欄Mem是指真正的記憶體,Swap是硬碟模擬的記憶體,也就是上面有提到類似Windows虛擬記憶體的東西。
依程序列出記憶體使用狀態
ps axo pid,user,%mem,%cpu,command –sort=%mem
ps (report a snapshot of the current processes) 指令是用來顯示目前執行的所有process。加上 ax 可以顯示所有的process, 加 o 可以自訂所要顯示的資料欄位。我們指定要顯示 pid (process id), user (執行者), %mem (記憶體用量百分比),%cpu (cpu用量百分比), command (執行的指令)。–sort=%mem 將會以記憶體用量來排序,如果想要反序,在%mem前面加上減號,變成 –sort=-%mem 即可。

刪除程序
指令:kill {pid} or pkill {process name}
後記
目前在DigitalOcean上開的機器已經六年多了,這中間除了AWS以外也沒有用過其他家了。不過前陣子遇到介接公部門API回應很慢的問題,得知Linode有東京的機房,於是就開了一台Linode,實際體驗一下不管是console的UI,或是機器連線品質等等。DigitalOcean這台就拿來用在一些比較無關緊要的事情。目前體感上沒有特別覺得哪邊特別快,瀏覽器的response時間看起來也大致上差不多。
硬要比較的話,我還是比較喜歡DigitalOcean的後台操作UI。不過價格上,最便宜的規格在Linode是5鎂,DigitalOcean漲價到6鎂。
如果想試試看,可以用我的推薦連結,立刻領取 DigitalOcean 60天期限的100美元額度 或 Linode 60天期限的100美元額度 來註冊呦。