Answers:
您应该结合使用floglogrotate
。如果通过此管道SIGHUP
传输应用程序输出,则可以执行flog进程而不必终止正在运行的应用程序。
flog(文件记录器)是一个从STDIN读取输入并写入文件的程序。
如果收到SIGHUP,将重新打开该文件,以允许日志轮换[请参见RH上的logrotate(8)。]
仅当flog检测到发生轮换时(即旧文件消失或inode更改),才会重新打开日志文件。flog非常小(小于500字节的内存占用。)
To save output to FILE, use 'nohup COMMAND > FILE'
您不能旋转它。您可以使用命令截断它,该命令>nohup.out
将删除文件中的所有内容。
如果需要保存输出,可以先复制文件,然后截断文件。但是比赛有一个小窗口,可以在复制文件之后但将其截断之前写入输出。在该窗口期间写入的任何输出将永远丢失。
copytruncate
中logrotate
。但是nohup.out
,很少有文件可以将cron作业配置为旋转文件。
你不能
您可以取消链接文件(rm),但是数据仍然在磁盘上有占用空间,只要有打开的文件句柄,数据就将继续被写入。
您可以重命名文件-但这又不会阻止文件被写入(但是如果您定期启动后台作业,则较新的作业将写入同一文件)。
确实,您应该显式地将作业的输出重定向到旨在处理该作业的内容(例如apache rotationlogs)。
不知道我是否为时已晚。但是对于现在偶然发现这个论坛的其他人来说,我不必尝试用鞭log之类的任何东西。
我的工作就是这样开始的:
nohup <my process> &
这开始我的工作,并开始附加到该目录中的nohup.out。
我要做的就是设置发行版通常随附的logrotate并在 /etc/logrotate.conf
~/my abosolute path/nohup.out {
size 1024k
copytruncate
rotate 100
maxage 100
}
而且有效!!在同一文件上获取新追加时,nohup.out被截断了。这个过程也没有消亡。nohup.out-20190528
这样就创建了一个新的nohup.out 。
希望这可以帮助。
Logrotate具有可用的copytruncate选项,该选项将在将指定的文件复制到普通轮换(和压缩,如果设置)中后将其截断(空)。
copytruncate
Truncate the original log file in place after creating a copy,
instead of moving the old log file and optionally creating a new
one, It can be used when some program can not be told to close
its logfile and thus might continue writing (appending) to the
previous log file forever. Note that there is a very small time
slice between copying the file and truncating it, so some log-
ging data might be lost. When this option is used, the create
option will have no effect, as the old log file stays in place.