跳轉到

建立 2026-09-14 更新 2026-09-14

程序管理

你在終端機打的每一個指令,啟動的都是一個程序(process)。服務掛了、CPU 飆高、SSH 連不上,第一步通常是看「現在有誰在跑、是誰開的、能不能結束它」。

列出程序:ps

ps
ps aux
ps aux | grep ssh

ps 只看目前這個終端相關程序;ps aux 看全系統。常用欄位:

欄位 意思
USER 擁有者
PID 程序編號,結束它時要用
%CPU / %MEM 資源占用
STAT 狀態(R 跑中、S 睡眠、Z zombie)
COMMAND 啟動指令

互動式總覽用 top(按 Q 離開)。有安裝的話 htop 更好讀。

top

結束程序:kill

kill 1234
kill -9 1234
killall nginx
pkill -f 'python app.py'
  • 預設 kill PID 送 SIGTERM(15),程式有機會存檔再退出
  • -9 是 SIGKILL,立刻強制結束,程式無法攔截。先試不加 -9
  • killall 依程序名;pkill 可用較彈性的比對

沒權限就加 sudo。PID 一定要再確認一次,殺錯會讓服務中斷。

前景、背景與工作

long-task &
jobs
fg
bg
  • 指令結尾的 &:丟到背景,shell 立刻還你提示符
  • Ctrl+Z:暫停目前前景工作
  • bg:讓暫停的工作在背景繼續
  • fg:拉回前景

終端機關掉後,背景工作預設也會被結束。要它繼續跑:

nohup ./server.sh > server.log 2>&1 &

更常見的做法是把長駐程式做成 systemd 服務,而不是靠 nohup

還有誰占用這個檔/埠

lsof -i :22
sudo lsof -i :80

「這個 port 被誰占走」幾乎都用這條。只看監聽中的網路連線,也可以用 ss

總結

ps aux 找 PID,kill 先溫和再 -9。長駐程式交給 systemd;臨時背景工作才用 & / nohup