在 Linux 上 JS 日志丢失能否找回,取决于日志是怎么产生的、存在哪里、是否被覆盖或删除。下面按常见情况给你一套排查与恢复思路。
文件还在但内容不对
ls -l /path/to/log/
du -sh /path/to/log/*
文件被误删(进程还在)
# 找到 node 进程
ps aux | grep node
# 查看打开的文件
ls -l /proc/<pid>/fd | grep log
如果能看到 deleted 文件:
cp /proc/<pid>/fd/<fd> /tmp/recover.log
✅ 这是最有可能找回的情况
pm2 logs
pm2 flush # ⚠️ 会清空,别乱用
日志一般在:
~/.pm2/logs/
docker logs <container>
或:
/var/lib/docker/containers/<id>/*-json.log
journalctl -u your-service.service --since "2024-01-01"
检查:
cat /etc/logrotate.d/*
如果已压缩:
ls /var/log/*.gz
zcat /var/log/app.log.1.gz
df -h
解决:
journalctl --vacuum-size=100M
或清理旧日志文件
可尝试恢复工具(成功率看运气):
# ext4
sudo extundelete /dev/sda1 --restore-file /path/log
# 通用
sudo photorec /dev/sda1
⚠️ 停止写入磁盘,立即操作
✅ 用成熟日志库
winstonpinobunyan✅ 同时输出到:
✅ 配置 logrotate
/var/log/app/*.log {
daily
rotate 14
compress
missingok
}
✅ 容器环境务必:
docker logs + 挂载 volume
你可以补充:
我可以直接给你对应恢复命令。