Категории

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

Ubuntu Unity Midnight Commander и F10

Для возвращения нормальной работы в терминале кнопки F10 нужно выполнить команды в терминале:
Ubuntu$ gconftool --set --type bool "/apps/gnome-terminal/global/use_menu_accelerators" "false"
Ubuntu$ gconftool --set --type string "/apps/compiz-1/plugins/unityshell/screen0/options/panel_first_menu" Disabled
А для Ubuntu 12.04 понадобится создать файл gtk.css в папке .config/.gtk-3.0 в домашнем каталоге:
Ubuntu~$ mkdir -p .config/gtk-3.0
Ubuntu~$ cat >>.config/gtk-3.0/gtk.css<<_EOF
@binding-set NoKeyboardNavigation {
unbind "F10"
}

* {
gtk-key-bindings: NoKeyboardNavigation
}
_EOF
Затем нужно завершить сеанс и войти заново - теперь клавиша F10 работает так, как и хотелось.
P.S. если ничего не получилось, то на крайний случай можно пользоваться комбинацией клавиш ESC+0, кстати эти комбинации работают и для других F кнопок.

Ubuntu Gnome-Terminal - включение beep enable system-beep, audible ping, bell, подавать гудок.

Первым делом необходимо установить утилиту beep:
Ubuntu~$ sudo apt-get install beep
Затем нужно разрешить загрузку модуля pcspkr:
Ubuntu~$ sudo sed -i'' -e 's/blacklist pcspkr/#blacklist pcspkr/' /etc/modprobe.d/blacklist.conf
Либо, если Beep поддерживает звуковая карта ноутбука, попробовать активировать эту функцию:
Ubuntu~$ cat >>/etc/modprobe.d/alsa-base.conf<<_EOF

#Enable Beep
#https://bugs.launchpad.net/ubuntu/+source/beep/+bug/144022
options snd-hda-intel power_save=10 power_save_controller=Y index=0 beep_mode=1
_EOF
Для включения сигналов в gnome-terminal нужно включить в metacity параметр audible_bell и в самом gnome-terminal проверить наличие галочки "Подавать гудок".
Я сделал это через консоль:
Ubuntu~$ gconftool-2 --set --type bool "/apps/gnome-terminal/profiles/Default/silent_bell" "false"
Ubuntu~$ gconftool-2 --set --type string "/apps/metacity/general/audible_bell" "on"
Ubuntu~$ gsettings set org.gnome.desktop.wm.preferences audible-bell 'true'
Ubuntu~$ gconftool-2 --set --type string "/desktop/gnome/peripherals/keyboard/bell_mode" "on"
Ubuntu~$ gsettings set org.gnome.settings-daemon.peripherals.keyboard bell-mode 'on'
Проверяем:
Ubuntu~$ echo -e "\a"
Ubuntu~$ echo -e '\a'
Ubuntu~$ ping -a ya.ru
У меня после этих манипуляций был слышен звук, как и в системной консоли.
Регулировать громкость сигнала можно через alsamixer в консоли - параметр Beep, у меня он почему-то был почти около нуля и я добавил громкости.
Но радоваться рано, после перезагрузки гудок пропал. Выяснилось, что если отключить гудок и включить его снова, то все работает, но до следующей перезагрузки :(
Ubuntu~$ gsettings set org.gnome.desktop.wm.preferences audible-bell 'false'
Ubuntu~$ gsettings set org.gnome.desktop.wm.preferences audible-bell 'true'
Ubuntu~$ echo -e '\a'
Немного подумав, сделал такой костыль:
Ubuntu~$ cat >>~/.bashrc<<_EOF
if [ -n $DISPLAY ]; then
    gsettings set org.gnome.desktop.wm.preferences audible-bell 'false'
    gsettings set org.gnome.desktop.wm.preferences audible-bell 'true'
fi
_EOF
Буду крайне признателен, если кто-то подскажет более изящное решение.

P.S. Может кому пригодится, приведу еще дополнительные опции из gconftool и gsettings:
Ubuntu~$ gsettings list-recursively | grep bell
org.gnome.desktop.wm.preferences audible-bell true
org.gnome.desktop.wm.preferences visual-bell false
org.gnome.desktop.wm.preferences visual-bell-type 'fullscreen-flash'
org.gnome.settings-daemon.peripherals.keyboard bell-custom-file ''
org.gnome.settings-daemon.peripherals.keyboard bell-duration 100
org.gnome.settings-daemon.peripherals.keyboard bell-mode 'on'
org.gnome.settings-daemon.peripherals.keyboard bell-pitch 400

Ubuntu~$ gconftool -R /desktop | grep -B4 bell
  /desktop/gnome/peripherals:
   /desktop/gnome/peripherals/keyboard:
    repeat = true
    delay = 500
    bell_mode = off
    bell_custom_file = (значение не установлено)
    remember_numlock_state = true
    click_volume = 0
    click = true
    bell_pitch = 400
    bell_duration = 100

Ubuntu~$ gconftool -R /apps | grep -B20 bell

Ссылки по теме:
1. Comment 50 for bug 486154
2. Trying to ENABLE bell in gnome-terminal
3. Comment 18 for bug 144022

четверг, 27 декабря 2012 г.

Linux Ubuntu создаем файл подкачки Swap

Обычно swap создают размером в 2 раза превышающим размер доступной оперативной памяти.
Шаг первый: Создадим файл с помощью команды низкоуровневого копирования dd Файл забьём нулями из /dev/zero и разметим на 256 блоков по 1 Мб каждый:
Ubuntu$ sudo dd if=/dev/zero of=/swap256.swap bs=1M count=256
Шаг второй: отформатируем получившийся файл как swap устройство:
Ubuntu$ sudo mkswap /swap256.swap
Шаг третий: подключаем отформатированный файл (после второго шага это уже полноценный swap) с помощью команды swapon которая как раз для этого и предназначена.
Ubuntu$ sudo swapon /swap256.swap
Четвёртый шаг: делаем так чтобы swap файл подключался каждый раз при загрузке системы. Для этого в /etc/fstab добавляем одну строчку:
/swap256.swap none swap sw 0 0
Контролировать использование swap можно как обычно через опцию sysctl vm.swappiness
У меня в /etc/sysctl.conf прописано:
vm.swappiness=10
Это значит, что система будет использовать swap, если останется 10% от объема оперативной памяти.

Ссылки по теме:
1. Ubuntu. Как создать swap файл подкачки
2. Swappiness

среда, 26 декабря 2012 г.

Asterisk 1.8 и статистика по SNMP в zabbix

Прежде чем начинать собирать статистику с Asterisk по протоколу snmp, нужно чтобы в нем был модуль res_snmp.so:
FreeBSD# asterisk -rvvvv
...
pbx*CLI> module show like snmp                                                                                                                   Module                         Description                              Use Count 
res_snmp.so                    SNMP [Sub]Agent for Asterisk             0         
1 modules loaded
Как видим, все на месте. Для тех, у кого это нет этого модуля, нужно пересобрать порт с нужной опцией:
FreeBSD# make config
[*] SNMP      SNMP protocol
Когда разобрались с наличием модуля, идем в конфиг /usr/local/etc/asterisk/res_snmp.conf и включаем SNMP:
[general]
; We run as a subagent per default -- to run as a full agent
; we must run as root (to be able to bind to port 161)
subagent = yes
; SNMP must be explicitly enabled to be active
enabled = yes
Как видим, Asterisk не может открыть 161 порт (по нему работает протокол snmp), если он запущен не от пользователя root. Но не беда, по умолчанию asterisk работает как суб-агент snmp это значит, что он может отдавать данные в демон snmpd через сокет и ему не надо будет открывать 161 порт.
Готовим конфиг для snmp, вот мой конфиг /usr/local/etc/snmp/snmpd.conf:
syslocation  "Univers Server Room"
syscontact  admin@my_organization_dom
rocommunity  public ТУТ_IP_сервера_zabbix

master agentx
agentXPerms  0660 0550 asterisk asterisk
agentXSocket /var/agentx/master
Если с запуском Asterisk 1.8 в jail не возникло проблем, то с запуском snmpd было 2 проблемы:
1. Не запускался демон snmpd:
FreeBSD# service snmpd restart
snmpd not running? (check /var/run/net_snmpd.pid).
Starting snmpd.
/usr/local/etc/rc.d/snmpd: WARNING: failed to start snmpd
Сообщение об ошибке как-то не особо помогло в решении проблемы, но все-же рискнем заглянуть в логи:
FreeBSD# cat /var/log/snmpd.log 
init_kmem: kvm_openfiles failed: /dev/mem: No such file or directory
Agent initialization failed
Решение оказалось простым man snmpd:
FreeBSD# man snmpd
....
-r      Do not require root access to run the daemon.  Specifically, do
               not exit if files only accessible to root  (such  as  /dev/kmem
               etc.) cannot be opened.
.....
Как сказано в мане, говорим демону snmpd запускаться с опцией -r, добавляем в /etc/rc.conf строку:
#----------------------------- SNMP ---------------------------------------#
snmpd_enable="YES"
snmpd_flags="-r"
#--------------------------------------------------------------------------#
И пробуем еще раз, теперь должно все запуститься:
FreeBSD# service snmpd restart
Stopping snmpd.
Waiting for PIDS: 27711.
Starting snmpd.
Error 2 (No such file or directory) could not get the assoclist
Опять какая-то ошибка, немного погуглив яндексом в рамблере нашел страничку с описанием бага #2311, там говорится про ядро FreeBSD и отсутствие в нем SCTP (У меня в ядре как раз небыло этого SCTP) и эту ошибку можно спокойно проигнорировать. Ну чтож, если говорят, что все должно работать, то проверяем:
FreeBSD# sockstat | grep snmpd
root     snmpd      27758 6  udp4   *:161                 *:*
root     snmpd      27758 7  stream /var/agentx/master
root     snmpd      27758 8  tcp4   *:199                 *:*
root     snmpd      27758 9  stream /var/agentx/master
Как видим, snmpd слушает 161 порт (по нему работает протокол snmp) и сокет /var/agentx/master. Значит мы все сделали правильно, и теперь двигаемся дальше к настройке zabbix.
...... Тут должна быть часть о настройке Zabbix :) Позже допишу. ......

Ссылки по теме:
1. FreeBSD jails and net-snmp
2. SourceForge SNMPd bug: #2311 5.7.1 errors at startup on FreeBSD systems without SCTP
3. Asterisk MIB Definitions
4. asterisk-users mailing list - ASTERISK and SNMP
5. Мониторим Asterisk при помощи snmp и Zabbix