Сообщение об ошибке

  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).

nix

видим графики и записи логов. В прошлом материале мы установили Graylog2, теперь же настало время добавить удаленную машину.

Итак, добавим изначально логирование из Syslog.
В интерфейсе Graylog2 идем в меню System->Inputs
graylog2 login page Давно хотел сделать централизованный сбор логов и их просмотр. И вот вместе сошлись желание, возможность и время. Ставиться он в принципе 1 в 1 к оф. доке, но там на английском, а здесь на русском. Официальная дока

111.111.111.111 - этот IP адрес в настройках вы меняете на свой IP адрес сервера

Зачем ставить Graylog

В чем в общем-то смысл установки Graylog... Когда у вас больше чем 2-3 сервера то поиски и мониторинг этих серверов начинает занимать достаточно много времени. Тут то на выручку и приходят системы мониторинга(аля Zabbix) и централизованного хранения логов(аля Graylog). Zabbix достаточно мощная система и в даже базовой установке мониторит столько метрик серверов что существенно позволяет не заморачиваться на то, все ли в порядке с сервером. Но он наблюдает за метриками. Логи же вторая половина картины. Еще одной плюшкой централизированного хранения логов это то что даже взломам один из серверов и удалив логи, они будут удалены с атакованного сервера, но останутся доступными вам в централизованной системе. Не говоря уже об удобстве просмотра с одного интерфейса, а не кучи разрозненных файлов.
Итак, погнали...

Ставим Java и...
В этом материале я покажу как настроить Samba на сервере Debian, а так же подключить клиенты в Windows 10 и Android. В конце материала мы так же настроим доп. защиту для Samba с помощью fail2ban от перебора паролей. добавление сетевого диска в Windows 10

Если на устройствах не всегда хватает памяти для хранения книг, видео, прочего или же нужен доступ с разных устройств, можно взять платный аккаунт на Google Drive или Dropbox. Множество других сервисов предоставляет свой кусочек места в интернете на 1Тб данных и больше начиная с 9.у.е. в месяц. Но если у Вас есть тестовый какой-нибудь сервер в интернете, как например у меня, то можно на нем разместить. Сервер можно взять например на Hetzner-е по достаточно дешевой цене. Это б/у сервера но их гораздо проще себе позволить и часто они стоят как средний VPS. Отзывы о них разные, но мне в принципе нравиться все. Но статья не о том.

Настраиваем Samba

Устанавливаем Samba apt-get install samba

Добавляем системного...
В общем встала задача дать доступ ограниченный через sftp, но только к двум определенным папкам.
Создаем пользователя и лочим его в домашней директории Об этом много где написано.
А вот теперь добавим в эту директорию пару папок к которым пользователь имеет доступ:
# mkdir newfolder
# mount --bind /folder/to/access/ newfolder

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

Маленькая заметка о полезной команде Watch

Когда-то мне понравилась команда multitail, которая позволяет отслеживать вывод команд и обновление логов в одном терминале разбивая его на несколько окон. Но есть вариант куда проще. Чтобы повторять команду постоянно каждых несколько секунд достаточно использовать команду watch, например статус gearman сервера:
watch -n 2 gearadmin --status

Или каждых 3 секунды просматривать последних 10 строк лога:
watch -n 3 tail -10 /var/log/php-cli.log
Решил выложить пару скриптов с помощью которых работаю делаю бекап и восстановление из него. Все просто до безобразия, но мало ли, может кому пригодиться.

Скрипт создания бекапа

Создает папку с названием - текущей датой и все базы данных складывает в файл.
Изначально создадим файл mysqlbackup.sh с содержимым:
dbpass="pass"
DATE_DIR=$(date +%Y-%m-%d-%H)
mkdir /home/nelex/MySQL_BKP/${DATE_DIR}
for dbname in `echo show databases| mysql -u root -p$dbpass`; do
echo "Dump $dbname..."
mysqldump -u root -p$dbpass $dbname > "~/MySQL_BKP/${DATE_DIR}/$dbname.sql"
Создадим и папку в которую будет складываться бекап и делаем скрипт исполняемым::
mkdir ~/MySQL_BKP
chmod +x mysqlbackup.sh

Массовое создание баз данных из sql файлов и их импорт.

Понадобилось мне залить сразу несколько баз данных, и чтобы не делать это все руками я написал этот небольшой скрипт.
Скрипт берет указанную в первом параметре папку и из нее проходит по каждому SQL файлу, создает базу с названием файла без ".sql" и загоняет файл в нее. Все просто:
#!/bin/bash
indir=$1
dblogin="root"
dbpass="pass"
postfix=".sql"
prefix="./"
cd $indir
for file in `find ./ -type f -name "*$postfix"`
do
    table_tmp=${file%$postfix}
    table_tmp=${table_tmp#$prefix}
    table=${table_tmp,,}
    mysql -u$dblogin -p$dbpass -e "create database $table default charset utf8"
    mysql -u$dblogin -p$dbpass $table < $file
Делаем файл исполняемым:
chmod +x mysqlbackup.sh
Не забываем что наш скрипт бекапа создает и таблицы используемые самой СуБД, так что если вам они не нужны, удалите/переместите их.
Таким образом запускаем файл:
import_from_dir.sh ~/MySQL_BKP/2015-06-02-14

Вот и все.
Жизнь на частично экспериментальной версии дистрибутива привносит свои приключения. И снова ошибка. На этот раз вида:
dpkg: unrecoverable fatal error, aborting:
files list file for package 'imagemagick-6.q16' is missing final newline

И таких ошибок было несколько, появлявшиеся одна за другой. Решение достаточно простое. Нужно найти файл с соответствующим названием и переместить в временную директорию. Не знаю стоит ли его возвращать на место, но переместить с места куда-нибудь уж точно стоит.
# mkdir /var/lib/dpkg/info/old
#mv /var/lib/dpkg/info/imagemagick-6.q16.* \  /var/lib/dpkg/info/old/
У меня таких файлов было несколько, перемещал их все, после этого dpkg заработал.
Следующая ошибка в у меня выглядела при запуске команд apt так:
bash: /usr/bin/apt-get: cannot execute binary file: Exec format error

Чтобы ее поправить нам и нужен был рабочий dpkg, печально было бы если бы тот в свою очередь тоже умер.
На этой странице выбираем нужный нам дистрибутив и ищем более свежую версию apt, в нашем случае в категории "Administration Utilities". Качаем и ставим командой:
dpkg -i apt.deb

Вероятно что выдаст сообщение о проблеме с зависимостями, точнее их версиями. В моем случае:
Unpacking libapt-pkg-dev:amd64 (1.0.9.10) over (1.0.9.7) ...
dpkg: dependency problems prevent configuration of libapt-pkg-dev:amd64:
libapt-pkg-dev:amd64 depends on libapt-pkg4.12 (= 1.0.9.10); however:
  Version of libapt-pkg4.12:amd64 on system is 1.0.9.7.
libapt-pkg-dev:amd64 depends on libapt-inst1.5 (= 1.0.9.10); however:
  Version of libapt-inst1.5:amd64 on system is 1.0.9.7.

dpkg: error processing package libapt-pkg-dev:amd64 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libapt-pkg-dev:amd64
Это значит что указанные пакеты так же нужно скачать нужной версии и поставить до установки этого пакета.
На этом все.
В очередной раз копируя шаблон админ-панели в новый проект, получил неправильные права доступа. Чтобы все махом поправить, нужно всем директориям дать доступ на чтение и открытие, а всем файлам права на чтение для всех.
Выполнить это можно всего-лишь двумя командами:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)


Найдено на superuser.com
Надоело без виджета раскладки клавиатуры, да и хотелось сделать свой виджет для Awesome WM. Версия Awesome WM 3.5.

Немного о самом виджете

Виджет использует только доступные в системе команды. Специально не делал завязку на другие программы типа kbdd и skb, так как их может не быть в системе по умолчанию. Весь код ниже идет с комментариями почти каждой строки, объясняющей что к чему и почему.

Создаем виджет

Качаем иконки
Распаковываем сами картинки(размером 48 пикселей), нужные для наших раскладок в ~/.config/awesome/keyboard/flags, предварительно создав нужные папки keyboard/flags.

В общем, если в двух словах, нам нужно создать виджет до добавления всех виджетов на панель, а потом разместить в нужном месте вместе с другими виджетами.
Код размещения виджетов выглядит приблизительно так:
При импорте дампа базы через консоль получил следующую ошибку:
# mysql -pmypass mydm < mydb.sql
ERROR 1064 (42000) at line 3597: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*/' at line 1


Вся беда начиная со строки 3597 оказалась из-за комментариев разделенной символом новой строки на несколько строк.
К слову сказать, комментарии вида:
/*!50003 */
Представляют из себя инструкцию MySQL и MariaDB произвести некоторые действия. Но такой вот перенос разрывает по всей видимости такую инструкцию.
Так как файл достаточно большой, открыть его удобнее всего vim-ом. Можно конечно составить регулярку для sed, но у меня всего пару комментариев, по этому проще и удобнее удалить вручную
#vim mydb.sql

Переходим на нужную строку:
:3597

Совмещаем текущую строку со следующей зажав Shift+j Когда отредактировали переносы, сохраняем и выходим.
:wq

Ну и дальше у нас импорт проходит все достаточно просто
mysql -pmypass mydm < mydb.sql

P.S. Может есть варианты получше, поудобнее, если знаете напишите.
Возникла проблема при апгрейде, выглядит так:
dpkg: error processing procps (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
procps
E: Sub-process /usr/bin/dpkg returned an error code (1)


Моя версия Debian GNU\Linux:
# lsb_release -rd
Description: Debian GNU/Linux 8.0 (jessie)
Release: 8.0


Вся беда оказалась всего-лишь в измененном вручную /etc/sysctl.conf. Я добавлял туда две строчки для выгрузки драйвера который мешает другим драйверам.
Делаем бекап
cp /etc/sysctl.conf /etc/sysctl.conf_bkp


И удаляю те строки что сам добавлял. После чего апгрейд проходит успешно.

Pre: Тем кто столкнется с подобным...


Внутри:
  • Загрузка в частично слетевший Grub2 и его восстановление
  • wicd не подключается к Wi-Fi роутеру
  • W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168h-1.fw for module r8169
  • Нет Awesome в GDM
  • Awesome WM не применяются настройки из ~/.config/awesome/

В здоровом теле, здоровый дух. Как-то так и с компьютерами и софтом.

Итак, решил я прошерстить свою систему на предмет возникающих ошибок и разобраться хотя бы с частью из них. Для того чтобы увидеть какие ошибки сыпятся можно смотреть логи, а можно в дополнение ко всему запускать софт из терминала, как то делаю я:
#chromium&


При этом весь поток всякой чепухи будет литься в консоль. Можно сделать перенаправление вывода в файл в виде:
#chromium >/tmp/chomium.log&


Смотрим.

Ошибка 1.

Fontconfig error: Cannot load default config file


С каждым годом мои заметки про Wi-Fi под линуксом становятся все короче. И вот вам очередная.
Решил я собрать ядро Zen-Kernel 3.18 себе, прошлое 3.15 было. И не велико дело собрать сейчас ядро, вопрос с дровами на wi-fi. Попробовал собрать из исходников под 3.15 что были, патчи накладывал, качал более свежую версию дров, но все никак Wi-Fi не заводился. Работать нужно, забил на пару недель. И вот снова...
В итоге все очень просто оказалось.

Дрова Broadcom разбиты по разным пакетам в Debian репозитории.
К примеру BCM43 поддерживает чипсеты: BCM4301, BCM4306, BCM4311, BCM4312, BCM4318, BCM4321 and BCM4322
Мой же чипсет в пакете brcm80211: BCM4313,BCM43224,BCM43225 Установка описана прямо на странице. Единственное что оставалось сделать, переинициализировать модуль с дровами в системе, именно из-за этого и не завелся wi-fi сразу, не смотря на то что пакет сам у меня стоял и дрова подхватились, но устройство в iwconfig -a так и не появлялось. Итак, заветные строчки:
modprobe -r brcmsmac
modprobe brcmsmac


Теперь iwconfig -a показывает:
-a        No such device


А нифига он нормально не показывает. Показывает что нет устройства. Но это уже после подключения к точке доступа, до этого показало мое устройство :-D . Сеть появилась, а это главное, по принципу занятого Zen-линуксоида, остальное пока меня мало волнует. Работает - не трогай. Пока не поломалось.

К слову сказать, зато ifconfig -a выдает наш wlan0:
wlan0     Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx 
          inet addr:192.168.1.105  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:134 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:50
          RX bytes:26716 (26.0 KiB)  TX bytes:39745 (38.8 KiB)


Ну в общем-то на этом все. Можно вписать куда-нибудь в автозагрузку заветные строки по переинициализации модуля и забить пока работает. До след. компиляции ядра.

Добрый день, уважаемый читатель!

Вот, как всегда мне достаются весьма увлекательные задачи. В этот раз нужна была база улиц Челябинска и Казани. Те кто с подобным сталкиваются наверняка слышали о КЛАДР-е. Это такой себе список городов, улиц и т.д. Но он к 2011 году успел устареть морально и в плане разработки его забросили. К слову, тот же самый разработчик решил начать с чистого листа и в 2011г, и по текущее время разрабатывает базу ФИАС. База большая, архив 2ГБ, в распаковке около 10Гб. И вот я решил загнать всю эту базу в MySQL. Заодно скилы подтянуть. В дополнение ко всему единственный нормальный конвертер dbf2mysql для линукса поддерживает кодировку только latin1.

Выкладывают эту базу на сайте Федеральной Налоговой Службы(ФНС)
Выкладывают ее там в формате DBF и XML. Мы будем работать с DBF.

Итого, имеем платформу Debian GNU\Linux на 8-ядерном сервере, 12Гб ОЗУ и базу данных разбитую файликами на 10Гб в формате DBF.

Сам скрипт конвертации вышел таким вот:
В целом по интернету как не почитаешь, так получить доступ к руту под андроидом целая сказка. Но вся эта сказка сводиться всего к нескольким командам, которые выполняются на свой страх и риск.
  1. Держим на заметке подсказки что и какая команда делает.
  2. Ставим ADB - утилиту для низкоуровнего управления телефоном.
    Я ставил прямо из дистрибутива командой:
    apt-get install android-tools-adb android-tools-fastboot android-tools-fsutils
  3. Подключаем телефон
  4. Коннектимся к его консоли командой: adb shell
  5. Находим наш системный раздел командой: # mount | grep system
  6. Переподключаем его с правами на чтение-запись(было ведь только чтение):
    mount -o rw,remount -t ext4 /system
  7. Так как файл su у меня уже есть в системе, я просто создаю на него симлинк:
    ln -s /system/xbin/su /system/bin/su
  8. И назначаю права
    chmod 6755 /system/xbin/su
  9. Возвращаю доступ только на чтение файловой системе:
    mount -o ro,remount -t ext4 /system

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

Уменьшаем интенсивность логирования

В дистрибутиве, при установке по умолчанию, логирование включено очень детально. Но если это не сервер то логировать столь детально и интенсивно возможно не нужно. По этому можно отключить отпределенное логирование закомментировав ненужные строки в конфигурационном файле /etc/rsyslog.conf:
auth,authpriv.*                        /var/log/auth.log
*.*;auth,authpriv.none         -/var/log/syslog
cron.*                         /var/log/cron.log
daemon.*                       -/var/log/daemon.log
kern.*                         -/var/log/kern.log
lpr.*                          -/var/log/lpr.log
mail.*                         -/var/log/mail.log
user.*                         -/var/log/user.log

Тут так же могут быть правила для -/var/log/debug и -/var/log/messages, так же |/dev/xconsole.
Сообщения ядра ведутся в два лога kern.log и syslog. Комментируем устанавливая символ '#' в начале соответствующей строки. При надобности точно так же включаются логи при наличии проблем в системе.

Оптимизируем кеш директорий

Приложения, такие как браузер и менеджер окон, которые используют дисковый кеш, могут соответствовать спецификации стандарта XDG Base Directory Specification. В этом случае, переменная окружения XDG_CACHE_HOME указывает директорию в которой сохраняются файлы кеша. Поместив кеш в память(ramdisk) можно сильно ускорить производительность таких приложений, в противном случае браузер и другие приложения, не поддерживающие стандарт, так и продолжат использовать тяжелый для записи дисковый кеш. Для примера, установленный в Debian Wheezy LXDE, может хранить настройки в файле /etc/alternatives/x-session-manager. При добавлении строки
export XDG_CACHE_HOME="/dev/shm/.cache"
в начале этого файла, программы запущенные из X, поддерживающие стандарт, будут использовать ramdisk в /dev/shm для хранения кеша.

В большинстве дистрибутивах основанных на Debian, tmpfs устройство находиться по пути /run/shm (должно присутствовать в /etc/fstab), и x-session-manager как бинарный файл, но вы так же можете добавить ту же строку в новый файл, в директории /etc/profile.d/, например /etc/profile.d/xdg_cache_home.sh, который будет выполняться при каждом входе в систему. Содержимое файла:
#!/bin/bash
export XDG_CACHE_HOME="/dev/shm/.cache


Используем tmpfs

Для монтирования /tmp и /var/tmp (эти директории часто используются для хранения временных файлов многих программ) в памяти(ramdisk), вам нужно добавить следующие строки в /etc/fstab:
tmpfs    /tmp        tmpfs    defaults    0 0
tmpfs    /var/tmp    tmpfs    defaults    0 0
Так же нужно добавить строку, если ее нету для /dev/shm как tmpfs:

tmpfs    /dev/shm    tmpfs    defaults    0 0


Взято отсюда.
skype
Когда у кого не было проблем с PulseAudio? Все они решабельные в основном, но их хватает. И вот после обновления скайпа сейчас без пульсаудио никак не обойтись, но возникает множество проблем. Например звук в Skype не работает когда работает MOCp. Или другие приложения которые используют звук. Решение не новое, но мало ли, может кто еще не видел.

Здесь подсказано отличное решение. Это запуск приложения с параметром к PulseAudio.
Редактируем ярлык добавив параметр PULSE_LATENCY_MSEC=30 перед самым запускаемым файлом.
[Desktop Entry]
Name=Skype
Comment=Skype Internet Telephony
Exec=PULSE_LATENCY_MSEC=30 skype %U
Icon=skype.png
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Network;Application;
MimeType=x-scheme-handler/skype;
X-KDE-Protocols=skype


Ну или если с консоли запускаем то просто пишем команду:
PULSE_LATENCY_MSEC=30 skype&
Ну или тот же MOCP:
PULSE_LATENCY_MSEC=30 mocp
Все вроде. Это позволяет подружить приложения между собой.
Обновился до Chromium "Версия 35.0.1916.114 Debian jessie/sid (270117)".
Как итог, отсутствие Adobe Flash Player. Не долго гуглив оказалось что уже создан пакет PepperFlashPlayer который поддерживается Google-м. Достал Adobe, наверное это у него такой маркетинговый ход, заявлять о себе путем багов и отсутсвия плеера в браузерах.
В общем, пакет присутствует в Non-free, так что в /etc/apt/source.list не забудьте дописать "non-free" в строке репозитория.
После этого
# apt-get update
# apt-get install pepperflashplugin-nonfree

Перезапускаем браузер и в адресной строке браузера вводим chrome://plugins. Там должен был появиться Adobe Flash Player.

Вот и все.
Собственно если вы взяли VPS состояние винта вас мало интересует. Вся ответственность полностью на хостере. Но в тоже время, если вы берете Dedicated(Выделенный) сервер, ситуация уже обратная. Но не буду плодить статьи, все и так четко и понятно в Этой статье.

В Debian-based системах бывают по несколько версий приложений одного и того же типа. К примеру может быть установлено несколько текстовых редакторов. Если вы хотите выбрать приложение по умолчанию то команда update-alternatives вам пригодиться. Запустите команду и получите список альтернатив для выбора. Я покажу пару команд для выбора приложения по умолчанию.

В очередной раз столкнулся с тем что корневой раздел сильно засорился. Чем, было не понятно. Оказалось что при каждом apt-get update и aptitude update полученные списки файлов сохраняются в директории /var/lib/apt/lists/partial, это легко оказалось выяснить введя команду:
du -xh /var | sort -n |grep G
Из 61Гб под рутовый раздел, 31Гб занимали файлы в этой директории. Сразу оговорюсь, система стоит давненько, обновляю достаточно часто. Сижу на миксе из experimental/testing.

Чуть погуглив нашелся и ответ. Заключается в простом удалении всех файлов из данной директории. Содержимое директории будет пересоздано при новом обновлении списка пакетов, но уже со свежими записями. Вот вам и занятость диска.

Простые темы

tree clean theme
Репозиторий тем для Aweome WM.
Качаем, скидываем в /home/username/.config/awesome/themes содержимое. Редактируем файл /home/username/.config/awesome/rc.lua
Заменяя в строке:
beautiful.init("/home/username/.config/awesome/themes/snow/theme.lua") на выбранную тему и делаем Ctrl+Mod4(у меня клавиша Windows)+r и смотрим. Сами скриншоты тем можно увидеть в папке 0-screenshots.

Темы поинтересней

Awesome темы покруче. Установка их несколько сложнее, но и вид у них гораздо интересней, достаточно глянуть пару скриншотов тем:
Тема Copland
Copland

Тема Powerarrow Darker
Powerarrow Darker

Установка внутри.

Очень маленькая заметка, но иногда нужно. =)

printf "string" | md5sum

Еще вариант

echo -n "string"|md5sum

А вот если без ключа -n, то получим уже совсем другой хеш.

Почему md5 отличается в bash и php?

Если передать в md5sum через echo без ключа -n, то в строку добавляется символ переноса строки. Соответственно и результат уже другой.

Стала задачка выяснить почему сессии хранятся на сервере не более чем пол часа. После этого естественно происходит сброс сессий и пользователь оказывается разлогиненым. Полез в куки посмотреть, там время жизни куки составляло более года. Файл php.ini тоже выглядел вполне нормально, время жизни тоже около года. Немного поискав в кроне обнаружил такой вот скрипт от хостера. Позабавило. Видать для того чтобы не накапливалось большое количество файлов сессий. Вот только зачем удалять так часто?
Сам файл находился по пути /etc/cron.hourly/fornexrmphpsess
С таким вот интересным содержимым.

#!/bin/bash

#внимание!! скрипт рассчитан на выполнение оболочкой BASH!!!!

#засыпаем на случайное время - от 0 до 20 минут
T=$(($RANDOM/27))
sleep $T

#и удаляем все старые сессии PHP
find /tmp/ -maxdepth 3 -nowarn -type f -name "sess_*" -amin +30 -delete

find /var/www/*/data/*tmp/ -nowarn -type f -name "sess_*" -amin +30 -delete

find /var/tmp/ -maxdepth 3 -nowarn -type f -name "sess_*" -amin +30 -delete

find /var/lib/php*/ -maxdepth 3 -nowarn -type f -name "sess_*" -amin +30 -delete

Вот добрался до новой версии ядра, 3.12. Долгое время просто руки не доходили. Я уже несколько раз ранее собирал эти драйвера, но на более старые версии, к пример 3.10

Так вот собираем почти так же как и обычно. Качаем драйвера под свою архитектуру с сайта:

Когда DPKG, APT, APTITUDE начинают медленно работать стоит попробовать выполнить следующие команды:

1) dpkg --clear-avail
2) dpkg --forget-old-unavail
3) Если используете grep-available или другую утилиту для проверки доступных файлов, обновите файл используя sync-available (в пакете dctrl-tools).

Оригинал на английском

При запуске PhpStorm из-под Awesome WM у меня вместо среды разработки начало показываться просто белое окно. Решение уже существует и находиться Здесь.

Заключается оно в том чтобы использовать OpenJDK с уже существующими фиксами этой проблемы. Для использования из консоли нужно ввести следующую команду:

$ _JAVA_AWT_WM_NONREPARENTING=1; export _JAVA_AWT_WM_NONREPARENTING

Так же можно заставить поверить Java что вы используете другой рабочий стол командой:
$ wmname LG3D
Из пакета suckless-tools

VoiceMail
Если вас не устраивает стандартная функция автоответчика и хочется написать свою собственную, то ее вполне можно написать используя встроенный механизм работы с базой данных. База данных у Asterisk на основе berkeley db.

asterisk worktime
Эта маленькая заметка предполагает что вы уже работали с Asterisk и знаете что такое Dialplan-ы и большую часть того что с ними связано. Так же AGI(Asterisk Gateway Interface). AGI это интерфейс расширения Asterisk с помощью других языков программирования, в частности PHP, Для использования AGI необходимо создать файл в директории /usr/share/asterisk/agi-bin/ в нашем случае это файл worktime.php. AGI использует стандартные потоки ввода/вывода и потока вывода ошибок. Ниже вполне обычный код PHP за некоторым исключением, касающимся как-раз таки ввода-вывода. Все касательно PHP AGI замечательно рассказано в книге Asterisk: будущее телефонии
Ну а теперь сам код:

В общем и целом пишу только как маленькую заметку кто пытался поставить xhprof через PECL но из-за ошибки:

Пало подозрение на нестабильность интернет-канала к VPS. Можно оплатить систему мониторинга для удобства работы, но так как дело разовое решено было использовать подручные средства. Решение из жанра велосипеды велосипедистые. Итак, что мы будем использовать:
- screen
- ping
Итак, что нам нужно будет, так это вывод команды ping записанный в файл. Хотя конечно можно и в консоли посмотреть, но уж пусть лучше в файл на всякий случай.

tux wifi
И как всегда с новым ядром, новые проблемы. Сперва сборку драйверов пропатчил патчами указанными в прошлой статьей. После выбило такую вот ошибку:

make                                                                       
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Вход в каталог `/usr/src/linux-headers-3.10-1-amd64'
Wireless Extension is the only possible API for this kernel version
Using Wireless Extension API
  CC [M]  /home/nelex/Linux/b43/src/wl/sys/wl_linux.o
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c: In function 'wl_reg_proc_entry':
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c:3196:2: error: implicit declaration of function 'create_proc_entry' [-Werror=implicit-function-declaration]
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c:3196:22: warning: assignment makes pointer from integer without a cast [enabled by default]
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c:3201:16: error: dereferencing pointer to incomplete type
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c:3202:16: error: dereferencing pointer to incomplete type
/home/nelex/Linux/b43/src/wl/sys/wl_linux.c:3203:16: error: dereferencing pointer to incomplete type
cc1: some warnings being treated as errors
make[4]: *** [/home/nelex/Linux/b43/src/wl/sys/wl_linux.o] ?????? 1
make[3]: *** [_module_/home/nelex/Linux/b43] ?????? 2
make[2]: *** [sub-make] Ошибка 2
make[1]: *** [all] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-3.10-1-amd64'
make: *** [all] Ошибка 2

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

Дальше патчим сперва 0006-add-support-for-linux-3.10.0.patch, потом 0007-switch-proc-create-3.10.0.patch
make
make install
sudo depmod
modprobe wl

Все, драйвера должны заработать. Спасибо автору патча,

zabbix
Всех приветствую, это очередная статья о моих скитаниях в мире интернета, серверов, протоколов и прочего. В этой статейке мы поставим очень легко и просто систему мониторинга Zabbix.

ZABBIX — свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанная Алексеем Владышевым
Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle. Веб-интерфейс написан на PHP. ZABBIX поддерживает несколько видов мониторинга:
Simple checks — может проверять доступность и реакцию стандартных сервисов, таких как SMTP или HTTP без установки какого-либо программного обеспечения на наблюдаемом хосте.
ZABBIX agent — может быть установлен на UNIX-подобных или Windows хостах для получения данных о нагрузке процессора, использования сети, дисковом пространстве и т. д.
External check — выполнение внешних программ. ZABBIX также поддерживает мониторинг через SNMP.

Итак. Имеем Zabbix 2.0.6 в дистрибутиве. Имеем сам дистрибутив Debian GNU\Linux.

Задачка

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

Скрипт

Пишем файл скрипта:

Digium Asterisk
Не знаю с каких пор, но в астериске драйвер g729 не присутствует в поставке. Как итог, нужно качать и заливать вручную.

MariaDB Logo

Приветствую, читатель!

Сейчас я расскажу как я легко и быстро перешел с MySQL на MariaDB. Если у вас стоял MySQL то MariaDB подхватит его базы, но на всякий случай лучше все-таки сделайте бекап.
В общих чертах все ну очень просто.

Привет, читатель!

Pre

Сейчас я опишу процесс как я устанавливал и настраивал связку Nginx+PHP-fpm для использования вместо Apache2 который стоял у меня до того. Естественно ставил я все это на локалхосте, на котором и занимаюсь веб-девом. Процесс не тривиальный и достаточно прост. Более полный мануал на который я ориентировался в описан статье Nginx+php-fpm+perl под Debian Squeeze. У меня же несколько короче и с некоторыми изменениями, в виду того что большую часть настроек майтейнеры пакетов и так уже взяли на себя.

low disk space

Привет, читатель моего блога или случайно зашедший!

Иногда бывает такая ситуация, когда папка хранящая сессии заполняется что казалось бы невообразимо большим количество нод на диске исчерпывается и команда du -ih показывает следующую картину:

~# df -ih
Файловая система Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/md1           5,9M          5,7M      141K            98% /home

Печально выглядит, правда? Для начала освободим место на диске. Так как команда rm -R /path/mod-tmp/* вам не поможет скорее всего, так как само количество в 5М сайтов нагрузит команду так что ее выполнения придется ждать весьма не скоро, если она вообще не выпадет с ошибкой. Так вот

WiFi

Привет уважаемый читатель!

Надоели в последнее время мне проблемы с wicd и wifi-radar для подключения к Wi-Fi в Linux, и я решил что пора бы подключаться через консоль, минуя все эти надстройки в виде программ для подключения. На самом деле все оказалось еще проще чем я предполагал. И сейчас я покажу как это делается. А тем кому пока не надоело подключатся через программы стоит добавить эту заметку в Избранное, в дальнейшем пригодиться.

Подключаемся к роутеру/точке доступа

Итак, предполагаем что подключение происходит с шифрованием WPA2, так как сейчас это самое популярное и наиболее безопасное решение, чем к примеру устаревший WPA.

Страницы