掌握進程查看、資源監控、優先級調整、信號控制與限額管理命令,是 Linux 運維與開發的基本功。本文系統梳理 12 個高頻命令的核心參數與實戰場景。
ps aux # 所有進程,BSD 風格,含 USER、%CPU、%MEM、VSZ、RSS、STAT、START、TIME、COMMAND
ps -ef # 所有進程,SystemV 風格,含 UID、PID、PPID、C、STIME、TTY、TIME、CMD
ps -ef | grep nginx # 過濾特定進程
ps -Lf PID # 顯示指定進程的所有線程 (LWP)
pstree -p # 顯示 PID
pstree -u # 顯示用戶
pstree -a # 顯示完整命令行參數
pstree 1234 # 以 PID 1234 為根顯示子樹
啟動後交互熱鍵:
P:按 %CPU 排序(默認)M:按 %MEM 排序1:切換顯示各 CPU 核心使用率k:輸入 PID 發送信號殺死r:輸入 PID 修改 nice 值q:退出nice -n -5 ./myapp # 優先級 -5 (較高), 需 root 權限
nice -n 10 ./myapp # 優先級 10 (較低), 普通用戶可用
# 範圍 -20 (最高) ~ 19 (最低), 默認 0
renice -n -5 -p 1234 # 調整 PID 1234
renice -n 5 -u www-data # 調整用戶所有進程
renice -n 0 -g developers # 調整組所有進程
# 普通用戶只能降低優先級 (增大 nice),root 可任意調整
kill -TERM 1234 # 優雅終止 (默認 SIGTERM=15)
kill -KILL 1234 # 強制殺死 (SIGKILL=9), 不可捕獲/忽略, 慎用
killall -TERM nginx # 按進程名殺死所有 nginx
pkill -TERM -u www-data # 按用戶殺死
pkill -f "java.*myapp" # 按完整命令行模式匹配
常用信號:1 HUP(重載配置)、2 INT(Ctrl+C 中斷)、9 KILL(強制殺死)、15 TERM(優雅終止)、18 CONT(繼續)、19 STOP(暫停)、20 TSTP(Ctrl+Z 掛起)。
ulimit -a # 顯示所有軟限制
ulimit -Ha # 顯示硬限制
ulimit -n 65535 # 最大文件描述符 (需 root 或配置 /etc/security/limits.conf)
ulimit -u 1024 # 最大用戶進程數
ulimit -v 2097152 # 最大虛擬內存 (KB)
ulimit -c unlimited # 允許生成 core dump
持久化配置編輯 /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
* soft nproc 32768
* hard nproc 32768
w # 當前登錄用戶、負載、空閒、執行命令
who # 登錄用戶、終端、登錄時間、遠程 IP
whoami # 當前有效用戶名
id # UID、GID、Groups 詳情
pgrep -u mint ssh # 用戶 mint 的 ssh 進程 PID
pgrep -f "python.*server" # 完整命令行匹配
pgrep -l nginx # 顯示 PID 與進程名
./long_task & # 後台啟動 (作業號 [1])
Ctrl+Z # 暫停前台任務
bg %1 # 將作業 1 放入後台運行
fg %1 # 將作業 1 調回前台
jobs -l # 列出所有後台作業及 PID
disown %1 # 從作業表移除,關閉終端不受影響
ipcs -m # 共享內存段
ipcs -s # 信號量陣列
ipcs -q # 消息隊列
ipcs -p -m # 顯示創建者/最後操作者 PID
ipcrm -m SHMID # 刪除共享內存
ipcrm -s SEMID # 刪除信號量
ipcrm -q MSGID # 刪除消息隊列
htop + ps aux | grep。ulimit 限額,防止單進程耗盡資源。SIGTERM 給予清理機會,SIGKILL 為最後手段。pgrep/pkill 避免 PID 竄改風險。