0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

網站主機 SSH 常用指令與 CPU 飆高排查

網站主機 SSH 常用指令與 CPU 飆高排查 封面

用 VPS 或雲端主機架網站,主機商通常會給你 SSH 帳號。SSH 是用文字指令操作主機,第一次用的人看到黑底白字的畫面,常常不知道從哪裡開始。

這篇整理網站管理最常用的指令,再說明網站突然變慢、主機 CPU 飆高的時候,怎麼一步一步找原因。

怎麼連上主機

Windows 10、11 和 Mac 都內建 SSH,打開「終端機」或 PowerShell,輸入:

Shell / 終端機
ssh 帳號@主機IP

主機商如果把 SSH 改到別的連接埠(例如 2222),加上 -p 2222。第一次連線會問要不要信任這台主機,輸入 yes,再輸入密碼就進去了。

  • 密碼輸入時畫面不會顯示任何字,這是正常的,打完按 Enter 就好。
  • 可以的話,改用 SSH 金鑰登入,並關掉密碼登入。我們自己的主機記錄檔裡,每天都有機器人在猜 SSH 密碼。

看檔案、移動位置

Shell / 終端機
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 可以一邊重新整理網頁、一邊看錯誤即時跑出來。

複製、搬移、刪除

Shell / 終端機
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 改檔案

Shell / 終端機
nano wp-config.php

nano 比較好上手:直接改,按 Ctrl+O 存檔、Enter 確認,Ctrl+X 離開。

有些主機只有 vim。vim 有「模式」的概念,很多人進去之後出不來:

  • 進去之後按 i 才能打字。
  • 改完按 Esc,再輸入 :wq 按 Enter,存檔並離開。
  • 改壞了不想存,按 Esc 後輸入 :q! 按 Enter,不存檔離開。

壓縮備份、解壓縮

Shell / 終端機
tar -czf site-backup.tar.gz public_html   # 把 public_html 打包壓縮成一個檔案
tar -tzf site-backup.tar.gz | head        # 不解開,先看看裡面有什麼
tar -xzf site-backup.tar.gz               # 解壓縮到目前的資料夾

搬家或大改之前,先打包一份。資料庫要另外匯出,只備份檔案是不夠的。

看硬碟、記憶體、資料夾大小

Shell / 終端機
df -h                    # 每顆硬碟用了多少、還剩多少
free -h                  # 記憶體用了多少
du -sh *                 # 目前資料夾裡,每個檔案和資料夾各佔多大
du -sh * | sort -h       # 同上,照大小排序,最大的在最下面

主機空間不夠時,用 du -sh * | sort -h 一層一層往下找,常見的兇手是舊備份檔、記錄檔、快取資料夾。

網站變慢、CPU 飆高:怎麼查

1. 先看主機忙不忙

Shell / 終端機
uptime
nproc

uptime 最後三個數字是「負載」,分別是最近 1、5、15 分鐘的平均。nproc 是 CPU 核心數。負載長時間比核心數高,代表主機忙不過來。例如 4 核的主機,負載一直在 8 以上,網站就會明顯變慢。

2. 看是誰在吃 CPU

Shell / 終端機
top

top 會即時列出最耗資源的程式。按 P 照 CPU 排序、按 M 照記憶體排序、按 q 離開。

想要一次看清楚的清單:

Shell / 終端機
ps aux --sort=-%cpu | head -n 10

網站常見的程式:

  • php-fpm:執行 PHP(WordPress、Joomla)的程式。很多主機會寫成 php-fpm: pool 網域名稱,可以看出是哪個網站在忙。
  • mysqld 或 mariadb:資料庫。資料庫一直很忙,常常是某個外掛的查詢寫得不好,或資料表太大。
  • nginx、apache2、httpd:網頁伺服器本身。

看到不認得的程式、名稱很奇怪、又一直吃滿 CPU,要懷疑主機被入侵、被裝了挖礦程式,先截圖、記下名稱,再找主機商或工程師處理,不要自己亂刪。

3. 看網站記錄檔:是不是被機器人打

主機忙,但程式都正常,很多時候是有大量請求進來。網站的存取記錄檔(access log)每一行是一次請求,位置每家主機不同,主機控制台通常查得到。

Shell / 終端機
# 哪些 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 不會公開。

讓我們一起打造
您的專屬網站!