2014-01-23 38 views
0

!/ bin/sh的

echo "Running IOSTAT" 
iostat 2 
echo "Running MPSTAT" 
mpstat -P ALL 2 
echo "Running VMSTAT" 
vmstat 2 
echo "Running executable" 
./a.out 2 1024 
echo "Done" 

我想測試運行可執行程序的性能。我寫了一個腳本。它只顯示iostat而不顯示剩餘的3.如何並行運行所有4個?Runinng的iostat,mpstat的,vmstat的一起可執行

回答

1

嘗試在每個命令的末尾放置&符號'&'。這會在後臺啓動可執行文件。例如:

mpstat -P ALL 2 &

+0

我已經把所有和他們都沒有停止與ctrl + C/Q/Z/D。系統被吊死了。 – Angus

+0

使用帶'-5'的'kill'命令來停止使用其PID的後臺進程。 –

1

你的問題的解決方案是在後臺運行的命令和重定向他們的IO以便以後查看文件。

shell將執行一條命令,直到該命令完成並返回爲進一步的命令提供退出代碼以執行操作。

您使用&在後臺運行命令。

你既可以輸出和錯誤重定向到使用>stdout.txt 2>stderr.txt

最後你需要殺死一個文件運行的iostat,mpstat的,和vmstat使用作業控制。每個產生的後臺進程都可以使用%和一個數字來訪問。因此,你可以殺死使用kill %1

例如第一後臺作業:

 
#!/bin/sh 
echo "Running IOSTAT" 
iostat 2 >iostat-stdout.txt 2>iostat-stderr.txt & 
echo "Running MPSTAT" 
mpstat -P ALL 2 >mpstat-stdout.txt 2>mpstat-stderr.txt & 
echo "Running VMSTAT" 
vmstat 2 >vmstat-stdout.txt 2>vmstat-stderr.txt & 
echo "Running executable" 
./a.out 2 1024 
echo "Done" 
kill %1 
kill %2 
kill %3 

希望有所幫助。

+0

它只在IOSTAT – Angus

+0

現在我看不到.txt文件 – Angus

+0

如果您的系統足夠快,iostat,mpstat和vmstat可能在您的應用程序啓動和結束時尚未啓動。因此,kill信號在他們有機會創建任何文件之前發送。該腳本僅適用於「./a.out」是長時間運行的作業。 –