Минуту, макс. и среднее число довольно легко получить с awk:
% echo -e '6\n2\n4\n3\n1' | awk 'NR == 1 { max=$1; min=$1; sum=0 }
{ if ($1>max) max=$1; if ($1<min) min=$1; sum+=$1;}
END {printf "Min: %d\tMax: %d\tAverage: %f\n", min, max, sum/NR}'
Min: 1 Max: 6 Average: 3,200000
Вычисление медианы немного более хитро, так как необходимо отсортировать числа и сохранить их всех в памяти некоторое время или считать их дважды (в первый раз для подсчета их, вторыми - для получения среднего значения). Вот пример, который хранит все числа в памяти:
% echo -e '6\n2\n4\n3\n1' | sort -n | awk '{arr[NR]=$1}
END { if (NR%2==1) print arr[(NR+1)/2]; else print (arr[NR/2]+arr[NR/2+1])/2}'
3
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh
Пока Вы используете --bind
(в противоположность --rbind
), Вы получаете клон монтирования без материала, смонтированного сверху его.
Можно переместить монтирование в новое местоположение, не размонтировав его, с помощью mount --move
:
$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home
Я попытался достигнуть чего-то, что ответ подобного, но ephemient не объяснил семантику метода. Это перестало работать для меня и таким образом, я задал фактически тот же вопрос ранее здесь на Unix. SE. После комментария я понял это самостоятельно и ответил на это. Это - отредактированная версия моего ответа для вписывания в этот контекст здесь. Я удалил свой другой вопрос (и ответ) в пользу этого.
Вот то, что я пытался сделать:
Монтируется:
/dev/sda1 on / type ext4 (rw)
/dev/sdb1 on /data type ext4 (rw)
/data/home on /home type none (rw,bind)
После монтирования /
У меня есть папка /home/joe
для пользователя joe
. После того как другое местоположение смонтировано (/data
) Я имею полный набор в наличии домашних папок, таким образом, я - связанный смонтированный их в место (/data/home on /home
). Существует папка /data/home/joe
, таким образом, пока монтирование /dev/sdb1
успешно выполняется, он получит содержание /data/home/joe
, иначе он отступит к /home/joe
(на /dev/sda1
!).
Когда это успешно выполняется, как я могу получить доступ к исходному содержанию /home/joe
(на /dev/sda1
!) вместо тех связывают - смонтированный в место от /data/home/joe
?
На основе комментария комментария Patrick к моему вопросу и решению ephemient (принятый ответ здесь), я придумал следующее.
По-видимому возможно mount --bind
(или mount -o bind
) родительская папка (это - ключевая роль) связывания - монтируется в другом месте и таким образом получает доступ к исходному содержанию. Таким образом для моего случая в качестве примера, вместо того, чтобы пробовать к:
mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath
(т.е. смонтируйтесь, уже связывают - смонтированные местоположения в другом месте), я имел к:
test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath
Таким образом, это - то, что Patrick имел в виду в своем комментарии
Если Вы не повторно монтируетесь
/
(корень), тот ответ должен работать просто великолепно.
Пока у Вас есть родительская папка к связыванию - смонтированное доступное местоположение, это будет работать, хотя с одной косвенностью как показано выше. Если Вы связываете - смонтировал что-то /
Вам не повезло, поскольку нет никакой родительской папки для /
.
mount --bind
, но только получил некоторые замысловатые идеи, которые, несомненно, повредились бы, когда мне был нужен он. Это делает точно, в чем я нуждаюсь и могу даже войти как постоянное монтирование. Спасибо – Janus 30.11.2010, 07:23