Сperl
:
printf '%s' "$SUB_STRING" |
perl -l -0777 -ne '
BEGIN{$sub = <STDIN>}
@matches = m/\Q$sub\E/g;
print scalar @matches' <(printf '%s' "$STRING")
Только с bash
всегда можно сделать что-то вроде:
s=${STRING//"$SUB_STRING"}
echo "$(((${#STRING} - ${#s}) / ${#SUB_STRING}))"
То есть $s
содержит $STRING
со всеми удаленными вхождениями $SUB_STRING
внутри него. Мы находим количество $SUB_STRING
, которые были удалены, вычисляя разницу в количестве символов между $STRING
и $s
и деля на длину самого $SUB_STRING
.
POSIXly вы могли бы сделать что-то вроде:
s=$STRING count=0
until
t=${s#*"$SUB_STRING"}
[ "$t" = "$s" ]
do
count=$((count + 1))
s=$t
done
echo "$count"
38 МБ/с соответствует 304 Мбит/с, что является довольно хорошей скоростью передачи данных по каналу 1 Гбит/с,
-Несколько факторов влияют на снижение скорости передачи:
1 -пропускная способность самого сервера.
2 -Производительность ввода/вывода на сервере [используйте #iostat -xm 1], чтобы проверить, используется ли какой-либо из дисков >90% при операциях чтения/записи.
3 -Промежуточное устройство L2 может вызвать такое замедление [попробуйте прямое соединение, чтобы избежать этого].
В дополнение к другим ответам:
Если все полностью в вашу пользу, вы должны приблизиться к 70 -80% от 1 Гбит/с (, т.е. 80% от 1024 мегабит в секунду, т.е. 0,8 *1024/8 мегабайт в секунду ), но это может быть в ущерб другим типам подключений (малые размеры пакетов или потребность в большей чувствительности и меньшей задержке)
Наконец, никогда не стоит недооценивать пропускную способность переноса USB-ключа (или проезда )по... (пешком, что также является бонусом к здоровью )
.What is a normal scp transfer speed on 1Gbit LANs?
112 МБ/с
Как и во всплывающем окне Microsoft Windows или scp
в Linux, скорость копирования указывается в МБ (мегабайтах )в секунду. Не путайте это со скоростью сети , которая указывается в битах в секунду. С этого момента давайте стандартизируем, что о скорости копирования следует говорить в байтах в секунду (МБ/с ), а не в битах в секунду (Мбит/с)
Обоснование:
scp
в linux, от linux к системе linux scp
между Linux и Linux может происходить, даже если обе системы обрабатывают (, например, выполняя работу с реальными числами с верхним отображением 60 ядер на 100% на 64-ядерном сервере ). scp
из ~80 МБ/с, и я так и не узнал, почему, однако мой SLES 11.4 для окон превысил Самба по-прежнему делала 112 МБ/сек. Также не забывайте кэширование диска . Например, если ваш сервер имеет 128 ГБ ОЗУ, а ваш компьютер с Win10 имеет 32 ГБ ОЗУ, и вы только что 7 -заархивировали один файл размером 10 ГБ, этот один файл tar размером 10 ГБ может находиться в ОЗУ, а не (еще )на диске. Таким образом, скорость передачи копий в этом случае не будет сдерживаться дисковым вводом-выводом до тех пор, пока у вас не закончится оперативная память по сравнению с размером копируемого файла, и дисковое кэширование не будет поддерживаться, и в этот момент вы наблюдайте, как постоянная скорость копирования 112 МБ/с падает до некоторой более низкой скорости (, особенно при использовании вращающихся дисков по сравнению с твердотельными накопителями )из-за дискового ввода-вывода. А также некоторые другие вещи, независимые от проводной сети со скоростью 1 Гбит/с и связанного с ней сетевого оборудования, могут снизить скорость передачи данных до 112 МБ/с.
for comparison, the 112 MB/sec I am claiming is 896 Mb/sec.
Стоит отметить, :огромным убийцей скорости передачи, которая может снизить ее со 112 МБ/с до килобайт в секунду, является копирование папки с множеством подпапок и [небольших] файлов, поэтому никогда не делайте этого, если вам нужна скорость передачи. В таком случае лучше всего сначала tar или iso собрать все это в один файл, каким бы большим он ни был.и передать только это одно и извлечь его в место назначения.