![]() |
![]() |
![]() |
|
Тест (на слабо) | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
12.08.09
✎
22:02
|
поймите, что делает этот код, и сделайте красивее:
#!/bin/bash # список чего-нить list="mail.ru ya.ru google.ru mista.ru" i=1 # функция обработки test() { echo start $1 ping -c 3 $1 > /dev/null echo end $1 } # параметр - количество одновременных процессов limit=$1 a=1 while true do param=$(echo $list | awk "{print \$$a}") if [ $param ] then # для того, чтобы убедиться # jobs jobs=$(jobs | wc -l) if (( jobs < limit)) then test $param & (( a++ )) # чтобы не было расхода процессора - раскомментируйте: (просто иначе на пингах не видно ;)) # sleep 1 fi else break fi done wait |
|||
1
nop
12.08.09
✎
22:03
|
Да! Он убивает мой мозг!
|
|||
2
Fragster
гуру
12.08.09
✎
22:04
|
блин, комментарии не удалил :(
|
|||
3
ink1981
12.08.09
✎
22:05
|
(0) Умничаеш во первых поравь ощибки, во вторых за табой уже выехали
|
|||
4
ДенисЧ
12.08.09
✎
22:06
|
фигню какую-то делает...
Или это кусок бдбота? |
|||
5
Fragster
гуру
12.08.09
✎
22:10
|
(4) мля, палюсь... о_О
|
|||
6
hd1
13.08.09
✎
05:10
|
uptime ?
|
|||
7
smaharbA
13.08.09
✎
06:51
|
почему не фор и нафига авк, да и к переменным можно косвенно обращаться ?
|
|||
8
Fragster
гуру
13.08.09
✎
08:44
|
(7) а ты с фором сделай ;)
|
|||
9
Дуб
13.08.09
✎
08:45
|
Мельчает народ.. Раньше "на слабо" уксус пили, с крыш прыгали..
А теперь - код какой-то... |
|||
10
Asmody
13.08.09
✎
08:59
|
как бе...
printf "mail.ru\nya.ru\nmista.ru\ngoogle.com" > temp && nmap -sP -iL temp && rm temp |
|||
11
Asmody
13.08.09
✎
09:00
|
(10)+ это учитывая, что nmap "из коробки" сам распараллеливается
|
|||
12
smaharbA
13.08.09
✎
09:12
|
(8) а в чем прикол ? почему фор не проканает ?
|
|||
13
Fragster
гуру
13.08.09
✎
09:15
|
(10) ты не понял, это же прототип, не только для пингов, а для архивирования, кодирования всякого говна и прочего.
(12) если ты про for a in $list - то не проканает, если со счетчиком - то проканает, но красивее не получится |
|||
14
smaharbA
13.08.09
✎
09:17
|
(10) тогда уж
nmap -sP `echo -e "mail.ru\ngoogle.com"` |
|||
15
smaharbA
13.08.09
✎
09:18
|
(13) почему не проканает ? поясни, лениво ведь думать ))
|
|||
16
Fragster
гуру
13.08.09
✎
09:19
|
(14) oping mail.ru google.ru тогда уж ;) только не надо жаловаться что у тебя его нету :). да и распараллеливается все это неправильно (не так, как (0))
(15) смотри в условие внутри цикла |
|||
17
smaharbA
13.08.09
✎
09:20
|
а счетчик
|
|||
18
Fragster
гуру
13.08.09
✎
09:22
|
тогда уж
for ((a=1; a <= limit ; a++)) только не то это... |
|||
19
Fragster
гуру
13.08.09
✎
09:26
|
хинт: чтобы понять, что делает этот скрипт - его можно запустить. с параметром меньшим, чем количество элементов списка.
|
|||
20
smaharbA
13.08.09
✎
09:58
|
ну запускает в параллель, зарить ограничение если надо еще гонит
все равно не понял почему именно так вмесо авк
|
|||
21
Fragster
гуру
13.08.09
✎
10:06
|
(20) потому что ограничение количества одновременных процессов
|
|||
22
smaharbA
13.08.09
✎
10:59
|
(21)
кстати джобс можно выкинуть есть неплохое $! |
|||
23
Fragster
гуру
13.08.09
✎
11:49
|
(22) line 18: [: 0: ожидается использование унарного оператора
|
|||
24
smaharbA
13.08.09
✎
11:53
|
ну просто jobs тогда, может отличаться синтаксис (это беда всех линуксов)
|
|||
25
Fragster
гуру
13.08.09
✎
12:01
|
fignya() {
while [ $1 ]; do if (( `jobs | wc -l` < limit )); then shift if [ $1 ]; then test $1 & fi fi done } |
|||
26
Fragster
гуру
13.08.09
✎
12:02
|
даже
fignya() { while [ $1 ]; do if (( `jobs | wc -l` < limit )); then test $1 & shift fi done } |
|||
27
Asmody
13.08.09
✎
12:05
|
вчера на Хабре http://habrahabr.ru/blogs/linux/66903/
|
|||
28
Fragster
гуру
13.08.09
✎
12:08
|
(27) это я и есть ;)
|
|||
29
Asmody
13.08.09
✎
12:14
|
ну т.е. весь смак в том, чтобы контролировать число параллельных процессов? товарищ там элегантно сделал через make -j
|
|||
30
Fragster
гуру
13.08.09
✎
12:17
|
(29) решение автора меня не устроило необходимостью внешнего файла
|
|||
31
Asmody
13.08.09
✎
12:28
|
(30) а в чем проблема из скрипта создать временный файл, а потом удалить? :)
|
|||
32
Fragster
гуру
13.08.09
✎
12:30
|
(31) это уже онанизм какой-то получается ;)
|
|||
33
smaharbA
13.08.09
✎
12:36
|
да... про шифт то забыл я :(
|
|||
34
Fragster
гуру
13.08.09
✎
12:45
|
(33) да я тоже забыл... просто пытался понять, как работает ${@:$((a++)):1} :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |