Запуск нескольких запросов с помощью сценария Bash

Версия фиктивного драйвера не соответствует версии вашего сервера Xorg:

/usr/lib/xorg/modules/drivers/dummy_drv.so: undefined symbol: ChangeWindowProperty

Убедитесь, что ваш фиктивный пакет драйвера соответствует версии ABI пакета Xorg.

4
08.09.2019, 02:37
2 ответа

Из-за того, чтоhttps://mywiki.wooledge.org/BashPitfalls#Non-atomic_writes_with_xargs_-P(вывод параллельных заданий в xargsможет быть смешанным ), я бы вместо этого использовал GNU Parallel:

cat infile |
  parallel -P0 -q curl {} -o /dev/null --silent --head --write-out "%{http_code} {}\n" > outfile

В данном конкретном случае использование xargsможет быть безопасным, потому что вывод такой короткий, поэтому проблема с использованием xargsзаключается скорее в том, что если кто-то позже изменит код, чтобы сделать что-то большее, он больше не будет безопасно. Или, если кто-то читает этот вопрос и думает, что может заменить curlчем-то другим, то это тоже может быть небезопасно.

Это может быть быстрее:

doit() {
  while read LINE; do
    curl -o /dev/null --silent --head --write-out "%{http_code} $LINE\n" "$LINE"
  done
}
export -f doit
parallel -j0 --pipepart -a infile --block -10 doit > outfile
2
27.01.2020, 20:59

вы можете разделить свой список URL-адресов, например, на. 10 частей и использовать основной сценарий аля

./subscript1.sh &
./subscript2.sh &
...
./subscript10.sh &

для параллельного запуска. Предостережение :Они должны использовать отдельные файлы журналов.

0
27.01.2020, 20:59

Теги

Похожие вопросы