Архив за ‘Unix’ категория

Летнее время навсегда?

Февраль 9th, 2011

Вот приняли в России закон об отмене перевода времени. Может, это и хорошо. Меня смущает другое. То, что этой весной, будет последний перевод стрелок. Вот несколько аргументов, что это не правильно, с моей точки зрения. Забегая вперед, скажу от себя, что считаю, если и надо было «останавливаться» в переводе стрелок, то делать это надо осенью после перевода на зимнее время. » Читать дальше: Летнее время навсегда?

Samba & Archive аттрибут = -Executable

Январь 20th, 2011

Заметил неприятную особенность дефолтной конфигурации Samba — при сбрасывании из под Windows Archive аттрибута редактируемого файла разными редакторами, сбрасываются permissions ‘x’ (права файла) на Unix для пользователя, который владеет файлом. Например, есть на Unix файл с правами rwxr-xr-x. Если вы его через Samba поредактируете в Windows каким либо редактором, который любит сбрасывать аттрибут archive (far или komodo edit), то после сохранения изменений файл будет иметь permissions как rw-r-xr-x. Для Unix пользователей это очень плохо — файл перестает быть исполняемым для самого владельца, зато остается исполняемый для всех, кроме него. Долго искал причину, почему после редактирования в Komodo Edit теряется исполняемый бит, грешил на редактор, а выловил такую особенность default Samba configuration 🙂

Для решения этой проблемы надо просто напросто добавить строку map archive = no в smb.conf файл. После перезапустить samba: service smb stop & service smb start

Оптимизация MySQL — select/insert

Январь 10th, 2011

Было как то раз у меня постоянно проблема — очень долго исполнялись SELECT с JOIN запросы. Грешил я на долгое исполнение JOIN операций, хотя с индексами у меня был полный порядок. Что я только не делал — и настройки крутил MySQL, и код местами переписывал, чтобы оптимальнее работал. Но проблема оставалась. Причем это что-то грузило сервак конкретно, несмотря на оченбь мощное железо. Но вот нашел в инете одну статейку и она меня натолкнула на мысль — изменить priority операции INSERT/DELETE. Правки для двух строк кода убрали проблему совсем! И очень мощный сервак стал работать очень быстро… Я даже не ожидал такого! А теперь немного поподробнее…

» Читать дальше: Оптимизация MySQL — select/insert

OpenSSH и доступ по ключам

Август 9th, 2010

Часто в Unix администрировании приходится использовать работу с ssh коннектами. Особенно, если это касается скриптов для полуавтоматизации, то это может сильно раздражать — ведь для того, чтобы скопировать что-то через scp или rsync, ваши скриптам придется прерываться и запрашивать у вас пароль. Какая тут автоматизация? 🙂 Что делать? Прочитать эту статейку… 🙂

» Читать дальше: OpenSSH и доступ по ключам

rsync — быстрый резерв + быстрый перенос сайтов

Июнь 16th, 2010

Когда-то давно, для резервирования, я использовал такие, казалось бы, незаменимые утилиты, как tar или pax. Я слышал в то время про rsync, но не представлял себе, как она в точности работает, поэтому я ощибочно полагал, что rsync — простая утилита копирования. А раз простая, то вряд ли я получу от нее много толку. Поэтому я продолжал и продолжал пользоваться tar или pax, затем копировал по scp эти архивы, там распаковывал и т.п.. Я даже использовал find затем, чтобы докопировать файлы, которые изменились за последние сутки. Эх, жаль, что я столько много истратил времени на копирование, ведь была rsync!

» Читать дальше: rsync — быстрый резерв + быстрый перенос сайтов

readline команды (MySQL, bash, rlwrap)

Декабрь 2nd, 2009

Данная статейка уже носит чисто профессиональный характер — она для тех, кто работает в Unix и работает в bash, tcsh шеллах, а также работает с MySQL. Сейчас я расскажу о нескольких очень полезных «горячих» клавишах для работы в командной строке.

» Читать дальше: readline команды (MySQL, bash, rlwrap)

Самая мощная DDoS атака и офигенный Firewall…

Ноябрь 26th, 2009
  1. Одна человеческая клетка содержит 75Мб генетической информации
  2. Один сперматозоид содержит 37.5Мб.
  3. В одном миллилитре содержится около 100 млн сперматозоидов.
  4. В среднем, эякуляция длится 5 секунд и составляет 2.25 мл спермы.
  5. Таким образом, пропускная способность мужского члена будет равна:
  6. (37.5Мб x 100M x 2.25)/5 = (37 500 000 байт/сперматозоид x 100 000 000 сперматозоид/мл x 2.25 мл) / 5 секунд = 1 687 500 000 000 000 байт/секунду = 1 687.5 Терабайт/с
    Получается что женская яйцеклетка выдерживает эту DDoS-атаку на полтора терабайта в секунду, пропуская только один выбранный пакет данных и является самым офигенным в мире хардварным фаерволом…

Но тот один пакет, который она пропускает, валит систему на 9 месяцев…

sed — некоторые тонкости regexp

Октябрь 29th, 2009

До недавнего времени сколько бы я не делал попыток написать для sed хоть мало мальское регулярное выражение, оно у меня не работало. Я не мог понять в чем дело, ведь там синтаксис должен быть практически такой же, как в perl. Но для меня Sed оставался странной лошадкой, которую хотелось бы обуздать, но не получалось.

И вот, наконец, сегодня я прочел грамотную доку, а также в другом месте нашел объяснение моим проблемам. Оказывается, в sed есть очень мелкие, но важные отличия, поняв которые, вы сможете писать sed команды легко.

Итак, оказывается, по историческим причинам, чтобы не нарушать работу старых sed команд, в sed группировка (‘(‘, ‘)’) и некоторые другие спец. символы (‘+’ , ‘?’) были заменены на символы со слешем. Вот эти отличия:

В языке Perl В sed редакторе Пояснение
(…) \(…\) Группировка
{X,Y} \{X,Y\} Заданный множитель
+ \+ Повторитель — один и более раз
? \? Повторитель — один или ноль раз
\bfoo\b \<foo\> поиск ‘foo’ с границами слова
$1, $2 \1, \2 Подмена на группу

Самое главное, на чем я спотыкался всегда — я никак не мог додуматься, что ‘\’ должен ставиться перед ‘(‘, или перед ‘?’ и ‘+’ символами, например. Я видел иногда эти слеши в примерах, но я думал, что эти слеши относились к shell, но оказалось, что это тонкость sed-а.

P.S. Возникает вопрос, а как же тогда заменять сами символы: «?+{}()» в sed? А оказывается, их просто не надо ескейпить символом ‘\’. Получается как бы наоборот — эти символы сами по себе не ескейпяться, а когда нужно их специальное назначение, то перед ними ставим ‘\’. Типа все с ног на голову, если сравнивать с perl.

Чуть позже я выяснил, что у sed есть ключик запуска ‘-r’, который, собственно, переключает sed в тот режим, который работает со спецсимволами уже без слеша (то есть так, как привыкли perl программисты). Поэтому, есть второй вариант: просто добавить ключ -r в sed запуска, и усё будет работать по привычному 😉