Batch
Windows Sensu 客戶端 - 執行批處理文件時偶爾出現“訪問被拒絕”錯誤
我們在多個 2008 R2 系統上執行 Windows Sensu 客戶端。我們的一項檢查呼叫批處理文件來收集一些資訊並報告回來。對於這些檢查,我們偶爾會收到“未知:意外錯誤:訪問被拒絕 (5)”消息 - 沒有標準頻率,沒有相關性……下一次檢查正常執行,沒有問題。
我已經通過堆棧和Sensu Ruby 程式碼跟踪呼叫)生成 ‘cmd.exe /c “/path/to/batch.bat parameters”’ 的子程序沒有問題。我可以通過刪除對批處理文件本身的所有 NTFS 訪問來重新創建問題。如果您在刪除這些權限的情況下執行 cmd /c batch.bat,它將返回相同的“訪問被拒絕 (5)”錯誤。
好的,很好,訪問文件時出現問題。為什麼?我已經執行了程序監視器跟踪,並且可以發現該程序絕對沒有問題:ruby 載入,cmd.exe 被呼叫,cmd.exe 讀取文件時沒有可見錯誤,然後它返回檢查,因為訪問被拒絕。什麼……?
我沒主意了。一些額外的背景資訊以防萬一:ruby 二進製文件以 32 位執行;Sensu 客戶端是 Sensuapp 網站的最新客戶端;系統正在執行 System Center Endpoint Protection。我錯過了什麼??
結果證明這是 ChildProcess Ruby 庫中的一個錯誤,以及它如何處理將 Windows 程序分配給 Job 對象(競爭條件)。清理程式碼後,我將與作者共享修復程序。