以下是启动命令:
nohup java $options -jar foo.jar > foo.log 2>&1 &
输出如下:
...
2020-11-26 21:27:23,577 INFO ...
2020-11-26 21:27:23,577 INFO ...
2020-11-23 12:41:55,783 INFO ...
2020-11-23 12:41:55,783 INFO ...
...
有几行以 2020-11-23
总是在文件末尾。如果java输出更多,文件将变为:
2020-11-26 21:27:23,577 INFO ...
2020-11-26 21:27:23,577 INFO ...
[The New Row]
2020-11-23 12:41:55,783 INFO ...
2020-11-23 12:41:55,783 INFO ...
最后一行总是那些行,你可以通过日期和时间来确认这一点。
用答案更新
我的剧本是这样的:
...
kill $fooPid
nohup java $options -jar foo.jar > foo.log 2>&1 &
...
这个 kill
不会立即终止程序,这意味着可能有两个程序同时写入同一个文件。
为此,我补充道 sleep 0.5
在两个命令之间。
...
kill $fooPid
sleep 0.5
nohup java $options -jar foo.jar > foo.log 2>&1 &
...
然后问题就解决了。
另外,你可以使用 kill -9 $fooPid
立即杀掉前一个程序。
(我仍然不知道为什么台词总是来自以前的节目,但现在不重要了)
1条答案
按热度按时间h79rfbju1#
第二个启动的进程将替换日志文件。如果前一个进程没有被终止,它现在可能会将日志写入新的日志文件。但后面的进程对此一无所知,它将从位置0写入日志文件。
灵感来自https://unix.stackexchange.com/a/346196