2011-12-01 47 views
0

我有一個運行在Cygwin中的輸出已被重定向到另一個文件的bash腳本。如果我將bash腳本作爲批處理作業運行,則MS-DOS會顯示相同的行爲。爲什麼不重定向輸出修改目標文件的上次修改時間字段?

bash.exe &> log.txt 

我知道bash.exe定期轉儲輸出,所以我想只是監控log.txt中的最後修改時間來確定是否bash.exe已掛起。

不幸的是,通過重定向向log.txt添加內容不會改變log.txt的上次修改時間。

# ls -la --full-time log.txt 
-r-xr-x---+ 1 user Domain Users 66455 2011-11-30 16:16:45.246664800 -0500 log.txt 

一段時間後...

# ls -la --full-time log.txt 
-r-xr-x---+ 1 user Domain Users 66838 2011-11-30 16:16:45.246664800 -0500 log.txt 

注意,即使log.txt中已經變得越來越大,最後修改時間沒有改變。最後修改時間僅在bash.exe終止時更新。

Ubuntu 11.04正確處理了這種情況IMO。

Cygwin的:CYGWIN_NT-6.1
MS-DOS:的Microsoft Windows [版本6.1.7601]

回答

0

我無法只使用Cygwin的,所以我不能準確地呈現問題重現此。我的過程是在打開cygwin/bin/bash.exe的Java進程中調用Runtime.getRuntime.exec(),然後在bash內運行重定向命令。從名爲exec()的同一個Java進程中,我試圖根據之前稱爲bash.exe的情況監視上次修改時間。

我已經切換到檢查文件長度,而不是確定進程是否掛起,哪個工作正常。我想這是某種範圍問題。