批处理启动进程锁定日志文件

时间:2014-03-27 14:18:12

标签: windows batch-file cmd

我有一个批处理文件,它调用另一个启动Java服务器的批处理文件。 问题是java进程以某种方式锁定了我重定向到主批处理文件的文件。

@echo off

code......

echo shut down server
call %serverBin%\server stop worklightServer
rem net stop WLPServer

more code.....

echo start server
call %serverBin%\server start worklightServer
rem net start WLPServer

我用
启动这个批处理文件 E:\IBM\wlp\bin\worklightRestart.bat >> E:\IBM\wlp\bin\restartWorklight.log

问题是这个脚本只能运行一次,然后每隔一次就会失败 似乎server.bat启动的java进程锁定了restartWorklight.log文件。

不确定原因。

1 个答案:

答案 0 :(得分:1)

启动批处理文件时,将重定向stdout流。从这个进程内部启动的程序“继承”了这种情况,所以当它们仍在运行时,它们会锁定文件。

问题是,由于启动批处理文件的方式需要锁定日志文件,因此无法启动进程来停止服务器。如果将重定向放在后台进程启动的行中的日志文件中,则停止服务器将释放锁定。