Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

пятница, 15 марта 2024 г.

Получить время непрерывной работы жесткого диска из smartctl

 Некоторые утилиты выдают время непрерывной работы диска в годах, днях и часах. Но штатный smartctl - только в часах, к тому же среди остальной информации.

Попробуем сочинить команду для получения подобного результата.

sudo smartctl --all /dev/sdX|grep -A10 "ID#"|grep "^ \{0,2\}9"|awk '{print $10}'

  1. smartctl выдает длинную портянку атрибутов и прочих полезностей. Нам нужен атрибут №9: "power on hours" или "power on time" или как-то еще. Название не стандартизировано, а вот номер всегда одинаков.
  2. для этого мы находим заголовок таблицы атрибутов и берем первые 10 строк этой таблицы. 10 - чтобы с запасом. А таблицу ищем, чтобы не взять в работу что-то не то, которое будет выглядеть похоже на искомое.
  3. в этих 10 строках ищем ту, которая начинается с девятки, перед которой могут быть, а могут и не быть несколько пробелов.
  4. awk понимает, что если между осмысленными данными несколько разделителей-пробелов подряд, то их надо считать одним разделителем. В десятом поле строки, полученной в п.п. 1-3 содержится количество отработанных диском часов.

Например:

$ sudo smartctl --all /dev/sdb|grep -A10 "ID#"|grep "^ \{0,2\}9"|awk '{print $10}'

25457

Без awk строка выглядит так:

  9 Power_On_Hours          0x0032   071   071   000    Old_age   Always       -       25457

То есть, диск отпахал уже более 25 тысяч часов. Дальше можно поизвращаться с дополнительными конвейерами, дабы получить более удобное представление, но я этим заниматься не хочу, а вместо этого займусь целочисленной арифметикой. Для этого присвою вывод предыдущей команды переменной workedHours и поработаю с ней.

$ echo $(( workedHours * 100 / 24 / 36525 )) $(( (workedHours * 100 / 24 % 36525 ) /100 ))

Если взять workedHours=25457, то на выходе получим

2 328

то есть, диск отработал 2 года и 328 дней.

Для чего лишние умножения и деления на 100? Bash умеет только целочисленную арифметику, а реальная продолжительность года 365.25 суток, как я помню. Именно из-за этой четвертушки каждый четвертый год - високосный, с одним добавочным днем. И чтобы имитировать такую арифметику, мы умножаем делимое и один из делителей на 100. Количество часов в сутках суть константа, ее умножать не надо.

Поскольку во втором выражении проделано то же самое, то чтобы остаток от деления на длину года был похож на правду, его надо разделить на 100.

Собственно, всё. Наслаждайтесь.

понедельник, 19 февраля 2018 г.

Zimbra: статистика по размерам почтовых ящиков

Статистику по размерам почтовых ящиков можно смотреть через веб-интерфейс. Но это не всегда удобно, а иногда и невозможно.

Но это ж линукс, детка!

zimbra@server:$ zmprov gqu имя_сервера|sort -k 3 -n|column -t

и получаем красивую ровную табличку, отсортированную по правому столбцу, где указан, собственно, размер занятого места. (в первом столбце адрес учётки, во втором - квота для нее)

gqu -- GetQuoteUsage

-k 3 -- сортировать по третьему столбцу
-n -- сортировать числа как числа, чтобы 20 шло после 19, а не после 10

-t -- подобрать подходящие для красивой таблички ширины столбцов

пятница, 26 мая 2017 г.

SQUID, AWK и статистика

Итак, выяснилось, что какой-то специфичный анализатор лога, чтобы собирать ежедневную обобщенную статистику, мне не требуется.

Что нужно? Нужно посчитать, сколько всего трафика за сутки израсходовал тот или иной пользователь.

Решаем задачу наличными силами и подручными средствами. Лог сквида имеет вполне определенный формат, гугл в помощь. Мне нужны поля: передано байт (5), имя пользователя (8) и результат запроса (4). Ну и воспользуемся такой прелестью авка, как ассоциативные массивы. Дальше - просто копипаста рабочего скрипта.
MAWK давно не обновлялся, поэтому я явно указал интерпретатор GAWK.

#!/usr/bin/gawk -f
# usage:
# 1) get_sqlog.awk filename
# 2) cat filename|get_sqlog.awk

# Если нет пользователя или есть один из двух отлупов, то переходим к следующей строке
{if ($8 == "-" || $4 == "TCP_DENIED/407" || $4 == "TCP_DENIED/403") { next }
# Ассоциативные массивы, в качестве индекса - имя пользователя
# Сколько раз он нам попался
    ++occurrences[$8]
# Его трафик
    summary[$8]=summary[$8]+$5
}
END {
# Проходим по всем элементам массива и красиво печатаем их
# Переменная а принимает значения индексов, определенные во время анализа
for (a in occurences){
    printf "%-30s:%10d:%10d\n",a,occurrences[a],summary[a]
    }
}

Под катом подробное описание.

среда, 8 февраля 2017 г.

bash, AD: выбор пользователей из группы, входящих и в другую группу

Есть в нашем домене группа, куда добавлены работники разных филиалов, но мне надо обработать только тех, что находятся в моем филиале. Причем не всех, а только из отдельных подразделений.
В свое время я предлагал сделать возможность создания вложенных OU, чтобы группировать пользователей по отделам внутри филиала. В ответ узнал очень много о своей умственной неполноценности.
Не буду сейчас характеризовать тех, кто этого добивался - свалить всех в одну кучу, потому что свои проблемы я решил. Не так эффективно, как можно было, но для моих целей достаточно. А как они там фигачат километровые скрипты на PowerShell, чтобы найти жемчужинку в тоннах информационного навоза, меня не касается.
Однако, изменить структуру домена я не могу, поэтому приспосабливаемся.

Итак, задача:
1. есть группа, в которую свалены работники разных филиалов. Все логины имеют вид фамилия_инициалыN, где N - цифра, добавляемая в случае совпадения фамилии и инициалов (вонючий костыль вместо того, чтобы разрешить создавать субдомены)
2. мне надо отобрать своих
3. что-то с этими своими сделать.

вторник, 6 декабря 2016 г.

rsync: копирование с Windows на Linux

Решил я всё же добить возможность копирования rsync-ом из-под винды на линукс. Не, ну в самом деле, что за издевательство - такой удобный способ и недоступен!

За основу взял DeltaCopy - cygwin-порт самого rsync и нескольких дополнительных утилит плюс графическая обвязка как для клиента, так и для сервера. GUI-вая часть меня пока не интересует, а вот rsync/win решил испытать. Сразу уточню: есть и другие порты, но их я не проверял и не пробовал.

Особенности


Задавать имя входного каталога на системе с windows лучше в формате /cygdrive/БУКВА/путь, где "буква" - буква диска без двоеточия, например: /cygrive/c/windows.

Windows имеет дурную привычку хранить имена файлов в разных кодировках - и юникод и 1251 и 866, в общем, полный бардак. Юниксы давно перебрались на utf-8 и не заставляют своих пользователей париться по этому поводу.

Rsync из DeltaCopy не поддерживает копирование виндовых ACL и есть какие-то странности с копированием других расширенных атрибутов. Но в моем конкретном случае это не критично, потому не заморачивался уточнениями.

Грабли

Первые грабли, на которые я наступил, это трансляция имён файлов, написанных не латиницей. Порылся в интернетах, где мне напомнили, что есть параметр --iconv=код_из,код_в, позволяющий указать характеристики трансляции
"код_из" - из какой кодировки преобразуем, "код_в" - в какую. Для копирования с windows на linux получаем --iconv=cp866,utf-8.

Вторая грабля - неожиданное прекращение копирования при указании параметра iconv. Сообщение на отправляющей стороне было совсем невразумительным. А вот в протоколе на самом сервере ситуация немного прояснилась: "rsync: The server is configured to refuse --iconv". Вот те на! Что за нафиг такой?
Вылечилось, опять же, по советам из этих ваших интернетов, добавлением строки charset=utf-8 в /etc/rsyncd.conf.

Всякое разное

Для большей безопасности, я создал в конфиге rsync-а несколько "модулей" - секций, описывающих разные места для копирования и доступы к ним. Пример такого модуля:

[media]
    path = /media
    use chroot = yes
    lock file = /var/lock/media-restore.lock
    read only = no
    timeout = 600
    auth users = восстановитель
    uid=root


[media] - это имя модуля. Оно указывается в команде отправки:
... пользователь@сервер_rsync::media/путь
Пользователи вместе с их паролями задаются в файле, описанном в конфиге параметром
secrets file = /etc/rsyncd.secrets
Формат файла: каждый пользователь на отдельной строке в виде логин:пароль, например "восстановитель:пароль_восстановления". В конце файла желательна пустая строка.

path - путь в файловой системе сервера
use chroot - крайне желательно во избежание злоупотреблений с путями типа модуль/путь/../../запретная_зона
lock file - служебный файл, создаваемый при обработке операций в этом модуле.
auth users - можно задать не только глобальный список разрешенных пользователей, но и для каждого модуля указывать отдельные разрешения. В примере я не хочу, чтобы к модулю [media] получил доступ какой-нибудь другой пользователь
uid - идентификатор пользователя, от имени которого выполняются операции. Сам демон rsync обычно запускается от рута, поэтому проблем с мимикрированием быть не должно. Дополнительно см. описание параметра --super.

понедельник, 17 октября 2016 г.

passwd и неожиданный Kerberos

Рутинная задача: сменить пароль локального пользователя на линуксовом сервере.

passwd траблмейкер
введи старый пароль:
введи новый пароль:
повтори новый пароль:

А вот хрен там!

passwd траблмейкер
Пароль от Кербероса давай, да? (Current Kerberos password:)

Опаньки! А откуда я знаю этот пароль, если для этого пользователя он никогда не задавался? И почему для рута, чей пароль я менял несколько минут назад, этого не спрашивали?
Прямо сейчас лень долго разбираться, в чем дело, поэтому пошел по пути наименьшего сопротивления (http://unix.stackexchange.com/questions/116028/how-could-i-eliminate-kerberos-for-passwd)

Запускаем от рута pam-auth-update, снимаем чекбокс с кербероса, после чего дурацкий вопрос не задаётся. Желательно после смены пароля вернуть чекбокс на место - х.з., на что это может повлиять на самбовском сервере.

понедельник, 6 июня 2016 г.

[no][dir]atime в Windows

Файловые системы хранят массу информации про файлы. В том числе и как минимум три временных отметки: дата-время создания файла (когда была создана запись файловой системы), дата-время последнего изменения (когда последний раз менялось содержимое файла) и дата-время последнего обращения к файлу.

понедельник, 24 августа 2015 г.

Рекурсивная md5sum

Встала неплановая задача: посчитать контрольные суммы в дереве каталогов. Как выяснилось, штатная md5sum этого не умеет - она работает только с текущим каталогом.

Пришлось изобрести велосипед:

rm путь-к-файлу-контрольных-сумм
find * -type f -exec md5sum {} \;>>путь-к-файлу-контрольных-сумм

Велосипед поехал нормально. Но великий и могучий подсказал, что уже есть как минимум мотоцикл:

MD5DEEP

       md5deep - Compute and compare MD5 message digests
       sha1deep - Compute and compare SHA-1 message digests
       sha256deep - Compute and compare SHA-256 message digests
       tigerdeep - Compute and compare Tiger message digests
       whirlpooldeep - Compute and compare Whirlpool message digests

       Computes  the  hashes,  or  message digest, for any number of files while
       optionally recursively digging through the directory structure.

Из недостатков:
1. не умеет отбирать файлы по расширению. Как сказано в мане, если выполнить
md5deep -r *.txt , то будут обработаны файлы в каталогах с расширением .txt, а не текстовые файлы
2. смущает надпись "United States Air Force" в заголовке мана. Будем считать это выпендрёжем

UPD: куча дополнительных способов здесь

четверг, 25 сентября 2014 г.

SMBCACLS: практические примеры

Долго искал, но не мог найти ничего вразумительного по использованию утилиты, позволяющей из командной строки линукса управлять правами доступа к файлам на шарах.

NB! на своих серверах я не использую "default domain", поэтому имена доменных пользователей у меня всегда задаются в виде домен\\логин.

Простой просмотр прав (унаследованных и нет) на файл или папку в расшаренном ресурсе:


smbcacls //сервер[.FQDN]/ресурс файл|каталог -U домен\\пользователь

папка созданная рутом на самом сервере:

smbcacls //cnt30srv042.contoso.com/scan cnt30prn098 -U contoso\\gates_wh
Enter contoso\gates_wh's password:
REVISION:1
CONTROL:SR|DP
OWNER:Unix User\root
GROUP:CNT30SRV042\Domain Admins
ACL:Unix User\root:ALLOWED/0x0/FULL
ACL:CNT30SRV042\Domain Admins:ALLOWED/0x0/FULL
ACL:Everyone:ALLOWED/0x0/
ACL:Creator Owner:ALLOWED/OI|CI|IO/FULL
ACL:Creator Group:ALLOWED/OI|CI|IO/FULL
ACL:Everyone:ALLOWED/OI|CI|IO/READ

воскресенье, 9 июня 2013 г.

ASUS P8H67-M PRO и сенсоры в Linux

Была у меня плата iD865PERL, все ее сенсоры нормально ловились стандартной libsensors и я четко знал, с какой скоростью крутятся вентиляторы, каковы напряжения и всё такое. После прошлогоднего апгрейда на P8H67-M PRO мне остались доступны только температура ЦПУ (общая и по конкретным ядрам) и температуры жестких дисков. Меня это, понятно, ну никак не устраивало.

четверг, 9 мая 2013 г.

Подключение box.com в линуксе

Пару месяцев назад, поддавшись моменту, зарегистрировал себе бесплатный аккаунт на box.com - очередное файлохранилище на 50 гигов. Речь, однако, не о самом обменнике, а об его практическом использовании. Веб-интерфейс у него приятный, спору нет, но лично меня, например, раздражает, что для загрузки целого каталога надо запускать java-апплет. Штатного синхронизатора под линукс тоже нет, только под винду и макось. Стало быть, надо найти способ смонтировать хранилище в файловую систему.

Из официального FAQ:
В: Поддерживает ли box.com доступ через WebDAV?
О: Да, поддерживает. Адрес: https://www.box.com/dav

Отлично. Но как? Ответ нашелся здесь. Однако, xmodulo описывает подключение через штатный GUI Nautilus для Unity/Gnome, которого нет в XFCE. Ну, или я очень плохо искал. Выглядит это так (за неимением юнити, использую авторские скриншоты):


  1. Выбираем пункт "подключиться к серверу":
  2. Вводим параметры:
  3. Готово!


Но этот путь мне не подходит, ибо нету "подключения к серверу". Что ж, продолжим читать xmodulo... (в его примерах используется vi, лично я предпочитаю nano)

Для подключения без использования GUI воспользуемся davfs2.


  1. Устанавливаем:
    sudo apt-get install davfs2
  2. Создаем точку монтирования (у меня так, вам никто не запрещает разместить ее где-то в другом месте):
    $ mkdir ~/mnt/boxcom
  3. Поскольку WebDAV от box.com не поддерживает блокировку файлов, отключим её, чтобы не получать сообщения об ошибках:
    sudo nano /etc/davfs2/davfs2.conf
    Если файл раньше не правили, то в нем будет строчка
    #use_locks       1

    Убираем комментарий и меняем 1 на 0 - мы НЕ используем блокировки:
    use_locks       0
  4. Поскольку мы не хотим возиться с лишними sudo, то перенастроим пакет так, чтобы монтирование davfs было разрешено и простым смертным обычным пользователям:
    sudo dpkg-reconfigure davfs2


  5. А еще для этого надо добавить себя в соответствующую группу пользователей:
    (дальше по тексту замените sergei на своё имя пользователя)
    sudo usermod -a -G davfs2 sergei
  6. Вводить каждый раз длинную команду монтирования тоже некошерно, поэтому слегка поправим /etc/fstab, добавив в него строку (замените /home/sergei/mnt/boxcom на путь к вашей точке монтирования):
    https://www.box.com/dav /home/sergei/mnt/boxcom davfs rw,user,noauto 0 0
  7. Подключаемся:
    $ mount boxcomPlease enter the username to authenticate with server https://www.box.com/dav or hit enter for none.  Username: <ваш бокс-комовский логин>Please enter the password to authenticate user <ваш бокс-комовский логин> with serverhttps://www.box.com/dav or hit enter for none.  Password: <ваш бокс-комовский пароль>
Готово, собственно! Посмотрите командой mount, как оно подключилось, а с помощью df проверьте, сколько там свободного места. Чтобы еще больше облегчить себе жизнь и монтировать этот сетевой диск без лишних нажатий, добавим имя и пароль в соответствующий файл:

(защищаем его от непрошенных глаз)
$ chmod 600 ~/.davfs2/secrets

(собственно правка)
$ nano ~/.davfs2/secrets

https://www.box.com/dav <ваш бокс-комовский логин, как правило - емайл> <ваш бокс-комовский пароль>


среда, 23 января 2013 г.

AVAHI и SAMBA

Есть в линуксах такая штука как демон avahi. Он служит для быстрой настройки на сеть в который нет своего   DNS сервера или не крутится ось от  Apple. В более крупных сетях или сетях под управлением других осей оно не особо и надо. Но почему-то оно по умолчанию включено даже в некоторых серверных убунтах, не говоря уже о десктопных. У меня сложилось впечатление, что оно еще и с самбой конфликтует.

Неплохое описание что к чему и как от него избавиться.

Несмотря на упоминание RHEL, совет вполне применим и к убунте.

четверг, 6 сентября 2012 г.

UUID в убунте и не только


Удобная, надо заметить, штука...

Но недавно тупо заткнулся, не сообразив, как же мне посмотреть UUID-ы существующих дисков для создания нормальных записей в fstab. Не, я, конечно, могу глянуть что-то вроде

# ls -la /dev/disk/by-uuid/
lrwxrwxrwx 1 root root  10 2012-09-05 15:40 0d7aa8fb-bf3e-4b00-920e-c111c0b497c3 -> ../../sda1
lrwxrwxrwx 1 root root  10 2012-09-05 15:40 cc554ed1-3953-4e0e-bd86-94d3bafd48ef -> ../../sda5
lrwxrwxrwx 1 root root  10 2012-09-05 15:40 f10836e7-6594-4463-93c9-ca9c28ff71d0 -> ../../sdb5
но это сильно отдает извращением. Гораздо проще воспользоваться штатной командой
 # blkid
/dev/sda5: UUID="cc554ed1-3953-4e0e-bd86-94d3bafd48ef" TYPE="swap"
/dev/sdb5: UUID="f10836e7-6594-4463-93c9-ca9c28ff71d0" TYPE="ext4"
/dev/sda1: UUID="0d7aa8fb-bf3e-4b00-920e-c111c0b497c3" TYPE="ext4"
Почему я об этом пишу? Потому что родной apropos никак не связывает UUID и blkid. Оно, конечно, понятно, что UUID - это один из "block device attributes", но всё же как-то не всегда это вспоминается.

пятница, 27 июля 2012 г.

О калькуляторах командной строки

Есть в этих ваших линуксах хорошая штука, называется dc - RPN-калькулятор. Но при всех его фишках, имеет он и ряд недостатков. Нет, RPN к ним не относится - я когда-то игрался с FORTH-ом и с ПМК "Электроника" (например, МК-61), и такой синтаксис мне понятен и удобен. Но вот некоторых функций не достает.

А тут гугл выкатил объяву об усовершенствовании своего поискового калькулятора и в качестве примера предложил посчитать, сколько будет "6 пи делить на 4". Каждый извращался по своему в комментах, кто-то считал в гугле, кто-то в уме... Один товарисч воспользовался возможностаями оболочки bash. Я попробовал посчитать в dc и понял, что ни фига не выйдет, ибо константы "пи" в нем нет, как нет и тригонометрических функций. Надеясь, что это я что-то проглядел, я кинулся к великому и могучему с вопросом: "trigonometric in dc calculator, да?", на что он ответил такой вот ссылкой: "dc не поддерживает тригонометрию". И по той же ссылке мне кагбэ намекаэ, что есть и bc, поддерживающий стандартную математическую библиотеку...

Надо это учесть.

четверг, 7 июня 2012 г.

Сложный поиск с grep

Для красноглазых гуру это будет "фи!", а мне в самый раз - заметочка на память.

Понадобилось мне фильтровать системный лог. Ну, чего проще:

grep "искомое" имя_лога

А если по двум критериям?

grep "искомое1" имя_лога|grep "искомое2"

Угу. Вот только этот вариант работает по логике AND, и если хотя бы одного из искомых не будет, то в выдачу ничего не попадет. Однако, чукча не только писатель, но и читатель. Пришлось курить маны и хауту. Подсказали мне про egrep, но он штатно есть не на всех системах.

Правильный ответ со штатным grep:

grep ["искомое1|искомое2|...|искомоеN"]

пятница, 20 января 2012 г.

VMWare и консоли в линуксе

Не слишком великая новость, скорее - заметка для себя в стиле "полезные мелочи"

Переключение между консолями в линуксе осуществляется по комбинации c-a-Fx, где "Fx" - это F-клавиша соответствующая номеру консоли, например, ctrl-alt-F1 перекидывает на первую, обычно - основную после загрузки - консоль, ctrl-alt-F7 - на седьмую, в которой по традиции работают иксы.

Однако, под VMWare ESX комбинация ctrl-alt служит для освобождения курсора мышки, захваченного окном виртуальной машины, и c-a-Fx не срабатывает, что есть грустно. Ответ нашелся на форуме сообщества VMWare. Проверено, работает.

"Если надо использовать внутри ВМ комбинацию ctrl-alt-клавиша, то сначала надо нажать ctrl-alt-пробел, потом, НЕ отпуская c-a, нажать нужную клавишу."

Успешно переключаюсь таким образом между виртуальными консолями в серверной убунте, работающей в виртуалке.

суббота, 9 июля 2011 г.

Ростелеком... 20110709

 Вчера таки напечатали мою претензию на сайте обратной связи. И дали на нее вот такой ответ:

-
Требую объяснить, по какой причине дальневосточные (и некоторые другие) серверы имен (DNS) Ростелекома отказываются выдавать адрес для существующего и давно работающего ресурса?
Здравствуйте, Сергей Павлович! Сайт liveinternet.ru заблокирован согласно http://www.minjust.ru/ru/activity/nko/fedspisok/ 406. Записи электронного дневника, расположенного по электронному адресу: ?www.Liveinternet.ru/users/neonazi? (решение Калининского районного суда г. Санкт-Петербурга от 04.08.2008). Спасибо за обращение на сайт.

-
По-простому говоря, из-за того, что указанный дневник некоего "неонаци" значится под номером 406 в Федеральном списке экстремистских материалов, РТК не придумал ничего умнее, как заблокировать доступ ко всему домену li.ru. Уважаемая редакция газеты "Женминь жибао", я медленно превращаюсь в нефритовый стержень!
(число 406 после ссылки во второй строке ответа - не часть URL, а просто порядковый номер на странице, куда ведет ссылка).
Заметим, что судебное решение вынесено в 2008 году, а доступ заблокирован, как я понял, только в 2011. Интересно, не является ли такое торможение преднамеренным несвоевременным исполнением судебного решения? Не спросить ли мне это в прокуратуре?

Пришлось написать еще одну "заявку". Посмотрим, ее тоже с третьего раза опубликуют, или не опубликуют вовсе?

Согласно записи №406 на странице МинЮста http://www.minjust.ru/ru/activity/nko/fedspisok/ , экстремистским признан материал, расположенный на конкретном подразделе ресурса электронных дневников liveinternet.ru.

Требую объяснить, по какой причине блокируется доступ не к конкретному содержимому, указанному в Федеральном списке экстремистских материалов, а ко всему домену? Почему я теперь лишен возможности вести там СВОЙ дневник, расположенный по совсем другому частному URL?
Когда ваши специалисты смогут настроить фильтр, блокирующий конкретный URL, но не мешающий доступу к популярному и полезному ресурсу?

Более того, по какой причине Ростелеком почти три года не блокировал данный ресурс, если судебное решение было вынесено в августе 2008 года? Не является ли такая халатность преднамеренным игнорированием судебного решения? Или мне задать этот вопрос в прокуратуре, чтобы объяснили подробнее?

По какой причине на официальных сайтах Ростелекома/Дальсвязи невозможно найти информацию об этой блокировке? Если я не прав, и эта информация там есть, прошу дать точную ссылку на страницу с этим объявлением.

А по обычной почте вчера или позавчера получил письменный ответ от РТК по поводу больно уж узкого горлышка, соединяющего ЕАО с Хабаровском, из-за чего получить близкую к тарифной скорость можно только в несколько утренних часов. Например, вот как выглядит кусок трассы до www.mail.ru (обращаем снимание на третий хоп, то самое "бутылочное горлышко", причем сейчас это очень по-божески, порой там появляется цифра порядка 300-500мс):

$ tracepath -n www.mail.ru
 1:  192.168.1.2                                           1.017ms pmtu 1500
 1:  192.168.1.1                                           2.425ms
 1:  192.168.1.1                                           3.560ms
 2:  192.168.1.1                                           1.409ms pmtu 1492
 2:  172.25.0.213                                         62.849ms asymm  3
 3:  172.25.213.245                                      198.433ms asymm  7
 4:  10.27.211.254                                        64.956ms asymm  6
 5:  172.25.5.253                                         64.733ms 

Вот кусок ответа (в сокращенном текстовом виде. под катом - сканы):

"...по вашему порту за апрель 2011 входящий трафик 34808,13 МБ, за май 30179,19 МБ, что говорит о хорошем качестве канала..."

Выглядит красиво - скачал 35 гигов за апрель, 30 гигов за май. Однако, тариф у меня называется "free town 4", то есть "безлимит на скорости до 4Мб/с". Скорость в порту по входящему потоку примерно 6Мб/с, по исходящему примерно 512Кб/с.

Займемся арифметикой.
На пиковой скорости в 4Мб/с (Мб - мегабиты, МБ - мегабайты, если кто не знает) пиковая же скорость загрузки должна составить:

4096 (Кб/с) / 8 (бит/байт) = 512КБ/с.

Значит, за минуту я должен выкачивать

60 (секунд/минута) * 0,5 (мегабайт/секунду) = 30 МБ/минута

За час, соответственно:

60 (минут/час) * 30 (МБ/минута) = 1800 МБ/час

Предположим, что я "пиково" качаю 12 часов в сутки, остальное время канал простаивает.

12 (часов) * 1800 (МБ/час) = 21600МБ ~ 21.6ГБ

Или за сутки

21600 * 2 = 43200МБ  ~ 43.2ГБ

Стало быть, за месяц я выкачал меньше суточной нормы для случая полной загрузки канала.

Теперь посчитаем средную скорость загрузки за апрель:

34808,13 (МБ/мес) / 30 (дней/мес) = 1160 МБ/день

Что примерно в 40 раз меньше максимальной скорости. Стало быть, вместо обещанных 4 мегабит, я по факту получал 100 килобит.

Считаем за май:

30179,19 (МБ/мес) / 31 (день/мес) = 973 МБ/день.

Даже до гигабайта в сутки не дотянули. Скорость отдачи считать лень.

Ладно, можно возразить, что я ж не все время непрерывно качал и всё такое. Но теперь посмотрим данные по исходящему трафику за те же месяцы (этих цифр в сканах нет, они на третьем личте письма, который я не сканировал):

Напоминаю: скорость в порту по исходящему потоку 512Кб/с, что составляет 64КБ/с или 64 * 60 * 60 * 24 = 5 529 600КБ/сутки ~ 5,5ГБ/сутки

За апрель:

36120,51 (МБ/мес) / 30 (дней/мес) = 1204 МБ/день или
36120,51 / 30 / 24 / 60 / 60 = 0,0139 МБ/с ~14КБ/с ($ dc -e "4k 36120.51 30 / 24 / 60 / 60 /p")

За май цифры еще красивее:
53938,14 (МБ/мес) / 31 (дней/мес) = 1739 МБ/день или
53938,14 / 31 / 24 / 60 / 60 = 0,0201 МБ/с ~ 20КБ/с

Это при том, что каждый торрент, например, DVD-образы убунты 11.04 и 8.04LTS я раздаю до рейтинга 5:1, то есть, примерно по 20ГБ на каждый скачанный образ.

Да здравствуют безлимитные тарифы от Ростелекома!

вторник, 31 мая 2011 г.

SysRq - спасательный круг

Давно хотел записать сюда этот список, да всё руки не доходили.


Alt + SysRq + H Help — выводит все доступные возможности SysRq, выделяя большой буквой клавишу действия;
Alt + SysRq + 0-9 loglevel0-9 — позволяет менять уровень подробности вывода от 0 (только критические сообщения) до 8 (самый подробный режим);
Alt + SysRq + B reBoot — выполняет немедленную перезагрузку системы аналогично кнопке RESET (без синхронизации и размонтирования файловых систем);
Alt + SysRq + C Crashdump — выполняет директиву kexec для перезагрузки чтобы получить сведения об ошибках;
Alt + SysRq + D holDs — показывает все блокировки, которые держат устройства или файлы;
Alt + SysRq + O powerOff — корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения);
Alt + SysRq + S Sync — пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли «Emergency Sync». При успешно завершении выводится «Emergency Sync Complete»;
Alt + SysRq + U Unmount — пытается перемонтировать все примонтированные файловые системы в режим «только чтение»;
Alt + SysRq + T showTasks — выдаст список текущих задач и информацию о них в текущую консоль;
Alt + SysRq + N Nice — используется для того, чтобы сбросить приоритет задачи реального времени или просто с измененным приоритетом;
Alt + SysRq + W shoW-blocked-tasks — выдаст список всех непрерываемых (заблокированных, ждущих окончание ввода-вывода) задач;
Alt + SysRq + M showMem — выдаст информацию о доступной и занятой оперативной памяти, а также степени использования свопа;
Alt + SysRq + F Full — позволяет вызвать обработчик oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное время). Используйте его, если свободная память совсем истощилась, так что система не реагирует ни на какой иной ввод (курсор мыши не движется, индикаторы NumLock/CapsLock не включаются, но индикатор работы накопителя всё время включен);
Alt + SysRq + K secure access Key — убивает все программы на текущей консоли. Её следует применять для снятия зависшего X-сервера. При этом графический сервер будет остановлен и невозможно будет увидеть ввод-вывод либо пока X-сервер не перезапустится, либо пока видеорежим не будет исправлен вручную;
Alt + SysRq + R unRaw — перехватывает управление мышью и клавиатурой у Х-сервера, что полезно, если Х-сервер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;
Alt + SysRq + E tErm — послать сигнал завершения работы SIGTERM всем процессам, кроме init;
Alt + SysRq + I KILL — послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init;

пятница, 11 февраля 2011 г.

Так и рождаются анекдоты

Попался мне "Advanced BASH scripting guide" от Mendel Cooper. Сижу, читаю. Чувствую себя тем чудаком, который постоянно восхищенно восклицал "ого! никогда бы не подумал! быть такого не может! вот оно как!?", читая то ли букварь, то ли орфографический словарь.

Тем, кому нужен отличный справочник (на английском!) по этой оболочке, рекомендую.

По ссылке можно просмотреть документ в Google Docs в онлайне и (или) скачать оттуда оригинальный PDF.

вторник, 1 февраля 2011 г.

Экономим место на дисках рабочих станций

Логично, что при создании файловой системы, часть пространства в разделе резервируется под всевозможные служебные надобности самой ФС. Для серверов это нормально, когда часть места может быть использована для программного "ремонта" бэдблоков, еще каких-то целей, но на рабочей станции, особенно дома, есть ли смысл отдавать место под то, что скорее всего никогда не понадобится?

Об этом и о том, как выжать максимум из свежесозданного раздела ext4, довольно интересно и с примерами рассказано в этом блоге. Рекомендую. Да, текст - на английском.