View previous topic :: View next topic |
Author |
Message |
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Fri Dec 09, 2005 12:30 pm Post subject: [TIP] esecuzione parallela con xargs [multiping] |
|
|
Inauguro il nuovo subforum con un tip riguardante xargs.
il suddetto tool può essere utilizzato per eseguire parallelamente un comando su una serie di argomenti.
un pratico esempio: volete scaricare velocemente i distfiles relativi ad un nuovo emerge.
Code: | emerge -pf programma |
restituisce la lista dei files da scaricare, mirrors inclusi.
Code: | emerge -pf -e programma 2>&1| egrep -i "http|ftp" | cut -d' ' -f1 |
filtra la lista limitandola ad un solo mirror (il primo).
ora utilizziamo xargs per scaricare parallelamente 5 files per volta
Code: | emerge -pf -e programma 2>&1| egrep -i "http|ftp" | cut -d' ' -f1 | xargs -n 1 -P 5 wget -c -o /dev/null -P /usr/portage/distfiles |
la parte
Code: | xargs -n 1 -P 5 comando |
prende la lista fornita da emerge e la passa come argomento al comando specificato (wget).
-n 1 dice a xargs di eseguire il comando con un solo argomento per volta
-P 5 limita a 5 il numero massimo di istanze del programma eseguite contemporaneamente.
edit: 21/01/2006
Nella mia lan, faccio spesso prove per cui mi capita di dimenticare gli indirizzi ip correntemente assegnati.
ping e xargs risolvono egregiamente il problema.
Code: | (seq -f '10.0.0.%g' 1 254 | xargs -n 1 -P 254 ping -c1 -w1) 2>/dev/null | grep icmp |
la lista di ip 10.0.0.x viene data in pasto a xargs che esegue contemporaneamente 254 pings
l'output viene filtrato in modo da visualizzare solo i pc che rispondono.
semplice no ? _________________ When all else fails, read the instructions.
Last edited by makoomba on Sat Jan 21, 2006 3:03 pm; edited 2 times in total |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Jan 21, 2006 10:16 am Post subject: |
|
|
aggiunto tip sul multiping _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Sat Jan 21, 2006 11:15 am Post subject: |
|
|
Il tip sul multiping è veramente carino, non avevo nemmeno mai pensato di parallelizzarlo io facevo un semplice for in background con l'ouptup salvato in un file ma il tuo è molto più cool _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Jan 21, 2006 11:54 am Post subject: |
|
|
dovrebbe bastare un ping al broadcast, ma i pc winzzozz cafoni non rispondono.
indi per cui, il multiping con xargs ha il suo perchè e fa pure più figo. _________________ When all else fails, read the instructions. |
|
Back to top |
|
|
|