在Droplet中运行pm2 restart server时.env文件被删除,求排查原因
排查pm2重启时.env文件被删除的问题
以下是逐步定位问题根源的实用排查方向:
检查pm2生态配置文件
查看项目根目录的ecosystem.config.js(或ecosystem.json),重点核对exec_prestart、post_restart等钩子脚本,确认是否存在删除.env的命令(比如rm -f .env)。执行命令快速查看:cat ecosystem.config.js排查项目启动脚本
打开package.json,检查scripts字段下的start、restart等命令,看是否包含删除.env的逻辑(比如"start": "rm .env && node server.js")。执行命令快速定位:cat package.json | grep -A 10 "scripts"查看pm2日志找操作痕迹
pm2的日志会记录进程启动/重启时执行的所有命令,搜索.env或rm关键词,定位是否有删除操作:pm2 logs server --lines 100 | grep -E "rm|.env"检查系统自动清理机制
确认服务器是否有定时任务(cron)或系统清理工具(如tmpwatch)误删文件,虽然这类操作通常和pm2重启无直接关联,但可以排除:crontab -l ls -la /etc/cron.* | grep -E "clean|tmp"同时查看
.env的权限,确保文件权限正常,避免被意外修改/删除:ls -la .env测试pm2版本兼容性
部分旧版本pm2存在已知bug可能导致文件异常,尝试升级到最新稳定版:npm install pm2@latest -g pm2 update临时验证测试
先备份.env文件,再手动执行重启操作,实时监控文件变化:cp .env .env.bak pm2 restart server # 检查文件是否存在 ls -la .env # 实时查看pm2日志 tail -f $(pm2 log server --path)如果文件被删除,对比备份文件,确认是被彻底删除还是替换,排查是否有其他进程在操作该文件。
内容的提问来源于stack exchange,提问作者Muhammad Lahin
相关产品推荐
相关产品推荐

