
用 VPS 或雲端主機架網站,主機商通常會給你 SSH 帳號。SSH 是用文字指令操作主機,第一次用的人看到黑底白字的畫面,常常不知道從哪裡開始。
這篇整理網站管理最常用的指令,再說明網站突然變慢、主機 CPU 飆高的時候,怎麼一步一步找原因。
怎麼連上主機
Windows 10、11 和 Mac 都內建 SSH,打開「終端機」或 PowerShell,輸入:
ssh 帳號@主機IP主機商如果把 SSH 改到別的連接埠(例如 2222),加上 -p 2222。第一次連線會問要不要信任這台主機,輸入 yes,再輸入密碼就進去了。
- 密碼輸入時畫面不會顯示任何字,這是正常的,打完按 Enter 就好。
- 可以的話,改用 SSH 金鑰登入,並關掉密碼登入。我們自己的主機記錄檔裡,每天都有機器人在猜 SSH 密碼。
看檔案、移動位置
pwd # 現在在哪個資料夾
ls -la # 列出檔案(含隱藏檔,例如 .htaccess)
cd /home/帳號/public_html # 換到網站資料夾
cd .. # 回到上一層
cat wp-config.php # 顯示整個檔案內容
less error.log # 一頁一頁看長檔案,按 q 離開
tail -n 50 error.log # 看檔案最後 50 行
tail -f error.log # 持續顯示新寫進來的內容,按 Ctrl+C 停止# 後面是說明,不用打。看記錄檔最常用 tail,-f 可以一邊重新整理網頁、一邊看錯誤即時跑出來。
複製、搬移、刪除
cp -a wp-config.php wp-config.php.bak # 改檔案前先複製一份備份
mv old-name.php new-name.php # 改名,也可以用來搬到別的資料夾
mkdir backup # 建立資料夾
rm old-file.zip # 刪除檔案rm 刪掉就沒了,沒有資源回收筒。網路上常看到的 rm -rf 會連同資料夾裡的東西整個刪掉、而且不會再問一次,打錯一個空格就可能刪掉整個網站。刪除之前,先用 ls 確認一次自己在哪個資料夾、要刪的是什麼。
用 nano 或 vim 改檔案
nano wp-config.phpnano 比較好上手:直接改,按 Ctrl+O 存檔、Enter 確認,Ctrl+X 離開。
有些主機只有 vim。vim 有「模式」的概念,很多人進去之後出不來:
- 進去之後按
i才能打字。 - 改完按
Esc,再輸入:wq按 Enter,存檔並離開。 - 改壞了不想存,按
Esc後輸入:q!按 Enter,不存檔離開。
壓縮備份、解壓縮
tar -czf site-backup.tar.gz public_html # 把 public_html 打包壓縮成一個檔案
tar -tzf site-backup.tar.gz | head # 不解開,先看看裡面有什麼
tar -xzf site-backup.tar.gz # 解壓縮到目前的資料夾搬家或大改之前,先打包一份。資料庫要另外匯出,只備份檔案是不夠的。
看硬碟、記憶體、資料夾大小
df -h # 每顆硬碟用了多少、還剩多少
free -h # 記憶體用了多少
du -sh * # 目前資料夾裡,每個檔案和資料夾各佔多大
du -sh * | sort -h # 同上,照大小排序,最大的在最下面主機空間不夠時,用 du -sh * | sort -h 一層一層往下找,常見的兇手是舊備份檔、記錄檔、快取資料夾。
網站變慢、CPU 飆高:怎麼查
1. 先看主機忙不忙
uptime
nprocuptime 最後三個數字是「負載」,分別是最近 1、5、15 分鐘的平均。nproc 是 CPU 核心數。負載長時間比核心數高,代表主機忙不過來。例如 4 核的主機,負載一直在 8 以上,網站就會明顯變慢。
2. 看是誰在吃 CPU
toptop 會即時列出最耗資源的程式。按 P 照 CPU 排序、按 M 照記憶體排序、按 q 離開。
想要一次看清楚的清單:
ps aux --sort=-%cpu | head -n 10網站常見的程式:
- php-fpm:執行 PHP(WordPress、Joomla)的程式。很多主機會寫成
php-fpm: pool 網域名稱,可以看出是哪個網站在忙。 - mysqld 或 mariadb:資料庫。資料庫一直很忙,常常是某個外掛的查詢寫得不好,或資料表太大。
- nginx、apache2、httpd:網頁伺服器本身。
看到不認得的程式、名稱很奇怪、又一直吃滿 CPU,要懷疑主機被入侵、被裝了挖礦程式,先截圖、記下名稱,再找主機商或工程師處理,不要自己亂刪。
3. 看網站記錄檔:是不是被機器人打
主機忙,但程式都正常,很多時候是有大量請求進來。網站的存取記錄檔(access log)每一行是一次請求,位置每家主機不同,主機控制台通常查得到。
# 哪些 IP 請求最多(前 10 名)
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -n 10
# 有多少次請求 WordPress 的登入頁和 xmlrpc.php
grep -c "wp-login.php" access.log
grep -c "xmlrpc.php" access.log
# 最近 2000 次請求的狀態碼分布(200 正常、404 找不到、5xx 伺服器錯誤)
tail -n 2000 access.log | awk '{print $9}' | sort | uniq -c | sort -rn(指令裡的 $1、$9 是記錄檔的第幾欄,以最常見的格式為準;你的主機記錄格式不同的話,欄位可能要調整。)
實際的例子:正威自己的網站 ahwei.tw 不是用 WordPress 做的,但一份記錄檔裡,仍然有 1,200 多次請求 wp-login.php、100 多次請求 xmlrpc.php。這些都是機器人在亂槍打鳥,看到網站就試試看是不是 WordPress、能不能猜到密碼。用 WordPress 的網站,這種請求只會更多。
4. 常見原因和處理方向
- 機器人猛打登入頁、xmlrpc.php:限制登入次數、不用 xmlrpc.php 就封鎖它,或在主機防火牆擋掉一直來的 IP。WordPress 登入保護請看WordPress 登入安全怎麼做?。
- 搜尋引擎或 AI 爬蟲爬太兇:從記錄檔的瀏覽器資訊(User-Agent)看得出是哪一家,可以用 robots.txt 或主機設定限制。請看WordPress robots.txt 怎麼寫?。
- 外掛或排程工作:某個外掛在背景跑很重的工作,或 WordPress 的排程(wp-cron)同時跑太多。停用最近裝的外掛試試看。
- 沒有快取:每個訪客都要 PHP 和資料庫重新產生一次頁面。加上快取,主機負擔會小很多,請看WordPress 網站加速完整攻略。
- 主機規格真的不夠:流量變大了,負載長期都很高,就要考慮升級主機。
延伸閱讀
主機出狀況時,看得懂這些指令,至少知道問題在哪一層。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站管家年費包含主機、系統與安全性更新,台北與全台客戶也歡迎來聊聊。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。