暴发户日志不旋转

我有一个自定义的upstart脚本来pipe理Node API服务。 该脚本pipe道输出到/var/log/upstart/api-access.log 。 我所看到的是旧的日志被归档到api-access.log.1.gz ,但是没有创build一个新的api-access.log文件。

任何想法,为什么这可能会发生,或者我能做些什么来使它正确?

我的upstart文件的脚本部分如下所示:

 script chdir /opt/www/api exec sudo -u www-data NODE_ENV=production npm start >> /var/log/upstart/api-access.log end script 

当/var/log/upstart/api-access.log被归档时,原来的文件系统链接被删除,但是inode仍然保持着被执行进程保存的状态。 该过程继续写入这个inode,即使没有引用它,并将继续这样做,直到过程重新启动。

除非出于某种原因,将输出redirect到该文件,否则应该避免这样做。 Upstart将所有的输出写入/ var / log / upstart中的一个文件。 它还会在每次写入时重新打开文件,以便在文件被日志旋转删除的情况下重新创build文件。

编辑JennyD:如果你想要写入一个文件,设置你的日志轮换脚本复制和截断,而不是移动文件。 这样,原始的文件句柄将保持可用,但内容将被移动到一个档案文件。