我已經在我們的一個主要腳本中實現了並行操作,以在服務器之間執行數據遷移。目前,輸出以漂亮的顏色一次呈現(-u),根據正在運行的序列(例如,5/20: $username: rsyncing homedir
或5/20: $username: restoring account
),來自正在執行的功能的狀態的週期性回聲。這些都直接回應到運行腳本的終端,並在那裏積累。但是,根據命令運行的時間長短,輸出可能會出錯,長時間運行rsync
命令可能在混洗中丟失。 Butm我不想等待長時間運行的進程完成以獲得以下進程的輸出。在GNU並行中跟蹤狀態/進度
總之,我的問題是跟蹤哪些參數正在處理並仍在運行。
我想要做的是發送並行到(parallel args command {#} {} ::: $userlist) &
的背景,然後跟蹤每個運行功能的進度。我最初的想法是使用ps
和grep
隨着tput
寬鬆地每隔幾秒重寫屏幕。我通常運行三個並聯工作,所以我想有一個屏幕,顯示,比如:
1/20: user1: syncing homedir
current file: /home/user1/www/cache/file12589015.php
12/20: user12: syncing homedir
current file: /home/user12/mail/joe/mailfile
5/20: user5: collecting information
current file:
我肯定能得到上面的狀態輸出在一起沒問題,但我目前的掛機是分離的輸出個別並行處理成三個不同的...管道?變量?文件?以便它可以被解析爲上述信息。
您是否知道--linebuffer --tag和--tmux? –
- 如果有人對輸出進行管道輸出以便可以定期進行分析(儘管輸出的當前輸出顯示所有參數已經整齊地格式化),但是--line-buffer和--tmux無用在這種情況下。我並不特別擔心與輸出重疊的行(這很少見),並且從tmux而不是運行過程中獲取信息似乎是額外的一步(加上我們的機器沒有默認安裝tmux) – Andrej