Linux 进程管理:查询、端口占用、终止与内存映射
以下以 Linux 的 procps 与 lsof 工具为例。23295、username、colin115 和目录路径都是示例,使用前替换并核对目标。查询其他用户的进程信息可能需要管理员权限;没有输出也可能是权限或匹配条件造成的。
查询进程
查看正在运行的进程
sh
ps -ef这是执行瞬间的快照,关注 PID、父进程 PID、用户和命令列;后续操作前重新核对,避免进程退出后 PID 被复用。
查看 root 用户的进程
sh
ps -u root -o pid,ppid,user,stat,comm,args通过用户字段筛选比 ps ... | grep root 更准确,后者也可能匹配命令参数里的文字。
按名称或完整命令行查找 PID
sh
pgrep -a redis默认按进程名匹配,-a 展示完整命令行。需要搜索参数时使用 pgrep -af '匹配内容',但匹配范围会扩大。Linux 的进程名匹配存在长度限制,较长名称需考虑 -f;不要直接把模糊搜索结果交给终止命令。
查找名称含 re 的进程
sh
pgrep -l re模式按正则表达式解释;精确匹配可以用 pgrep -lx redis-server。没有匹配时通常返回非零状态。pgrep 说明
显示所有进程与会话信息
sh
ps -eo pid,ppid,pgid,sid,user,stat,args实时监控
sh
top按 q 退出。输出随时间变化,不应只凭一次瞬时 CPU 占用判断持续故障。
查看端口占用
sh
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN这里仅查看 TCP 3306 的监听者;查找所有使用该端口的连接可去掉 -sTCP:LISTEN,查询 UDP 时需改成相应协议。
查看用户打开的文件
sh
sudo lsof -u username查看 PID 1 打开的文件
sh
sudo lsof -p 1现代发行版的 PID 1 可能是 systemd,不一定叫 init。lsof -c init 是按命令名匹配,不等同于查询 PID 1。
查看指定进程打开的文件
sh
lsof -p 23295查看目录及子目录中打开的文件
sh
lsof +D ./mydir1+D 递归检查子目录;只查指定目录这一层则使用 +d。大目录递归查询可能较慢,按需缩小范围。lsof 说明
终止进程
按 PID 请求退出
先确认 PID 对应的用户、命令和用途:
sh
ps -p 23295 -o pid,ppid,user,stat,args核对后再单独发送 TERM:
sh
kill -TERM 23295TERM 允许程序处理退出、保存数据和清理资源。由 systemd、容器编排或其他守护程序管理的服务,应优先使用对应服务管理命令,否则进程可能被自动重新启动。
无法正常退出时再考虑强制终止
等待正常退出并重新确认目标仍是同一个进程;只有确有必要时才使用:
sh
kill -KILL 23295KILL 无法被程序捕获,程序不能执行自身清理逻辑。kill 返回成功表示信号发送成功,不保证所有资源已立即释放;随后再查询 PID 和相关服务状态。
终止当前 Shell 的后台作业
sh
jobs -l确认列表中的作业编号,再使用例如 kill -TERM %1。%1 是当前支持作业控制的交互式 Shell 的作业号,不是系统 PID,也不能跨终端直接套用。
进程监控
按 CPU 或内存排序
启动 top 后,在界面内按对应按键,不把它们作为额外 Shell 命令:
P:按 CPU 使用率排序。M:按内存使用量排序。i:切换空闲任务的显示。q:退出。
多次观察趋势,再结合请求量、磁盘和网络负载判断。单个进程的虚拟地址空间大小也不等于实际占用的物理内存。
查看进程内存映射
sh
pmap -x 23295pmap 显示地址范围、映射大小和驻留内存等信息,具体列随实现与选项变化。它用于观察进程的内存映射,不能代替线程调用栈;要查某一线程正在执行哪条调用链,应根据程序运行时选择调试器或采样工具。
组合查询与批量处理
查找某用户下以 av_ 开头的进程
sh
pgrep -a -u colin115 '^av_'先检查每一项,确认都可以停止后,再独立执行同条件的 TERM 操作:
sh
pkill -TERM -u colin115 '^av_'不要把 ps 拼出的文本交给 sh 执行;只需停止部分进程时,改用核对后的 PID。查询和发送信号之间进程集合仍可能变化。
查找某用户下名称包含 HOST 的进程
sh
pgrep -a -u colin115 'HOST'核对后按需执行:
sh
pkill -TERM -u colin115 'HOST'默认区分大小写,匹配对象是进程名;确需匹配完整命令行时才使用 -f,并先用相同条件预览结果。批量操作完成后重复查询,检查是否仍有目标、是否自动重启或缺少信号权限。
Linux 学习路径
如果命令因权限不足而失败,先查看 Linux 文件权限;需要结合端口、连接和防火墙排查进程时,继续阅读 Linux 网络操作。