Роман Теличко

Блог о программировании, оптимизации и администрировании

Команды управления пакетным фильтром pf

// 4 июня, 2013 | 14742 просмотров

Наткнулся на список команд для управлением пакетным фильтром (фаерволом) pf.

pfctl -dвыключить пакетный фильтр
pfctl -eвключить пакетный фильтр
 
pfctl -f /etc/pf.confзагрузить конфиг из /etc/pf.conf
pfctl -n -f /etc/pf.confпроверить на ошибки /etc/pf.conf, но не загружать его
pfctl -R -f /etc/pf.confзагрузить только правила фитрации из /etc/pf.conf
pfctl -N -f /etc/pf.confзагрузить только правила NAT из /etc/pf.conf
pfctl -O -f /etc/pf.confзагрузить только опции из /etc/pf.conf
 
pfctl -F allсбросить всё
pfctl -F rulesсбросить только правила фильтрации
pfctl -F queueсбросить только очереди
pfctl -F natсбросить правила NAT
pfctl -F infoсбросить всю статистику
pfctl -z clearочистить все счётчики
 
pfctl -s rulesпоказать текущие правила фильтрации
pfctl -v -s rules showпоказать информацию по каждому правилу фильтрации
pfctl -vvsrпоказать текущие правила фильтрации с добавлением номера правила
pfctl -v -s natпоказать текущие правила NAT отдельно по каждому правилу
pfctl -s nat -i xl1показать правила NAT для интерфейса xl1
pfctl -s queueпоказать очереди
pfctl -s stateпоказать текущее состояние таблиц
pfctl -s infoпоказать статистику правил и состояние счётчиков
pfctl -s allпоказать все что можно
 
pfctl -t testtable -T showпросмотр содержимого таблицы testtable
pfctl -t testtable -T show -vпросмотр более подробной статистики по каждому адресу таблицы testtable
pfctl -t testtable -T add 192.168.1.1добавление адреса 192.168.1.1 в таблицу testtable
pfctl -t testtable -T delete 192.168.1.1удаление адреса 192.168.1.1 из таблицы testtable
pfctl -t testtable -T flushочистить таблицу testtable

Как переименовать имена файлов из одной кодировки в другую в Linux

// 1 июня, 2013 | 1610 просмотров

Для этих целей существует отличная программа convmv.
Ставится она из репозитория довольно просто:

sudo apt-get install convmv

После чего вам просто необходимо указать папку, в которой необходимо совершить переименование файлов из одной кодировке в другую.
Например, мне нужно переименовать файлы из KOI8-R в UTF-8 рекурсивно вниз.
Делается это так:

convmv -r --notest -f koi8-r -t utf-8 Folder/

Опция --notest отвечает за переименование.
Т.е. без этой опции вы просто сделаете тест и посмотрите как файлы будут «выглядеть» в нужной кодировке.

Удачи.

Делаем запросы в PostgreSQL из nginx кэшируя с помощью Redis

// 23 мая, 2013 | 10062 просмотров

Сегодня я расскажу как можно работать с базой данных PostgreSQL с помощью nginx’a без application’a (например, PHP или любого другого). Т.е. эта технология абсолютно не зависит от языка, на котором сделан сайт/проект/система.
Мы будем использовать мощь PostgreSQL в хранимых процедурах (stored procedures/functions), а кэшировать с помощью быстрого Redis.
Читать далее…

Как узнать версию Ubuntu и кодовое имя из командной строки

// 10 мая, 2013 | 1744 просмотров

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

lsb_release -a

Что для версии Ubuntu 13.04 выведет следующее:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 13.04
Release:	13.04
Codename:	raring

Как узнать статистику использования сетевого траффика в Linux

// 12 апреля, 2013 | 2062 просмотров

Существует отличная консольная утилита для отображения информации о количестве переданной и принятой информацией по каждому сетевому интерфейсу с разбивкой по датам и визуальным отображением в как в консольном, так и графическом режимах. Имя этой утилиты — vnstat.
Читать далее…

PostgreSQL. Список таблиц с очень частой записью на диск

// 5 апреля, 2013 | 980 просмотров

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

SELECT
    schemaname                                      AS schema,  -- схема
    relname                                         AS table,   -- таблица
    pg_size_pretty( pg_relation_size(relid) )       AS tsize,   -- размер
    n_tup_upd + n_tup_ins + n_tup_del               AS write,   -- операций записи (I/U/D)
    seq_scan + idx_scan                             AS read,    -- всего чтений
    n_tup_ins                                       AS ins,     -- операции INSERT
    n_tup_upd                                       AS upd,     -- операции UPDATE
    n_tup_del                                       AS del      -- операции DELETE
FROM
    pg_stat_user_tables
ORDER BY
    ( n_tup_upd + n_tup_ins + n_tup_del ) DESC

Кстати, так вы можете получить список всех индексов, а так — список неиспользуемых индексов.

Как проверить диск на ошибки и бэд-сектора в Linux

// 3 апреля, 2013 | 91259 просмотров

Примером хорошего тона и здравого смысла является периодическая проверка диска на битые сектора (бэд-сектора, badblocks) и обычная проверка диска на ошибки записи и т.п.
Разберёмся что такое битые сектора.
Любимая Википедия говорит следующее:

Бэд-сектор, Повреждённый сектор — сбойный (не читающийся) или ненадежный сектор диска; кластер, содержащий сбойные сектора, или кластер помеченный таковым в структурах файловой системы операционной системой.

Следовательно, если в битом секторе были данные, то их ещё возможно восстановить, пока битых секторов не стало слишком много для конкретного файла.
Читать далее…

ТОП 16 PHP функций, что я использую каждый день

// 30 марта, 2013 | 4045 просмотров

Решил написать ТОП 16 PHP функций, что я использую каждый день.
Будет полезно как начинающим разработчикам, так и профессионалам (хотя у них этот список может отличаться).
Это MUST HAVE функции, что обязательно нужно знать и уметь ими оперировать.
Читать далее…

Соответствия команд SVN и Git

// 14 марта, 2013 | 589 просмотров

Я создал небольшую шпаргалку соответствий команд систем управления версиями SVN/Subversion и Git. Пользуйтесь! 😉

svnadmin create repo
 
git init
git add .

svn import file://repo
git commit

svn diff | less
git diff

svn diff -rrev path
git diff rev path

patch -p0
git apply

svn status
git status

svn revert path
git checkout path

svn add file
git add file

svn rm file
git rm file

svn mv file
git mv file

svn commit
 
git commit -a
git push remote

svn log | less
git log

svn blame file
git blame file

svn cat url
git show rev:path/to/file

svn list url
git show rev:path/to/directory

svn log -rrev url
svn diff -crev url
git show rev

svn copy https://example.com/svn/trunk
https://example.com/svn/tags/name
git tag -a name

svn list https://example.com/svn/tags/
git tag -l

svn log —limit 1 https://example.com/svn/tags/tag
git show tag

svn copy https://example.com/svn/trunk https://example.com/svn/branches/branch
git branch branch

svn switch https://example.com/svn/branches/branch
git checkout branch

svn list https://example.com/svn/branches/
git branch

svn update -r rev
git checkout rev

svn update
git checkout prevbranch

svn merge -r rev:HEAD https://example.com/svn/branches/branch
git merge branch

svn merge -c rev url
git cherry-pick rev

svn checkout url
git clone url

svn switch url
 
git checkout —track
 -b branch origin/branch

svn update
git pull

Партицирование (partitioning) больших таблиц PostgreSQL

// 17 февраля, 2013 | 22244 просмотров

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

Итак, начнём с определения:
Партиционирование (partitioning) — это разбиение больших таблиц на логические части по выбранным критериям. Партиционированные или секционированные таблицы призваны улучшить производительность и управляемость базами данных.

Вроде понятно. Теперь идём дальше. Как же разбить таблицу на партиции или секции?
В PostgreSQL эта процедура потребует небольших усилий, но результатом вы будете довольны 🙂
Читать далее…