如何在GitHub Actions中使用pm2启动服务禁止日志流输出避免超时
解决方案
方法1:直接修改启动命令重定向输出
在原有启动命令末尾增加输出重定向与后台运行标识即可解决:
NODE_ENV=production pm2 start ecosystem.config.json > /dev/null 2>&1 &
说明:
> /dev/null将标准输出流定向到空设备,丢弃所有正常输出2>&1将标准错误流合并到标准输出流,一同丢弃- 末尾的
&将命令放入后台执行,SSH会话无需等待进程返回,GitHub Action会直接进入下一步不会卡住
如果需要屏蔽pm2自身的启动状态提示,可以额外加--silent参数:
NODE_ENV=production pm2 start ecosystem.config.json --silent > /dev/null 2>&1 &
方法2:修改ecosystem配置文件指定日志路径
如果需要保留应用日志到服务器本地,不想直接丢弃,可以在ecosystem.config.json中增加日志输出配置,避免日志打印到标准输出:
{ "apps": [ { "name": "apitoid", "script": "src/index.js", "instances": 1, "autorestart": true, "watch": false, "time": true, "env": { "NODE_ENV": "production" }, // 新增以下日志配置 "out_file": "./logs/app-out.log", "error_file": "./logs/app-error.log", "merge_logs": true } ] }
如果完全不需要保留日志,可以把日志路径直接设为/dev/null:
"out_file": "/dev/null", "error_file": "/dev/null"
配置修改后,直接执行原有启动命令即可,日志会写入指定文件不会输出到控制台。
方法3:使用nohup加固后台运行(可选)
如果担心SSH会话断开影响进程运行,可以用nohup包裹启动命令,进一步确保进程完全脱离当前会话:
NODE_ENV=production nohup pm2 start ecosystem.config.json > /dev/null 2>&1 &
内容的提问来源于stack exchange,提问作者Kiran Maniya
相关产品推荐
相关产品推荐

