减less.forever日志文件的大小而不会中断永久进程

forever创build的日志文件( /root/.forever )已经达到了一个很大的尺寸,几乎填满了硬盘。

如果在forever进程仍在运行的情况下删除日志文件, forever logs 0将返回undefined 。 logging当前forever进程恢复的唯一方法是stop并再次start节点脚本。

有没有办法只修剪日志文件,而不中断日志或forever过程?

所以Foreverjs将继续写入相同的文件句柄,理想情况下会支持一些东西,让你发送一个信号并旋转到不同的文件。

如果没有这个需要在Forever.js包中进行代码更改的选项,您的选项如下所示:

命令行版本:

  1. 做一个备份
  2. 清空文件

cp forever-guid.log backup && :> forever-guid.log;

如果以高速写入日志文件,则会有轻微的风险,最终会在备份和归零之间写入一条日志行,导致日志行丢失。

使用Logrotate w / copytruncate

你可以设置logrotate来观看永久日志目录,根据文件大小或时间自动复制和截断。

让你的节点代码处理这个

您可以让日志代码查看日志文件的行数,然后执行复制截断操作 – 这样可以避免潜在的数据丢失。

编辑:我原本以为splittruncate可以做这项工作。 他们可能只能执行看起来很尴尬。 Split没有一个很好的方法来分割成一个短的文件(原始日志)和一个长的(备份)。 Truncate (除了不总是安装的事实之外)不会重置写指针,所以永远只写入相同的字节,导致奇怪的数据。

您可以截断日志文件而不会丢失它的句柄( 引用 )。

 cat /dev/null > largefile.txt