2015-12-08 42 views
0

作爲示例,我在我的linux服務器上安裝了一個程序調用./foo install。但是,這個./foo程序會消耗大量的內存和CPU資源。向本地Linux FIFO隊列提交命令

由於./foo程序是由其他服務器通過ssh連接執行的頻率,我想控制./foo的用法來防止我的服務器超載。

我正在尋找一個本地FIFO隊列工具(偵聽器)來處理所有./foo執行。

例如

runJob ./foo & runJob ./foo & runJob ./foo &

作爲結果,儘管./foo被並行地執行,我想隊列工具(例如runJob在這種情況下),以在FIFO序列中處理作業執行。

Linux中是否有這樣的工具?

感謝

回答

0

如果FIFO是不是一個嚴格的要求,你可以很容易地與GNU parallel做到這一點:

for i in {1..10} 
do 
    parallel --gnu --semaphore --fg --id myjob -j 1 sleep 15 & 
done 

這開始於在大部分時間1工作(每用戶名和作業--id計) 。

隨着ps你會注意到一次只有一個sleep 15被執行,而其他parallel進程掛出並等待它。