程序管理
你在終端機打的每一個指令,啟動的都是一個程序(process)。服務掛了、CPU 飆高、SSH 連不上,第一步通常是看「現在有誰在跑、是誰開的、能不能結束它」。
列出程序:ps
ps 只看目前這個終端相關程序;ps aux 看全系統。常用欄位:
| 欄位 | 意思 |
|---|---|
| USER | 擁有者 |
| PID | 程序編號,結束它時要用 |
| %CPU / %MEM | 資源占用 |
| STAT | 狀態(R 跑中、S 睡眠、Z zombie) |
| COMMAND | 啟動指令 |
互動式總覽用 top(按 Q 離開)。有安裝的話 htop 更好讀。
結束程序:kill
- 預設
kill PID送 SIGTERM(15),程式有機會存檔再退出 -9是 SIGKILL,立刻強制結束,程式無法攔截。先試不加-9killall依程序名;pkill可用較彈性的比對
沒權限就加 sudo。PID 一定要再確認一次,殺錯會讓服務中斷。
前景、背景與工作
- 指令結尾的
&:丟到背景,shell 立刻還你提示符 - Ctrl+Z:暫停目前前景工作
bg:讓暫停的工作在背景繼續fg:拉回前景
終端機關掉後,背景工作預設也會被結束。要它繼續跑:
更常見的做法是把長駐程式做成 systemd 服務,而不是靠 nohup。
還有誰占用這個檔/埠
「這個 port 被誰占走」幾乎都用這條。只看監聽中的網路連線,也可以用 ss。
總結
ps aux 找 PID,kill 先溫和再 -9。長駐程式交給 systemd;臨時背景工作才用 & / nohup。