2013-05-27 37 views
0

我有一個腳本可以連續打印日期不同的日誌。動態組合兩個bash腳本以顯示CPU和內存

./script1 

Date Log 
Date Log 
Date Log ... 

我有另外一個,prustat,其打印%CPU和%MEM ...

./prustat 

%CPU %mem 
1.2 3 

我想結合這兩個有:

Date Log 
%CPU %mem 
1.2 3 
Date Log 
%CPU %mem 
1.2 3 

。 ..

爲了有每個日誌的CPU消耗和內存。

謝謝。

回答

0

你可以要麼把./prustatscript1(最後一行),或者你可以叫他們兩個這樣的:

./script1; ./prustat 
+0

是的,但./script1繼續打印 – user2409399

+0

你可以把./prustat放在script1的循環中嗎? – svante

0

那麼,如果正在運行連續不清楚你爲什麼會想他們兩個一起跑?

你可以嘗試:

./script1.sh& ./script2.sh 

這將調用SCRIPT1和叉它作爲一個回地面作業,然後調用script2.sh

現在你會得到你的命令提示符

你可以做

fg%1拿回script1.sh

不確定你爲什麼會想要做這樣的事,但..如果你重新啓動一遍先前的工作在後臺仍然在運行,你會得到一個第二職業的運行

上面做就意味着 -

在簡而言之,您應該將兩個腳本合併到一個腳本中,並在腳本1中需要時調用腳本2,並讓腳本1連續運行。

這將是痛苦..

所以替代將是:

timeout 1 ./script1.sh; ./script2.sh 

這1秒後執行SCRIPT1和超時然後運行SCRIPT2

1

它看起來像你想要的

./script1.sh | 
while IFS= read -r line; do 
    echo "$line" 
    ./script2.sh 
done 

但是一定有一些你不會告訴g關於腳本1和2的內容

+0

不錯 - 看起來像一個可以接受的解決方案! – svante

0

這應該結合兩個腳本輸出。

#!/bin/bash 
trap 'rm /tmp/z[12]' 0 
./script1 > /tmp/z1 & 
./prustat > /tmp/z2 & 
tail -qfc +1 /tmp/z[12] 

然而,由於每個腳本輸出頻率不同步,所以順序可能不是您所期望的。

編輯:目前還不清楚這兩個腳本提供了一個連續的輸出或只是第一個。我的答案假設都行。