进程管理入门:查看和控制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
实时监控 tophtop
搜索进程 pgrep 名称
杀死进程 kill PID
强制杀死 kill -9 PID
按名称杀 pkill 名称
后台运行 nohup command &
服务状态 systemctl status 服务

小结

进程管理核心:

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

有问题评论区交流~

相关推荐
老师用之于民1 分钟前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.5 分钟前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
犀思云11 分钟前
企业总部网络全球化扩张:利用FusionWAN NaaS 破解“网络成本瓶颈”
网络·人工智能·机器人·智能仓储·专线
serve the people19 分钟前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don39 分钟前
GPU服务器搭建大模型指南
服务器·人工智能
扶苏100244 分钟前
vue使用event.dataTransfer实现A容器数据拖拽复制到到B容器
前端·vue.js·chrome
xixixi777771 小时前
互联网和数据分析中的核心指标 DAU (日活跃用户数)
大数据·网络·数据库·数据·dau·mau·留存率
焦点链创研究所1 小时前
去中心化实体基础设施网络的崛起:比较分析
网络·去中心化·区块链
江畔何人初1 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~1 小时前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32