2014-12-17 2 views
0

У меня есть этот Баш код:Баш xargs -I%, используя свой аргумент,

ip=$1  
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]${ip} << EOF  
jps | grep server.* | cut -d ' ' -f1 | xargs -L1 -I% jmap -histo % > server-%-$ip-histo.out 
EOF 

Как включить ИДП, в имени файла, в случае нескольких экземпляров сервера на этом поле.

в данный момент файлы записываются в виде: server-%-127.0.0.1-heap.out

и не: server-xxxx-127.0.0.1-histo.out

+3

Осознаете ли вы, что ''% имеет только значение для 'xargs' команды? Другими словами, знаете ли вы, что фрагмент кода '> server -% - $ ip-histo.out' выходит за рамки команды' xargs'? – Jdamian

+1

Надеетесь ли вы узнать формат ввода команды 'xargs'? Пожалуйста, разместите примеры текста через последнюю трубку. Где найден пид? то есть, какая команда обеспечивает это pid: либо 'jps', либо' jmap'? – Jdamian

+0

Итак, как сделать бит> server -% - $ ip-histo.out битной частью области xargs, так что% можно заменить? возможно, положить «вокруг партии» – dmc

ответ

0

Как включить PID, в имени файла, в случае многопоточного сервера экземпляров на этом поле.

Заменить

xargs -L1 -I% jmap -histo % > server-%-$ip-histo.out 

с

while read pid; do jmap -histo \$pid >server-\$pid-$ip-histo.out; done