Как перечислить доступные каталоги Soft-Link в Сервер, связанный с NFS Mount

Лучше использовать программу, которая не выделяет много памяти для выполнения задачи. Однако есть проблема с генерацией случайных чисел: если вам нужны полностью случайные числа, вам нужно использовать «хороший» источник случайных чисел, например / dev / urandom.

Я думаю эта программа на языке C может помочь вам с этой задачей. Он генерирует числа на ходу и с тремя указанными вами аргументами: start int, end int и их количество для генерации. Итак, чтобы сгенерировать 100 целых значений в диапазоне (0..200), вы выполните:

./mkrnd 0 200 100

Вероятно, вам понадобится перенаправление в файл, поэтому сделайте

./mkrnd 0 200 100 >randomints.txt

Компиляция проста, просто выполните gcc mkrnd.c -o mkrnd (или я могу скомпилировать его для вас).

Считается, что это достаточно быстро, но все равно потребуются часы для работы, я думаю. Для меня на Athlon64 5000 +:

% time null ./mkrnd 0 1000000000 10000000                                                          

real    0m33.471s
user    0m0.000s
sys 0m0.000s

Удалите #if 0 ... #endif, чтобы он получал случайные целые числа из / dev / urandom (возможно, медленнее).

А насчет требований к памяти: в системе musl требуется только 4K RSS во время всего ее выполнения.

РЕДАКТИРОВАТЬ: Замена gettimeofday на clock_gettime дает удвоенную скорость.

0
13.09.2018, 21:07
1 ответ

При вводе выборки:

find /tmp -lname '/net/*'

В более общем случае скажите findисследовать каждую локальную файловую систему, но оставаться в каждой файловой системе:

find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev -lname '/net/*'

В более общем случае попросите findвыполнить поиск в локальных файловых системах, как описано выше, но составьте список возможных целей NFS:

readarray -t nfsmounts < <(awk '$3 ~ /^nfs/ { print $2 }' < /proc/mounts)
excludes=()
excludes+=("(")
excludes+=(" -lname ${nfsmounts[0]}")
for((i=1;i < ${#nfsmounts[@]}; i++))
do
  excludes+=( " -o -lname '${nfsmounts[i]}/*'")
done
excludes+=(")")
find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev ${excludes[@]}

Другая альтернатива начальному списку файловых систем :parse /proc/filesystems для типов файловых систем, которые неnodev:

find $( for type in $(awk '$1 != "nodev"' /proc/filesystems); do mount -l -t "$type" | awk '{print $3}'; done ) \
  -xdev -lname '/net/*'
2
28.01.2020, 02:31

Теги

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