Пользователь к вашему сведению на форуме OpenWRT предположил, что использование WEP является плохой идеей для мостов и что использование WDS вместо этого могло зафиксировать это. Вы пробовали это?
В рассмотрении Ваших конфигураций и сравнении их к учебному руководству Вы связались, похоже, что Вы могли бы пропускать целый раздел. В /etc/config/wireless
Вам нужны два названные раздела config 'wifi-iface'
. Они оба для того же устройства, но каждый будет иметь option 'mode' 'ap'
и другой option 'mode' 'sta'
. Похоже, что у Вас только есть 'станция' один на Ваших конфигурациях. Можно ли отправить полный дамп файла конфигурации от обеих единиц?
Быстрое прохождение в Google показывает этот интересный подход: http://pebblesinthesand.wordpress.com/2008/05/22/a-srcipt-for-running-processes-in-parallel-in-bash/
for ARG in $*; do
command $ARG &
NPROC=$(($NPROC+1))
if [ "$NPROC" -ge 4 ]; then
wait
NPROC=0
fi
done
Использование параллель GNU:
find . -name *.gz | parallel --files 'zcat {} | sort' | parallel -X -j1 sort -m {} ';' rm {} > sorted
Можно установить Параллель GNU просто:
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
Посмотрите вводные видео для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1 и обход через учебное руководство (человек parallel_tutorial). Вы командная строка с любовью Вы для него.
Я выбрал бы make(1)
для этой задачи - это не оболочка, но make(1)
jobserver почти точно, что Вы хотели, и эта задача является подходящей к make(1)
способности. Обратите внимание что запуск строки gzip -cd
располагается с отступом с символом табуляции. Это жизненно важно. (make(1)
может также чувствовать себя немного старым время от времени.)
$ cat Makefile
TXT := $(wildcard *.gz)
all: $(TXT:.gz=.txt)
%.txt:%.gz
gzip -cd $< | sort > $@
$ cp /usr/share/man/man2/*.gz .
$ ls -l
total 1992
-rw-r--r-- 1 sarnold sarnold 4447 2011-12-06 00:22 aa_change_hat.2.gz
-rw-r--r-- 1 sarnold sarnold 3977 2011-12-06 00:22 aa_change_profile.2.gz
-rw-r--r-- 1 sarnold sarnold 5082 2011-12-06 00:22 accept.2.gz
...
$ time make -j 10
gzip -cd aa_change_hat.2.gz | sort > aa_change_hat.2.txt
gzip -cd aa_change_profile.2.gz | sort > aa_change_profile.2.txt
gzip -cd accept.2.gz | sort > accept.2.txt
gzip -cd accept4.2.gz | sort > accept4.2.txt
gzip -cd access.2.gz | sort > access.2.txt
...
gzip -cd write.2.gz | sort > write.2.txt
gzip -cd writev.2.gz | sort > writev.2.txt
real 0m0.259s
user 0m0.190s
sys 0m0.020s
$ rm w*txt
$ make
gzip -cd wait.2.gz | sort > wait.2.txt
gzip -cd wait3.2.gz | sort > wait3.2.txt
gzip -cd wait4.2.gz | sort > wait4.2.txt
gzip -cd waitid.2.gz | sort > waitid.2.txt
gzip -cd waitpid.2.gz | sort > waitpid.2.txt
gzip -cd write.2.gz | sort > write.2.txt
gzip -cd writev.2.gz | sort > writev.2.txt
$
Заметьте с rm w*txt
управляйте этим make(1)
разумно только делает минимальный объем работы, необходимой, чтобы сделать что-либо.
Сортировка несжатого содержимого многих сжатых файлов и сохранение результата в несжатом файле:
find. -type f -name '*.gz'
-exec sh -c 'for n; do zcat "$n" | sort -o "$n.txt"; done' sh {} +
Это выполнит цикл for
for n; do
zcat "$n" | sort -o "$n.txt"
done
с максимально возможным количеством файлов одновременно. Цикл for
, в котором нет in X
, будет повторяться по "$@"
по умолчанию.
Оболочка sh -c
будет вызываться find
с максимально возможным количеством путей к файлам (из-за +
вместо \;
в конце ), и эти пути будут доступны для оболочка sh -c
в $@
.
В исходной команде
find. -name *.gz -exec zcat {} | sort > {}.txt \;
у вас проблемы:
*.gz
не заключен в кавычки, что означает, что оболочка будет выполнять подстановку имени файла с именами файлов в текущем каталоге.
-exec
может работать только с простой командой, а не с конвейером.
Вы не ограничиваетесь обычными файлами, что теоретически означает, что вы можете выбрать каталог с именем something.gz
.
С GNU xargs
вы можете сделать:
xargs -P4 -n 10 -r0a <(find. -name '*.gz' -type f -print0) sh -c '
for file do
zcat < "$file" | sort > "$file.txt"
done' sh {} +
Это вызовет до 4 sh
параллельных процессов, каждый из которых обрабатывает до 10 файлов один за другим в цикле.