我想知道如何將xargs產生的命令發送到背景。 例如,考慮發送xargs產生的命令到背景
find . -type f -mtime +7 | tee compressedP.list | xargs compress
我試圖
find . -type f -mtime +7 | tee compressedP.list | xargs -i{} compress {} &
..和意外,這似乎發送到xargs的背景呢?
如何讓壓縮命令的每個實例都轉到後臺?
我想知道如何將xargs產生的命令發送到背景。 例如,考慮發送xargs產生的命令到背景
find . -type f -mtime +7 | tee compressedP.list | xargs compress
我試圖
find . -type f -mtime +7 | tee compressedP.list | xargs -i{} compress {} &
..和意外,這似乎發送到xargs的背景呢?
如何讓壓縮命令的每個實例都轉到後臺?
在SunOS你可以看看GNU並行http://www.gnu.org/software/parallel/
find . -type f -mtime +7 | tee compressedP.list | parallel compress
它如果文件名中包含'「或空間。添加-j + 0將不會crapping出額外的好處它運行的每個CPU核心一個壓縮
你也許可以做一個非常快的shell腳本調用壓縮。
#!/bin/sh
# call it 'compbg' and chmod a+x
compress $* &
然後
find . -type f -mtime +7 | tee compressedP.list | xargs -I{} compbg {}
雖然我覺得你可能會使用這個xargs的是快樂的說法:
-P maxprocs
Parallel mode: run at most maxprocs invocations of utility at once.
這個命令應該找到/在同一時間開球/壓縮10個文件,直到對其做,並立即將控制權返回給調用腳本/ shell。
find . -type f -mtime +7 | tee compressedP.list | xargs -I{} -P10 compress {} &
這對我的作品時,我想編輯包含富所有文件
的grep -rl富./ |`xargs的emacs` &
使用--max-procs
/-P
選項在後臺運行xargs目標。從GNU xargs的版本4.2.27手冊頁:
--max-特效= MAX-特效,-P MAX-特效
運行到一次MAX-特效處理;缺省值爲1.如果max-procs爲0,xargs將一次運行儘可能多的進程。在-P選項中使用-n選項;否則很可能只有一名執行官會完成。
(您可以將它與-n 1
相結合,可確保有一個新的進程對每個文件要壓縮)
(嗯,剛剛意識到我的答案是gnarf答案的後半部分的重複,在開始寫關於shell腳本的評論之後我沒有讀過,我會在這裏留下我的答案,以防其他人也可以瀏覽gnarf的回答和我一樣) – RobM
的UNIX我有($ UNAME -a 的SunOS 5.10的xxx Generic_xx7xx1- 06 sun4u sparc SUNW,Sun-Fire)沒有-P($ xargs -P xargs:非法選項 - P xargs:用法:xargs:[-t] [-p] [-e [eofstr]] [ -E eofstr] [-I replstr] [-i [replstr]] [-L#] [-l [#]] [-n#[-x] [-s大小] [CMD [參數...] ]) 除了shell腳本封裝以外的其他選擇嗎? – PoorLuzer
對不起,我找不到太多的SunOS - 雖然我找到了這個軟件包「xjobs」,你可以編譯它... http://www.maier-komor.de/xjobs。html – gnarf