温馨提示×

怎样批量管理linux进程

小樊
46
2026-09-09 13:30:53
栏目: 智能运维

在 Linux 下“批量管理进程”通常分为几种场景:批量查看、批量筛选、批量杀掉、批量启停、以及用工具做长期管理。下面按实用程度给你一套方案。


一、用命令批量查看 / 筛选进程

1. ps + grep

ps -ef | grep nginx
ps aux | grep java

2. pgrep(最常用、最安全)

pgrep nginx
pgrep -u www nginx

3. 按用户 / 命令批量查看

ps -u appuser
ps -C java

二、批量杀进程(最常用)

✅ 推荐方式(安全)

pkill -f nginx
pkill -u appuser

✅ 精确杀一批 PID

pgrep java | xargs kill -9

⚠️ 不推荐但常见

kill -9 $(ps -ef | grep test | grep -v grep | awk '{print $2}')

三、批量启停(服务级)

1. systemd(服务器首选)

systemctl start nginx
systemctl stop nginx
systemctl restart nginx

批量:

systemctl restart nginx redis mysql

查看所有失败服务:

systemctl --failed

四、用脚本批量管理(自定义)

示例:批量重启某类进程

#!/bin/bash
for p in $(pgrep -f "worker"); do
  kill -TERM $p
  sleep 1
done
./start_workers.sh

五、高级批量管理工具(生产推荐)

1. supervisor

适合 Python / Java / 脚本进程

  • 配置文件批量管理
  • Web 界面
  • 自动重启
[program:worker1]
command=/opt/worker1.sh
autostart=true
supervisorctl restart all

2. systemd unit + target

适合服务器长期运行


3. Ansible(跨机器批量)

- name: restart nginx
  service:
    name: nginx
    state: restarted
ansible all -m shell -a "pkill -f worker"

六、容器场景(Docker / K8s)

Docker

docker ps -q | xargs docker stop
docker restart $(docker ps -q)

Kubernetes

kubectl delete pod -l app=nginx
kubectl rollout restart deployment/nginx

七、常见坑提醒

  • ❌ 不要 kill -9 数据库主进程
  • ✅ 先 SIGTERM,再 SIGKILL
  • ✅ 用 pkill -fgrep + kill 安全
  • ✅ 生产环境优先 systemd / supervisor

如果你能说清楚:

  • 单台还是多台服务器
  • 服务进程还是脚本进程
  • 杀、重启、监控还是自动拉起

我可以直接给你一套可复制的配置或脚本。

0