FreeBSD timezone для России после перехода на летнее время.
Этой весной в России отменили переход на летнее время. Хорошо это или плохо для всей страны – покажет время. Для нас же, юниксойдов, это скорее проблема. Нужно обновлять файлы timezone. Многие linux дистрибутивы уже это сделали, а вот старушка FreeBSD, как всегда, сама у себя на уме. В RELENG_8 все хорошо, а в старых системах 7.X, 8.X чтобы обновиться, нужно допилить напильником. Ниже я дам несколько линков о теоретической части вопрос, а тут практика:
1) Нужно достать новый файл с описанием европейских timezones.
Сделать это можно или из cvs/svn FreeBSD RELENG_8 или с ftp проекта, который собственно на добровольных началах мейнтейнит базу всех timezone планеты (ftp://elsie.nci.nih.gov/pub/).
2) После получения файла europe версии 8.33 или выше, его нужно положить в /usr/src/share/zoneinfo
3) cd /usr/src/share/zoneinfo && make clean ; make install clean
4) Получили новые файлы в /usr/share/zoneinfo/
5) Проверяем, что все ок. Делается это утилитой zdump, сейчас лето и старая зона должна показывать MSD для Москвы, и MSK для нового файла зоны. Причем время должно быть одинаковым.
# zdump /usr/share/zoneinfo/Europe/Moscow
/usr/share/zoneinfo/Europe/Moscow Fri Aug 12 17:11:22 2011 MSK
6) Если нужно, то копируем /usr/share/zoneinfo/Europe/Moscow в /etc/localtime
Линки:
Статья про время в linux на opennet
Tz database
P.S
Я написал соответствующий PR в FreeBSD, с запросом как же быть с системами, которые будут поддерживать еще несколько лет (7.3 например), но имеют старые файлы зон для России. Мне вежливо ответили, что понимают мое беспокойство, но ничего сделать не могут. В базовую систему изменения вносятся только в случае проблем с безопасностью. Т.е. ждем, когда кто-нибудь придумает, как использовать старый файл зоны для проникновения в систему? Забавно.
P.S 2
Как мне подсказал Максим Коновалов из Russian FreeBSD Team, можно использовать порт:
misc/zoneinfo
P.S 3
Самый простой и самый некрасивый вариант:
cp /usr/share/zoneinfo/Etc/GMT+4 /etc/localtime
sysctl.conf.local или как настроить sysctl не ломая стандартизацию
Часто парк серверов не такой уж стандартный, как того хотелось бы. И в тоже время хочется держать стандартные настройки на всех серверах, чтобы обновлять и изменять их особо не парясь… Это я к чему? Возникла задача поменять sysctl.conf на одном из серверов, но sysctl.conf должен быть стандартным на всех серверах! Вот незадача! Что же делать?
Ради интереса посмотрел содержание /etc/rc.d/sysctl и нашел в нем
sysctl_start()
{
parse_file /etc/sysctl.conf $1
parse_file /etc/sysctl.conf.local $1
}
Разработчики FreeBSD уже подумали о этой проблеме =) Все кастумные настройки добавляем в /etc/sysctl.conf.local
Эмулирование Unix команд при помощи sed
Набрел на интересную страничку. sed во всей своей красе.
UNIX | SED
--------------+----------------------------------------------------------------
cat | sed ':'
cat -s | sed '1s/^$//p;/./,/^$/!d'
tac | sed '1!G;h;$!d'
grep | sed '/patt/!d'
grep -v | sed '/patt/d'
head | sed '10q'
head -1 | sed 'q'
tail | sed -e ':a' -e '$q;N;11,$D;ba'
tail -1 | sed '$!d'
tail -f | sed -u '/./!d'
cut -c 10 | sed 's/\(.\)\{10\}.*/\1/'
cut -d: -f4 | sed 's/\(\([^:]*\):\)\{4\}.*/\2/'
tr A-Z a-z | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
tr a-z A-Z | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
tr -s ' ' | sed 's/ \+/ /g'
tr -d '\012' | sed 'H;$!d;g;s/\n//g'
wc -l | sed -n '$='
uniq | sed 'N;/^\(.*\)\n\1$/!P;D'
rev | sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
basename | sed 's,.*/,,'
dirname | sed 's,[^/]*$,,'
xargs | sed -e ':a' -e '$!N;s/\n/ /;ta'
paste -sd: | sed -e ':a' -e '$!N;s/\n/:/;ta'
cat -n | sed '=' | sed '$!N;s/\n/ /'
grep -n | sed -n '/patt/{=;p;}' | sed '$!N;s/\n/:/'
cp orig new | sed 'w new' orig
hostname -s | hostname | sed 's/\..*//'
tcp listen queue в Linux
В FreeBSD netstat отличается от netstat linux, причем в лучшую сторону!
Например, netstat -Lan покажет listen queue, что иногда нужно для дебага непонятных проблем. Но в linux аналога нет! ( есть какие-то самодельные патчи на netstat с требованием к ядру 2.6.18+ =) ).
Что же делать? Awk спешит на помощь!
› Прочитать
Изучаем top в FreeBSD
Вообще, все что я тут буду рассказывать есть или в help top (нажми h во время работы top), или есть в man top.
Если тебе лень их читать (что я, конечно же, не одобряю), то эта заметка для тебя, и мне шпаргалка.
Что такое top и зачем он нужен, я писать не буду, поговорим о приятных возможностях.
Еще хочу заметить, что top меняется вместе с системой, что-то добавляется, что-то меняется, что-то исчезает. Все опции здесь взяты для freebsd 7.3, как наиболее надежной в данный момент. И так поехали!
› Прочитать
Обработка сигналов в sh
Сигналы – один из способов взаимодействия между процессами. Отправив определенный сигнал, можно приостановить или возобновить работы приложения, завершить его или сделать с ним еще что-нибудь. Сигнал определяется номером, которому соответствие имя. Посмотрите man signal или наберите kill -l чтобы получить список сигналов.
В скриптах обработка сигналов может быть крайне полезна.
› Прочитать
sed tips and tricks
Sed – прекрасное средство редактирования текста с отвратительной документацией. В скриптах он часто бывает незаменим, но чтобы выполнить что-то непривычное приходится долго искать интернете нужный пример или долго экспериментировать с разными вариантами. Очень неудобно!
Так что сделаю сделаю себе памятку!
› Прочитать
Поиск измененных конфигурационных файлов FreeBSD
В продолжение темы mergemaster и обновления системы. Как найти конфигурационные файлы, которые были изменены с момента установки системы? Очень просто – сравнить их с файлами “из коробки”.
› Прочитать
Mergemaster tips and tricks!
При переходе с версии на версию FreeBSD самым неприятным этапом является обновление конфигурационных файлов. mergemaster отнимает массу времени и сил, требует аккуратности и внимательности. Это наверное один из самых неудобных инструментов FreeBSD!
Но на самом деле это не совсем так! Если внимательно изучить, как он работает и разобраться с его ключами, то можно значительно упростить себе жизнь. Не скажу, что обновление станет приятным, но уж оно точно перестанет быть такой головной болью.
› Прочитать
epoch converter
Набрел на сайт, на котором очень подробно разбираются все моменты работы с epoch во всех популярных языках программирования: получение времени в epoch, конвертирование времени из human readable в epoch и обратно.
П.С. мне всегда было лень читать линуковый man date, потому я всегда пользовался date -r из FreeBSD, а тут оказывается все так же просто… только во FreeBSD все равно лучше =)