LINUX.ORG.RU

Аномальная запись на диск

 , , ,


0

1

iotop показывает такую картину. Т.е. высокий «actual disk write», процессы показывает что почти ничто ничего не пишет, «total disk write» тоже низкий (около нуля). При этом диск постоянно шуршит, индикатор дисковой активности постоянно горит.

Просто я запустил такой скрипт:

#!/bin/bash

PORTS='80
8000
8080
8888'

UA="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0"

for ((a=2; a<256; a++))
  do
    (for ((b=0; b<256; b++))
      do
        for ((c=0; c<256; c++))
          do
            for ((d=0; d<256; d++))
              do
                IP="$a.$b.$c.$d"
                for PORT in $PORTS
                  do
                    SERVER="$IP:$PORT"
                    timeout 5 wget --quiet -U "$UA" -T 1 -t 1 -O "/dev/shm/$SERVER.html" http://$SERVER/
                    if grep -q 'Stream is up at' "/dev/shm/$SERVER.html"
                      then
                        echo "http://$SERVER/" >> all_servers.m3u
                        if grep -q 'Stream is up at 128 kbps' "/dev/shm/$SERVER.html"
                          then
                            echo "http://$SERVER/" >> 128kbps_servers.m3u
                        fi # if 128
                    elif grep -q 'Icecast2' "/dev/shm/$SERVER.html"
                      then
                        echo "http://$SERVER/" >> Icecasts.list
                    fi # if shoutcast
                    rm "/dev/shm/$SERVER.html"
                done # for ports
            done # *.*.*.d
        done # *.*.c.*
    done # *.b.*.*
    ) &
done # a.*.*.*

По задумке всё должно происходить в памяти, т.к. временные файлы пишутся в /dev/shm (tmpfs).

/dev/shm свободен, df показывает

Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
tmpfs         1,8G   668K         1,8G       1%      /dev/shm

Памяти по идее тоже должно хватать.

И это не запись выхлопов echo, что в скриптах перенаправляются в файлы, это происходит очень редко (меньше десяти записей в день).



Последнее исправление: RageAgainstMachine (всего исправлений: 3)

«я у мамы хикир»

сам найдёшь, где у тебя запись мимо /dev/shm. И кстати, мог бы осилить документацию к nmap

router ★★★★★
()

Делай wget на стандартный вывод, захватывай его в переменную и делай grep из нее.

#!/bin/bash

DATA=$(wget --quiet -O - https://ya.ru/)

echo "$DATA" | grep "content"
anonymous
()
Ответ на: комментарий от router

Блин, это демон какой-то sysstat... Поставил, запустил, sar -W показывает

Linux 4.4.0-62-generic (FuckingComputer)        14.02.2017      _x86_64_        (2 CPU)

22:33:24     LINUX RESTART      (2 CPU)

Оно намекает на перезагрузку что ли? Пока не вариант.

RageAgainstMachine
() автор топика
Ответ на: комментарий от router

И кстати, мог бы осилить документацию к nmap

Лень, весь вечер читать надо, скрипт на баше написать было быстрей. Хотя может и стоило бы, мой скрипт по приблизительной оценке при текущей скорости год потратил бы на скан всего интернета :D

RageAgainstMachine
() автор топика
Ответ на: комментарий от RageAgainstMachine

Оно намекает на перезагрузку что ли?

На то, что данные ещё не собраны. Ну посмотри atop. В сторону скорости записи в своп

router ★★★★★
()
Ответ на: комментарий от anonymous

Делай wget на стандартный вывод, захватывай его в переменную и делай grep из нее.

Делал так раньше в других скриптах. В этот раз решил попробовать /dev/shm задействовать. Интересно всё же почему так происходит.

RageAgainstMachine
() автор топика
Ответ на: комментарий от legolegs

-T 1

Бедный, как же ты без австралийского радио жить будешь.

Ну кстати что-то с доменом .au попадалось.

RageAgainstMachine
() автор топика
Ответ на: комментарий от anonymous

Делай wget на стандартный вывод, захватывай его в переменную и делай grep из нее.

Кстати, в моём варианте ещё использование /dev/shm было удобно тем что можно было мониторить прогресс в реалтайме командой watch ls -C /dev/shm.

RageAgainstMachine
() автор топика
Ответ на: комментарий от router

Памяти по идее тоже должно хватать.

ИМХО, не угадал.

Кстати, ещё один нюанс. Там хоть и параллельно максимум 255 процессов, соответственно в /dev/shm максимум может быть где-то столько же файлов создаваться, но почти все файлы эти нулевого размера, ненулевого единицы оказываются. Нулевого размера потому что по IP адресу сервер либо не запущен, либо другая причина.

RageAgainstMachine
() автор топика

Памяти по идее тоже должно хватать.

А на скрине видно, что 656 Мб в swap-е, т.е. уже не хватает.

Запусти iotop с параметром -o, что-бы скрыть процессы которые не пишут на диск.

       -o, --only
              Only  show processes or threads actually doing I/O, instead of showing all
              processes or threads. This can be dynamically toggled by pressing o.

DiMoN ★★★
()
Ответ на: комментарий от DiMoN

А на скрине видно, что 656 Мб в swap-е, т.е. уже не хватает.

Там старый мусор скопился ещё до запуска скрипта.

Запускал, толку-то, показывает то же самое, только процессов показывает единицы (меньше десяти) и их IO 0%.

RageAgainstMachine
() автор топика

При этом диск постоянно шуршит,

Может у тебя корень без noatime смонтирован и у /usr/bin/grep atime проставляется?

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Может у тебя корень без noatime смонтирован и у /usr/bin/grep atime проставляется?

Relatime там, сейчас так по умолчанию монтируются. Т.е. проблема не в этом.

Возможно проблема была во wget, добавив ключ --no-hsts дисковая активность пропала, но после этого я не проверял толком, надо было на несколько часов оставить и понаблюдать, но я забил на эту затею пока.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.