温馨提示×

centos怎样批量管理进程

小樊
38
2026-10-12 01:04:16
栏目: 智能运维

在 CentOS(以及一般 Linux 系统)上,“批量管理进程”通常指同时启动、停止、重启、监控一批进程。常见做法按“轻量 → 专业”分为以下几类,你可以按场景选择。


一、最基础:Shell 脚本批量管理(适合简单场景)

1. 批量启动进程

#!/bin/bash
for i in 1 2 3; do
    nohup /opt/app/bin/server --id=$i > /var/log/app_$i.log 2>&1 &
    echo "started $i, pid=$!"
done

2. 批量停止进程

pkill -f "/opt/app/bin/server"

或

ps -ef | grep app/bin/server | grep -v grep | awk '{print $2}' | xargs kill -9

✅ 优点:零依赖
❌ 缺点:无自动重启、无状态管理


二、使用 systemd(CentOS 7+ 推荐)

1. 单服务多实例(推荐)

# /etc/systemd/system/app@.service
[Unit]
Description=App %i

[Service]
ExecStart=/opt/app/bin/server --id=%i
Restart=always

[Install]
WantedBy=multi-user.target

批量操作:

systemctl start app@1 app@2 app@3
systemctl stop app@1 app@2 app@3
systemctl restart app@*

查看状态:

systemctl status 'app@*'

✅ 优点:开机自启、崩溃自恢复、日志统一(journalctl)


三、Supervisor(适合非 systemd 或 Python 项目)

安装

yum install epel-release -y
yum install supervisor -y
systemctl enable --now supervisord

示例配置

[program:app1]
command=/opt/app/bin/server --id=1
autostart=true
autorestart=true
stdout_logfile=/var/log/app1.log

批量管理:

supervisorctl start all
supervisorctl stop all
supervisorctl restart all
supervisorctl status

✅ 优点:Web / CLI、进程组管理
❌ 缺点:额外组件


四、进程组(process group)方式

setsid bash -c '
for i in 1 2 3; do
    /opt/app/bin/server --id=$i &
done
wait
'

统一杀掉:

pkill -P <父PID>

五、容器化(高级 & 可扩展)

如果是大量进程:

  • Docker + docker-compose
  • Kubernetes(DaemonSet / Deployment)
docker-compose up -d
docker-compose restart

六、选型建议

场景 推荐方式
少量服务 Shell + systemd
多实例服务 systemd @实例
Python / 老系统 Supervisor
大规模 容器 / K8s

如果你能补充说明:

  • 进程数量(几个 / 上百)
  • 是否需自动重启
  • CentOS 版本(6 / 7 / 8)

我可以给你一套可直接用的配置模板。

0 踩