【发布时间】:2014-12-12 17:55:10
【问题描述】:
我不知道我是否可以用 nohup 做到这一点,但这是个问题....我有这个命令:
nohup java -XX:MaxHeapFreeRatio=70 -Xmx2048M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=dump.hprof -jar $iscsiJar &
并且我希望当一天更改时,我保存前一天 nohupYYYYMM01.out 并创建另一个文件 nohupYYYYMM02.out ,当然,不会杀死我的进程。 =)
有可能吗,如何在 shell 脚本中编程?
非常感谢!
【问题讨论】:
-
只需使用
logrotate。 -
@anubhava 我不确定
java是否足够聪明,可以在logrotate请求时开始记录到不同的文件,除非它被配置为重新启动程序,这似乎是 OP 无法接受的... -
logroate 中有一个
copytruncate选项,它在创建副本后将原始日志文件截断到位,而不是移动旧日志文件并选择性地创建新日志文件。当某些程序无法被告知关闭其日志文件时可以使用它,因此可能会永远继续写入(附加)到前一个日志文件。 -
@anubhava 对,这是等式的一部分,但我也看到这会导致文件稀疏,因为当文件被截断时,写入偏移量不会在父进程中更新。不过,这可能是可以接受的,我不记得究竟是在什么条件下发生的......