我在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 :(得分:0)
我只是使用Cygwin来复制这个,所以我没有准确地提出这个问题。我的过程是在Java进程中调用Runtime.getRuntime.exec()
,打开cygwin / bin / bash.exe然后从bash中运行重定向命令。在同一个调用exec()
的Java进程中,我正在尝试根据之前调用的bash.exe中的内容监视上次修改时间。
我已经切换到检查文件长度而不是确定进程是否已挂起,这是有效的。我想这是一种范围问题。