我有一个批处理文件,它调用另一个启动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
文件。
不确定原因。
答案 0 :(得分:1)
启动批处理文件时,将重定向stdout流。从这个进程内部启动的程序“继承”了这种情况,所以当它们仍在运行时,它们会锁定文件。
问题是,由于启动批处理文件的方式需要锁定日志文件,因此无法启动进程来停止服务器。如果将重定向放在后台进程启动的行中的日志文件中,则停止服务器将释放锁定。