You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PM2如何列出已停止进程并仅重启对应进程

PM2 停止进程自动重启实现方案

快速实现命令

直接通过管道串联提取、执行逻辑即可,不需要单独把进程名存入列表遍历,一行命令就能完成操作:

pm2 ls | grep "stopped" | grep "process" | awk '{print $2}' | xargs -I {} pm2 restart {}

命令逻辑说明:

  • awk '{print $2}' 会按空白符分割pm2 ls的输出结果,提取第二列的进程名
  • xargs -I {} 会把前面输出的每一个进程名替换到{}位置,逐行执行重启操作,支持同时处理多个停止的进程

开机触发脚本配置

如果需要服务器重启时自动执行该逻辑,可以按以下步骤配置:

  1. 新建shell脚本文件,比如命名为pm2-restart-stopped.sh,内容如下:
#!/bin/bash
# 等待10秒确保PM2服务完全启动,避免开机时命令执行失败
sleep 10
# 重启所有stopped状态的业务进程
pm2 ls | grep "stopped" | grep "process" | awk '{print $2}' | xargs -I {} pm2 restart {} > /dev/null 2>&1
  1. 给脚本添加执行权限:
chmod +x /你的脚本存放路径/pm2-restart-stopped.sh
  1. 添加到开机启动项,推荐用crontab的@reboot规则,执行crontab -e后追加如下内容即可:
@reboot /你的脚本存放路径/pm2-restart-stopped.sh

更稳定的兼容方案

如果存在PM2版本差异导致ls输出列错位的问题,可以用PM2原生的JSON输出格式提取进程信息,兼容性更强:

该方法依赖jq工具,需要提前安装(Debian/Ubuntu执行apt install jq,CentOS/RHEL执行yum install jq)

pm2 jlist | jq -r '.[] | select(.pm2_env.status == "stopped") | .name' | xargs -I {} pm2 restart {}

内容的提问来源于stack exchange,提问作者SVill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:36:05