在bash腳本中,我在等待一個子進程的PID等待。該子進程正在寫入日誌文件。在bash腳本中有沒有一種方法可以讓該日誌文件退出,同時等待進程完成?Bash:等待進程退出,同時加尾日誌文件
回答
使用tail
命令遵循文件,而你等待命令完成。
command &
cmdpid=$!
tail -f -n +0 logfile &
wait $cmdpid
kill $!
這是在精神上類似於威廉的解決方案,但有一個重要的區別:它會正確打印日誌文件,如果它需要更長的時間command
完成比它的cat
打印的文件(很可能,因爲cat
非常快)。 -n +0
選項告訴tail
在開始更新之前打印整個文件。
在後臺運行的貓:
cmd-that-logs-to-file &
pid=$!
cat file &
wait $pid
kill $! # Kill the cat
如果有什麼其它的一些後臺進程之前'PID = $'開始後'CMD-是-日誌到文件&'!? –
@KingsIndian如果您沒有記錄pid,那麼您無法可靠地等待特定過程。 –
你的意思是尾巴吧? – Mark
這使得簡單:
command &
pid=$!
tail --pid=$pid -f /path/to/log
- 1. 設置等待時間進程退出
- 2. 塊事件等待當進程退出
- 3. bash編程,後臺進程,PID和等待作業退出
- 4. Bash獲取等待進程的退出代碼
- 5. 尾部文件直到進程退出
- 6. 不要等待進程退出
- 7. 進程等待退出不起作用
- 8. 進程結束等待退出
- 9. 非阻塞等待子進程退出
- 10. Perl,等待非子進程退出
- 11. 的Java,等待子進程退出
- 12. Bash等待進程啓動
- 13. 從bash腳本中退出git日誌
- 14. 如何等待Windows進程及其子進程全部退出?
- 15. 殺死一個進程並等待進程退出
- 16. 如何等待進程及其所有子進程退出?
- 17. 如何擺脫'日誌文件同步'等待?
- 18. 尾-f日誌文件的時間戳
- 19. Windows日誌文件的實時尾部
- 20. 執行退出時命中等待DownloadStringTaskAsync
- 21. 在日誌文件中等待特定字符串的Bash腳本優化
- 22. 尾日誌文件作爲Python中的子進程[Windows框]
- 23. 等待Ruby子pid退出
- 24. 等待演員退出()
- 25. CCleaner C3等待退出
- 26. 如何等待窗口退出事件?
- 27. Bash輸出到不同的屏幕和日誌文件
- 28. 等待進程
- 29. C#等待進程毫無例外地退出
- 30. 想退出主進程而不用等待process2返回
+1。衛生署!當然'貓'不會按預期工作! –