
我們有一台 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 被授予本機管理員權限時,已排程的作業就可以執行。然後,我們測試將該設定檔放入較低的本機安全性群組中,直到找到存取權限最少且仍允許腳本成功完成的群組。