[英]Linux redirected output not print to the end but the middle of file
這是啟動命令:
nohup java $options -jar foo.jar > foo.log 2>&1 &
output 像這樣:
...
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 output更多,文件會變成:
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
不會立即殺死程序,這意味着可能有2 個程序同時寫入同一個文件。
為此,我在 2 個命令之間添加了sleep 0.5
。
...
kill $fooPid
sleep 0.5
nohup java $options -jar foo.jar > foo.log 2>&1 &
...
然后問題解決了。
此外,您可以使用kill -9 $fooPid
前一個程序。
(我仍然不知道為什么這些行最后總是來自以前的程序,但現在沒關系了)
start program > log
...
kill $pid
start program > log
第二次啟動的進程將替換日志文件。 如果前一個進程沒有被殺死,它現在可以將日志寫入新的日志文件。 但是后面的進程對此一無所知,它會從 position 0 寫入日志文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.