进程管理入门:查看和控制Linux进程

进程管理入门:查看和控制Linux进程

服务器上跑着很多程序,怎么查看?怎么管理?

今天聊聊Linux进程管理的基础知识。

查看进程

ps命令:

bash 复制代码
# 查看所有进程
ps aux

# 搜索特定进程
ps aux | grep nginx

输出解读:

复制代码
USER    PID  %CPU %MEM    VSZ   RSS TTY   STAT  TIME COMMAND
root    1234  0.5  2.1  123456 21000 ?    Sl   10:23 nginx
  • USER:运行用户
  • PID:进程ID
  • %CPU:CPU占用
  • %MEM:内存占用
  • STAT:进程状态
  • COMMAND:命令名

top/htop实时监控:

bash 复制代码
top

常用操作:

  • P:按CPU排序
  • M:按内存排序
  • k:杀进程
  • q:退出

推荐用htop,更直观:

bash 复制代码
apt install htop
htop

查找进程ID

bash 复制代码
# 用pgrep
pgrep nginx

# 用pidof
pidof nginx

# 用ps过滤
ps aux | grep nginx | awk '{print $2}'

杀死进程

用kill命令:

bash 复制代码
# 正常终止(发送SIGTERM)
kill 1234

# 强制杀死(发送SIGKILL)
kill -9 1234

按名称杀:

bash 复制代码
# 杀所有匹配的进程
pkill nginx

# 杀所有匹配的进程(更精确)
killall nginx

先查再杀的套路:

bash 复制代码
# 找到PID
ps aux | grep nginx

# 杀掉
kill 1234

进程状态

复制代码
R - 运行中
S - 睡眠中(等待事件)
D - 不可中断睡眠(通常是IO)
Z - 僵尸进程(已结束但未被回收)
T - 停止/挂起

处理僵尸进程:

僵尸进程(Z状态)本身不占资源,但说明父进程有问题。

bash 复制代码
# 找僵尸进程的父进程
ps -ef | grep defunct
# 找到PPID,kill父进程

后台运行

&符号:

bash 复制代码
./script.sh &

nohup命令:

bash 复制代码
nohup ./script.sh &

nohup会忽略挂断信号,退出终端后进程继续运行。

查看后台任务:

bash 复制代码
jobs

把后台任务调到前台:

bash 复制代码
fg %1

进程优先级

查看优先级:

bash 复制代码
ps -eo pid,ni,comm | head

NI列是nice值,-20到19,越小优先级越高。

调整优先级:

bash 复制代码
# 启动时指定
nice -n 10 ./script.sh

# 修改运行中的进程
renice 10 -p 1234

系统服务管理

现代Linux用systemd管理服务:

bash 复制代码
# 查看服务状态
systemctl status nginx

# 启动/停止/重启
systemctl start nginx
systemctl stop nginx
systemctl restart nginx

# 开机自启
systemctl enable nginx
systemctl disable nginx

# 查看所有运行中的服务
systemctl list-units --type=service --state=running

实战案例

案例1:找出CPU占用最高的进程

bash 复制代码
ps aux --sort=-%cpu | head -10

案例2:找出内存占用最高的进程

bash 复制代码
ps aux --sort=-%mem | head -10

案例3:杀死所有Java进程

bash 复制代码
pkill -f java

案例4:查看进程的详细信息

bash 复制代码
# 查看进程打开的文件
lsof -p 1234

# 查看进程的网络连接
ss -tlnp | grep 1234

# 查看进程的资源限制
cat /proc/1234/limits

案例5:监控特定进程

bash 复制代码
# 实时看某个进程的资源占用
top -p 1234

# 或者用watch
watch -n 1 "ps -p 1234 -o %cpu,%mem,cmd"

screen/tmux保持会话

SSH断开后想让程序继续跑,用screen或tmux:

bash 复制代码
# 创建会话
screen -S myapp

# 运行程序
./my_long_script.sh

# 分离会话(Ctrl+A然后按D)

# 重新连接
screen -r myapp

即使SSH断了,进程也不会停。

远程进程管理

管理多台服务器的进程,我用星空组网连起来后可以批量操作:

bash 复制代码
# 批量查看nginx状态
for ip in 10.26.1.{10..15}; do
    echo "=== $ip ==="
    ssh root@$ip "systemctl status nginx | head -5"
done

比一台台登录方便多了。

常用命令速查

场景 命令
查看所有进程 ps aux
实时监控 top 或 htop
搜索进程 pgrep 名称
杀死进程 kill PID
强制杀死 kill -9 PID
按名称杀 pkill 名称
后台运行 nohup command &
服务状态 systemctl status 服务

小结

进程管理核心:

  • 看进程:ps aux / top
  • 杀进程:kill / pkill
  • 后台运行:nohup ... &
  • 服务管理:systemctl

有问题评论区交流~

相关推荐
treesforest4 分钟前
网络安全中的IP地址查询:从日志里的一条线索到溯源的关键证据
网络·web安全·php
IT大白鼠17 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 0 篇 · 导读:把 Linux 运维交给 AI,到底靠谱吗
linux·运维·人工智能
分布式存储与RustFS31 分钟前
自托管对象存储的三种 TLS 签发:自签、Let‘s Encrypt、内网 CA 的选择与轮换
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
AI智讯中枢38 分钟前
高性能 C++ 实战 (五):perf+FlameGraph 火焰图生产实战,精准定位 CPU / 缓存 / 锁瓶颈,避坑 + 完整实操案例
linux·c++·性能调优·性能分析·perf·flamegraph·火焰图
liangshanbo121543 分钟前
面试题:HTTP/2有哪些升级
网络·网络协议·http
兴通物联科技1 小时前
对俄出口诚实标识 2026 时间节点与产线赋码采集技术方案
大数据·服务器·单片机·嵌入式硬件·深度学习·计算机视觉
VidDown1 小时前
从一堆脚本到能维护的系统:视频处理管道的工程化
服务器·ffmpeg·音视频·视频编解码
Li-Yongjun1 小时前
fuser
运维
William Dawson1 小时前
kkFileView 内网 ARM 服务器全链路部署:从「找不到 office」到全绿通关(超详细排障实录)
运维·服务器
海宇数据1 小时前
零信任架构实战:基于海宇车型识别精准构建自动化违章处理网关
运维·人工智能·架构·自动化