前陣子因為用了六年多的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 即可。
htop
htop可以更直觀的列出目前執行的process的資源使用狀況,甚至還支援滑鼠操作。
刪除程序
指令:kill {pid} or pkill {process name}
後記
目前在 DigitalOcean 上開的機器已經六年多了,這中間除了 AWS 以外也沒有用過其他家了。不過前陣子遇到介接台灣公部門 API 會回應很慢的問題,不知道是不是因為機房太遠。這時得知 Linode 有東京的機房,於是就開了一台東京機房的 Linode 來實際體驗一下。不管是管理後台的 UI,或是連線速度等等都相當不錯。介接台灣公部門 API 也非常快,順利地解決了問題!
DigitalOcean 的後台 UI 操作起來感覺比較清爽,且 DigitalOcean 的機器在重開的時候非常快,Linode 則需要等蠻久的。但價格上,最便宜的近似規格在 Linode 是5鎂,DigitalOcean 則要6鎂。
如果想試試看,可以用我的推薦連結,立刻領取 DigitalOcean 60天期限的200美元額度,或 Linode 60天期限的100美元額度 來註冊呦。