我在Ubuntu 10.04服務器上執行了一些長時間運行的bash腳本,這些腳本正在執行備份和數據庫轉儲等操作。任何方式從網頁執行bash腳本並在執行時捕獲輸出?
我目前正在通過cron執行它們並將結果郵寄給我。但是,在整個Webinterface中另外手動觸發它們會很好。 (我不想讓任何用戶SSH訪問,以便他可以觸發腳本)
例如,在PHP中,有一個exec命令,它在腳本完成後獲取腳本輸出。由於腳本的持續時間超過了30秒瀏覽器超時,因此這並不有用。 (並且我想監視進度)所以我目前一直在尋找一種方法來定期收集腳本輸出或「拖尾」並通過JavaScript或Pagereloads或類似的東西顯示它。
正如我注意到的,Webmin例如在執行像apt一樣的系統命令通過其web界面時以某種方式執行此操作。
我可以想象的一種方法是分叉腳本執行並將輸出重定向到一個文件,而主進程正在讀取它的Page reload/Ajax請求。但這聽起來像某種解決方法:)
那麼,有沒有人有這個問題的一個很好的解決方案?不需要是PHP,也可以是python或perl或者其他服務器端的東西。或者是否有這樣的工具或圖書館?
任何想法非常感謝!
您可以查看這些PHP解決方案: http://stackoverflow.com/questions/1281140/run-process-with-realtime-output-in-php – 2013-03-19 17:56:04