在 CentOS(以及一般 Linux 系统)上,“批量管理进程”通常指同时启动、停止、重启、监控一批进程。常见做法按“轻量 → 专业”分为以下几类,你可以按场景选择。
#!/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
pkill -f "/opt/app/bin/server"
或
ps -ef | grep app/bin/server | grep -v grep | awk '{print $2}' | xargs kill -9
✅ 优点:零依赖
❌ 缺点:无自动重启、无状态管理
# /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)
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、进程组管理
❌ 缺点:额外组件
setsid bash -c '
for i in 1 2 3; do
/opt/app/bin/server --id=$i &
done
wait
'
统一杀掉:
pkill -P <父PID>
如果是大量进程:
docker-compose up -d
docker-compose restart
| 场景 | 推荐方式 |
|---|---|
| 少量服务 | Shell + systemd |
| 多实例服务 | systemd @实例 |
| Python / 老系统 | Supervisor |
| 大规模 | 容器 / K8s |
如果你能补充说明:
我可以给你一套可直接用的配置模板。