我们有一台 2008 R2 服务器,其中有一个计划任务,运行一个 .bat 文件,该文件执行对 Java 应用程序的调用。该任务触发正常,但在创建日志文件后停止执行任何操作。以下是有关如何设置的详细信息:
它在专门为该任务创建的用户级帐户上运行,并且该帐户具有设置作为批处理作业登录的权限。
这是批处理文件能够执行的两个步骤(第二个是挂起的步骤):
cd E:\CLIENT_DB\WS_Client\bin\
java -Xms256m -Xmx512m -XX:MaxPermSize=512m -cp ..;..\*;..\certs;..\config;..\client;..\client\*;..\lib\*;..\lib\axis2\* WsClientStarter update > E:\CLIENT_DB\Logs\WSCLIENT_LOG_%DATE:~4,2%-%DATE:~7,2%-%DATE:~10,4%.txt
- Java 客户端的第一个操作是使用 log4j 实用程序创建一个以客户端类为参数的记录器。这似乎成功了,因为我们得到了一个空白日志文件,其文件名如上面的批处理调用所示。这是具体的命令:
private static final Logger logger = Logger.getLogger(WsClientRunner.class);
- 然后,客户端启动主函数并读取“更新”参数来确定运行模式,然后按编程进行。
这是我的问题:当作为批处理作业运行而不是由用户启动(即双击批处理文件)时,是否有任何安全策略或其他进程会干扰此操作?
由于 Java 客户端在单独运行时似乎工作得很好 - 包括将结果写入日志文件 - 我们认为这不一定与 Java 客户端有关,但如果你们都没有答案,我接下来会向 StackOverflow 的人们咨询。
答案1
请检查在配置框中是否选择了 Windows 7、Windows Server 2008 R2 作为操作系统。
另外,您需要在任务属性的操作选项卡中输入在文件夹中开始,即使它是可选的。
也许这会有所帮助;它帮助我解决了类似的问题。
答案2
我们也遇到了这个问题。原来,运行计划任务时输入的凭据与手动运行脚本时使用的凭据不同。我发现的其他文章也指出了权限问题。
当用于运行任务的 ID 被授予本地管理员权限时,计划的作业就可以正常工作。然后,我们尝试将配置文件放入较低的本地安全组中,直到找到访问权限最少但仍允许脚本成功完成的配置文件。