我有一個腳本,它從一個輸入文件中逐個獲取服務器列表,並在每個服務器上執行一些命令。我希望能夠在腳本運行時更新輸入文件,而不影響第一個進程的輸入,然後用第二個服務器列表重新運行腳本。這可以安全地完成嗎?什麼時候進程獲取文件來讀取
回答
當運行等file > my_script
位於file
的內容的命令被管道輸送到my_script
(作爲file descriptor)。這將名稱中的內容分離出來,這意味着您可以在另一個過程中立即修改/替換file
。
如果改爲像my_script file
你傳遞的名「文件」,以my_script
,這可以從該文件在任何時候讀取(或寫,刪除等)運行命令,因此你在腳本運行時無法安全地更改file
。值得注意的是,這不會立即發生;長時間運行的進程可能不會從file
讀取,直到很久以後,在您編輯完文件後。
因此,如果您設計程序以從標準輸入讀取,您可以安全地修改輸入文件並在第一個進程仍在運行時重新運行該命令。
謝謝dimo .. –
@AravindVijayan很高興能幫到你! – dimo414
假設你的進程正在運行,如果你想改變文件,只需將文件mv放在一邊,並複製新的輸入文件。這樣,如果進程沒有將輸入文件完全讀入內存,它仍然會有一個文件描述符對前一個文件開放,並且不會受到影響。當然,這一切都取決於過程是如何實現的,如果它在執行過程中試圖重新打開文件,它會看到新的文件內容。
process inputfile
mv inputfile inputfile.running
mv newinput inputfile
謝謝,考慮在bash腳本中有一個for循環來逐個讀取服務器名稱,我想我們可以從輸入文件中刪除實體提供新的服務器名稱並運行同一腳本的另一個實例 –
- 1. 什麼時候從磁盤讀取SharedPreferences?
- 2. 什麼時候停止從文件讀取?
- 3. 什麼時候可以安全讀取文件
- 4. 什麼時候配置文件被讀取?
- 5. 無法獲取小程序來讀取文本文件
- 6. 嘗試讀取文件時獲取java.io.FileNotFoundException
- 7. 什麼時候應該捕獲DUMP文件以進行調試
- 8. 從文件系統「短暫讀取」,什麼時候可以發生?
- 9. 什麼時候讀無聊?
- 10. 爲什麼我的程序在從文件讀取時出錯?
- 11. C++:讀取文件時程序卡住了。爲什麼?
- 12. 讀取文件的屬性,而使用READDIR()來獲取文件
- 13. Scalish的方式來讀取文件,並在文件結束時做些什麼
- 14. 什麼是更有效的方式來讀取文本文件
- 15. NSOutputStream知道什麼時候在另一側讀取數據
- 16. 什麼時候在context.xml中添加的標籤被讀取?
- 17. asp.net mvc什麼時候應該讀取servervariables?
- 18. Servlets什麼時候讀取或寫入實際數據
- 19. 什麼時候ServiceTracker取消ServiceReference?
- 20. 讀取R中的csv文件時讀取八進制字符
- 21. RxPy讀取csv文件和進程行
- 22. 多進程從文件讀取
- 23. 爲什麼InputStreamReader不能實時讀取進程的輸出?
- 24. C#從讀取文本文件中讀取二進制文件
- 25. 爲什麼我無法讀取文件?
- 26. Java文件讀取有什麼問題?
- 27. 爲什麼不讀取輸出文件?
- 28. 爲什麼Qt不讀取文件
- 29. 爲什麼不讀取文件在SparkContext.textFile()
- 30. 讀取xml文件有什麼不對?
我相信你問「如果我在程序讀取時寫入文件,會發生什麼?*」 - 是否正確? – dimo414
是的,我有興趣知道,當一個進程獲取所有的資源,如從這裏的文件輸入.. –
現在寫入輸入文件,替換輸入文件的全部內容 –