параллельный запуск задач, а также запись в один файл

Хотя с точки зрения системного администратора (и зачастую с точки зрения )разработчика гораздо удобнее устанавливать библиотеки для разработки с помощью дистрибутивных пакетов, это не обязательно. В зависимости от приложения и языка может быть несколько альтернативных способов сделать это.

В этом случае вы можете скачать файлы.tar.gz с домашней страницы проекта по адресуhttp://www.libpng.org/pub/png/libpng.html

В зависимости от пакета файлы make/configure могут обнаруживать или не обнаруживать библиотеку после ее компиляции.

Конкретные шаги, как это сделать, могут быть -из -области/темы здесь.

1
29.07.2020, 15:38
2 ответа

Gnu parallelможет легко запустить цикл, однако вам не следует изменять файл CSV на каждой итерации. Лучше собрать вывод в новый файл, а затем объединить его с существующим CSV или просто написать весь новый CSV-файл с нуля, если в нем нет данных, специфичных для узла -.

2
18.03.2021, 23:16
do_one() {
  n="$1"
  if ping -q -c 1 -w 3 -s 10 $n >/dev/null ; then
      echo up
  else
      echo down
  fi
}
export -f do_one
seq -f "ma%04g" 5001 5505 | parallel -j0 --tag do_one {} > results
# results contains host \t up_or_down
# create files with only hostnames for up
grep up   results | awk -e '{print $1}' > up-hosts
# create files with only hostnames for down
grep down results | awk -e '{print $1}' > down-hosts
# This perl script takes 1 second to run if you have 100000 hosts
perl -i.bak -ape 'BEGIN {
        # make fast lookup hash for up/down hosts
        chomp(@up=`cat up-hosts`);
        @up{@up} = @up;
        chomp(@down=`cat down-hosts`);
        @down{@down} = @down;
      }
      sub updown {
        my $host = shift;
        my $last = shift;
        if($up{$host}) { return "$host up" };
        if($down{$host}) { return "$host down" };
        return "$host $last";
      }
      # $1 = hostname, $2 = up/down of master.csv
      s/^(\S+)\s+(\S+)/updown($1,$2)/gme;' master.csv
1
18.03.2021, 23:16

Теги

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