- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF104:Ответы
Материал из Linuxformat.
Содержание |
Oтветы
- Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru
Мониторим сервер
В: У меня три сервера на Ubuntu, где запущены различные сервисы (Apache, MySQL, FTP, и т.д.). Начинка у этих компьютеров не очень надежная, вот я и думаю, нет ли какого-нибудь открытого ПО, способного наблюдать за несколькими серверами. Хорошо бы оно выводило результат на сайт, чтобы я мог получать доступ к нему с КПК через интернет.
Надо ли мне самому писать код, или уже есть что-то готовое?
Боб [Bob]
О: Существует множество программ, делающих то, что Вы хотите, с различной степенью сложности. Самая суровая в этом списке – Nagios (http://www.nagios.org), но для Ваших нужд будет вполне достаточно чего-нибудь попроще.
Monit (http://www.tildeslash.com/monit) в основном предназначена для мониторинга программ на локальной машине, но может наблюдать и за удаленными серверами. Лучше запускать ее не на той машине, которую надо контролировать, поскольку проблемы с сервером «уронят» также и монитор, а Вы будете продолжать думать, что все в порядке. Можно указать Monit, какие сервисы тестировать и что делать, если сервиc рухнул. Чтобы не пришлось лихорадочно вспоминать, проверили ли Вы web-страницу на предмет новых проблем – Monit может известить Вас по электронной почте. Вдобавок она умеет выполнять внешние программы или перезапускать службы. Последний вариант предназначен для локальных сервисов, но можно сделать перезапуск командой
ssh remote.server /etc/init.d/service restart
при условии, что Вы настроили SSH-аутентификацию по ключу и вводить пароль не придется. Возможны и другие внешние действия – например, при помощи скрипта xsend из xmpppy (http://xmpppy.sourceforge.net) отправить мгновенное сообщение на Ваш карманный компьютер и дать Вам знать немедленно, или отправить электронной почтой письмо на SMS-шлюз, уведомив Вас текстовым сообщением. Все зависит от того, насколько срочно Вам нужно знать, что возникла проблема, и каким образом Вы хотите узнавать об этом.
Вот выжимки из рабочего файла конфигурации:
set mailserver mail.example.com set alert me@example.com set httpd port 2812 and allow admin:monit check host slartibartfast with address 192.168.13.27 if failed icmp type echo count 3 with timeout 3 seconds then alert if failed port 3306 protocol mysql with timeout 15 seconds then alert if failed url http://example.com then alert
Первая часть задает глобальные настройки – адрес получателя письма-предупреждения и включение web-интерфейса. Это позволяет соединяться отовсюду, но контролируется именем учетной записи, так что можете использовать КПК, где бы Вы ни были. Второй блок производит три теста на удаленном хосте и посылает письмо с предупреждением при любых сбоях. Если вы хотите, чтобы Monit перезапускала сервисы, добавьте по блоку на каждый сервис, по следующему образцу:
check host example.com with address 192.168.1.27 if failed port 3306 protocol mysql with timeout 15 seconds then exec “/usr/bin/ssh root@example.com /etc/init.d/mysql restart”
Команда exec тоже посылает предупреждение, и Вы узнаете, если сервис потерпит крах и будет перезапущен.
У Monit также есть web-интерфейс, так что можете время от времени выполнять проверку и убеждаться, что все работает. Monit не просто приглядывет за серверами: она может проверить нагрузку на процессор или свободное дисковое пространство или отследить изменения в содержании или атрибутах файлов и каталогов. Примерный файл конфигурации охватывает самое основное – просто раскомментируйте и отредактируйте те части, которые хотите использовать. MС
Автомонтирование с Udev
В: У меня есть автомобильный компьютер с USB-портом на передней панели, и я загрузил на него облегченную версию PCLinuxOS. Мне хотелось бы, чтобы Udev (на init level 3) автоматически монтировал USB-накопители, подключаемые к USB-порту в /media/removable. Я попытался написать следующее правило, но оно не работает:
SUBSYSTEMS==”usb”, ATTRS{product}==”Mass Storage Device”, SYMLINK:=”removable”, RUN+=”/bin/mount /dev/removable /media/removable”
Вы видите какие-нибудь ошибки в правиле? Я перечитал несколько учебников про Udev, которые привели меня к выводу, что это должно работать, но /dev/removable не создается.
Ноэль [Noel]
О: Первый шаг – попробовать правило без команды RUN, чтобы убедиться в его работоспособности. Только когда /dev/removable будет создан, и Вы сможете запустить команду mount вручную, можно добавить ее в правило. Udev умеет применять изменения в файле правил без рестарта, поэтому достачно держать файл открытым в текстовом редакторе и модернизировать правила, без отключения и подключения устройства.
Когда Вы пишете правила Udev, помните, что атрибуты, которые Вы применяете, должны браться теми же самыми, которые выводит udevinfo. Если Вы хотите использовать USB-устройства хранения данных (которые не все имеют одинаковые атрибуты продукта), попробуйте
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”, SYMLINK:=”removable”, RUN+=”/bin/mount /dev/removable /media/removable”
Это правило смонтирует первый раздел любого USB-накопителя при подсоединении. Вам не надо создавать символическую ссылку с /dev/removable в правиле, которое монтирует устройство, хотя ее можно применять в других случаях, так что Ваше правило упрощается до
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h]1”, RUN+=”/bin/mount /dev/%k /media/removable”
потому что %k содержит имя, определенное ядром для этого устройства, например, sda1.
Если Ваша система использует слой SСSI для жестких дисков, данное правило заодно обнаружит при загрузке Ваш жесткий диск. Чтобы избежать этого, исключите жесткий диск из правила в явном виде. Запустив udevinfo, скопируйте атрибуты модели, затем добавьте в правило нечто вроде
ATTRS{model}!=”superduper 500G”
Большинство USB-устройств хранения данных, особенно флэш-брелки и карты памяти, имеют одиночный раздел, так что это для них подойдет. Если же Вы захотите подключить нечто вроде жесткого диска USB со множеством разделов, Вам необходимо что-то поумнее, типа
SUBSYSTEMS==”scsi”, KERNEL==”sd[a-h][0-9]”, SYMLINK:=”removable%n”, RUN+=”/usr/bin/pmount /dev/removable%n”
Это правило использует не программу mount, а более сложную pmount, применяемую большинством автомонтировщиков. Одно из ее преимуществ – в качестве аргумента ей нужен только узел устройства, и она создает точку монтирования в /media автоматически. Ее коллега, pumount, удаляет точку монтирования при размонтировании, сохраняя /media в чистоте. %n в вышеуказанном правиле заменяется на число, определенное ядром, так что третий раздел (sda3) будет смонтирован в /media/removable3. НБ
USB в сериале
В: Я бы с радостью вышвырнул Windows и запустил чистую Linux-систему. Уже нашел эквивалентное ПО для всего, что мне надо, и с помощью Live DVD убедился, что моя система будет работать. Но я готовлюсь к экзамену на Cisco CCNA и использую репликатор последовательного порта, подключенный к USB-порту на моей машине. На другом конце последовательный кабель затем подключается к консольному порту на маршрутизаторе Cisco через перекрестный кабель serial-to-RJ11.
Знаете ли вы, как заставить USB-репликатор последовательного порта работать в Linux, и не порекомендуете ли замену приложениям Hyper Terminal и TFTP-серверу SolarWinds?
Кристофер Смит [Christopher Smith]
О: Под репликатором Вы, видимо, подразумеваете конвертор. Репликатор порта обычно соединяет порт с выходом того же типа, как для док-станции ноутбука. Существует масса конверторов USB-to-serial, и большинство из них поддерживается Linux. У меня самого таких два, оба куплены на eBay и используют различные чипсеты и драйверы, но прекрасно работают под Linux. Ядро имеет набор модулей для поддержки этих устройств, которые должны автоматически загружаться, когда Вы подсоединяете конвертер. Перед присоединением, запустите следующую команду от имени суперпользователя (root) (в Ubuntu предварите ее sudo):
tail -f /var/log/messages
Подключив устройство, Вы должны увидеть нечто подобное:
usbcore: registered new interface driver usbserial drivers/usb/serial/usb-serial.c: USB Serial Driver core drivers/usb/serial/usb-serial.c: USB Serial support registered for ark3116 ark3116 5-2:1.0: ark3116 converter detected usb 5-2: ark3116 converter now attached to ttyUSB0 usbcore: registered new interface driver ark3116
Как видите, это устройство использует модуль ark3116 и создает последовательное устройство на /dev/ttyUSB0. Чтобы узнать, какие последовательные USB-драйвера есть в Вашей системе, наберите
ls -1 /lib/modules/$(unamer)/kernel/drivers/usb/serial
Если Ваше устройство не распозналось, получите его номер ID запуском команды lsusb и поищите на http://qbik.ch/usb/devices. Может быть, Ваше устройство не поддерживается (хотя это маловероятно) или Ваше ядро собрано без соответствующих модулей; в последнем случае придется пересобрать ядро, включив необходимый драйвер. Стандартная программа последовательного терминала для Linux – Minicom, она должна быть включена в Ваш дистрибутив. Есть целый ряд TFTP-серверов, включая Atftp (ftp://ftp.mamalinux.com/pub/atftp) и NetKit TFTP (ftp://ftp.uk.linux.org/pub/linux/Networking/netkit), а я предпочитаю использовать TFTP-сервер в dnsmasq (http://www.thekelleys.org.uk/dnsmasq). Посмотрите учебник по сетевой загрузке в LXF100/101 для дополнительной информации об использовании dnsmasq как TFTP-сервера. НБ
Вопросы компиляции
В: Я новичок в Linux и ценю решения «из коробки». Например, в моем Slackware я установил Filelight, прочитав файл Install и выполнив
./configure && make && su -c “make install”
потому что файл Install имеет смысл читать. Я получил январский номер 2008 (LXF100/101) и в рубрике HotPicks увидел программу NoteCase. Файл readme.txt смутил меня. Там говорится: «Просто распакуйте архив с содержимым и запустите программу. Пользователям Windows необходимо установить библиотеки GTK.»
Написанные строки «Просто распакуйте архив с содержимым и запустите программу» относятся к установке в Windows или Linux? Если они относятся к Linux, то в распакованном архиве notecase-1.7.4_src.tar.gz нет никаких исполняемых файлов.
Потом, там есть опции компиляции только для Ubuntu. Так как программы для Ubuntu работают в Gnome, можете ли вы сообщать в HotPicks, что приложение годится только под Gnome или KDE?
Я попытался запустить make и получил такое сообщение об ошибке:
/notecase-1.7.4# make ===> Compiling src/main.cpp Package gnome-vfs-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gnome-vfs-2.0.pc’ to the PKG_CONFIG_PATH environment variable
Брайан [Brian]
О: Файл Readme для данного приложения довольно запутанный. Возможно, что один и тот же Readme используется и для исходного, и для двоичного архивов, и тот, который Вы пытались использовать – это архив с исходными текстами. Хотя инструкции по компиляции даны для Ubuntu, программа предназначена не только для Ubuntu. Из упоминания об Ubuntu также не следует автоматически, что программа для Gnome: Ubuntu вполне может работать и с KDE-программами, как, кстати, и с самим KDE. По сути, это GTK-приложение, хоть оно и требует установленного gnome-vfs.
Для приведенной Вами ошибки есть две возможных причины: или у Вас не установлен gnome-vfs, или он установлен, но pkgconfig не осведомлен о нем. В последнем случае, проблему должна решить установка значения PKG_CONFIG_PATH в правильную директорию перед запуском make:
locate gnome-vfs-2.0.pc export PKG_CONFIG_PATH=”каталог из вывода первой команды” make
Как альтернатива, существует двоичный пакет. Наш DVD содержит пакеты RPM и Debian, а на сайте NoteCase имеются готовые двоичные tar-архивы, которые надо просто распаковать в директорию root в Вашей файловой системе:
tar xf notecase-1.7.6.tar.gz -C /
Альтернатива загрузке двоичного пакета, и один из полезных способов, когда нет двоичных архивов, но есть RPM, заключается использовании команды rpm2targz для перехода от RPM к tgz-архиву. Заметьте, что при таком подходе Вам придется самому разрешать зависимости пакета, поэтому данный метод лучше использовать только в тех случаях, когда исходные тексты недоступны. ПХ
Подкачка мнений
В: Во-первых, я хотел бы сказать, что я новичок в мире Linux. Несколько раз слышал, что файл подкачки [swap] должен быть в два раза больше размера ОЗУ, но не более 512 МБ. А в уроке по загрузке в LXF100/101 (пример 2) автор упоминает… «2-ГБ раздел hda2 для подкачки». Я запутался. Может, я неправильно прочел?
Второе: можно ли на отдельной машине запустить образ Linux из-под Linux? Я знаю, что для этого существуют и другие способы, типа запуска VMware или VirtualBox, но возможно ли это в принципе?
Лерой Морилл [LeRoy Morrill]
О: Это один из тех вопросов, на которые десять разных «экспертов» дадут дюжину разных ответов. Традиционно рекомендуется раздел подкачки в два раза больше размера ОЗУ, но этот совет восходит ко временам, когда у большинства машин ОЗУ было всего 64–128 МБ. Некоторые утверждают, что при современном оборудовании, где памяти так много, большой раздел подкачки – излишество. На это приводится контр-аргумент: современные приложения способны сожрать столько памяти, что swap актуален как никогда. Если Вы рассчитываете делать работу с интенсивным использованием памяти, сделайте swap побольше. Трата одного-двух гигабайт на диске не сравнится с потерями от зависания компьютера, если Вы выберете всю память при сессии видеомонтажа [наиболее вероятный сценарий в этом случае – принудительное завершение «прожорливого» приложения; кроме того, swap можно иметь не только в виде выделенного раздела, но и файла, который создается вручную по мере необходимости, – прим. др. эксп.].-
Некоторые системы используют tmpfs в директории /tmp, ускоряя систему за счет хранения временных файлов в памяти. Они, как правило, невелики, но некоторые программы выкладывают в /tmp и большие файлы, и припасти дополнительное место на диске на случай переполнения – дело хорошее. Кроме того, распространена практика использования раздела подкачки для засыпания с сохранением на диск, особенно на ноутбуках. В этом случае раздел подкачки должен быть по меньшей мере равен ОЗУ. Я бы порекомендовал использовать для пространства подкачки раздел в 1–2 раза больше ОЗУ, особенно сейчас, когда размеры жестких дисков растут даже быстрее, чем ОЗУ.
Хотя и можно запустить дистрибутив Linux в окне прямо из-под своего дистрибутива – в конце концов, это можно сделать и в Windows – я не знаю ни одного дистрибутива, специально предназначенного для этой цели. Это, наверно, потому, что существует столько вариантов запуска виртуальной машины, на которой может работать любой дистрибутив, что создание дистрибутива, заточенного на такую задачу, будет довольно бессмысленным (но если кто знает такой дистри- бутив/приложение, пожалуйста, сообщите нам). При наличии выбора между VMware, VirtualBox, Qemu и Xen, у Вас уже есть достаточно возможностей для Linux в Linux, и это более надежно, так как виртуальная машина защищает хост от процессов гостевой системы. НБ
Xubuntu бунтует
В: Я хочу установить Xubuntu с диска LXF99 на компьютер без DVD-привода. Я скопировал файл xubuntu-7.04-alternate-i386.iso в мою домашнюю директорию и затем прожег CD с помощью Xfburn.
CD почему-то не загрузился на обоих моих старых компьютерах. Они вполне могут загружаться с CD: по факту, с CD установился Dapper и даже CentOS – но не Xubuntu, который я записал. Я сравнил хэш-суммы MD5 прожигаемого образа и файла, который я скопировал в домашнюю директорию, и они одинаковые.
Грег Морзе [Greg Morse]
О: На это есть несколько возможных причин. Первое, что приходит на ум – Вы могли записать ISO-образ на диск в виде файла, а не как образ. Глядя на содержимое CD, Вы видите несколько файлов и каталогов, или просто один большой файл? Если один файл, то Вы просто скопировали образ. В Xfburn Вы должны использовать кнопку Burn CD Image.
Другим возможным виновником является диск. Используете ли Вы CD-RW диски? Если да, то попробуйте взять новый диск или CD-R. У дисков CD-RW отражательная способность ниже, и она еще ухудшается, когда диски царапаются при использовании. Это усугубляется сочетанием со старыми компьютерами, где лазеры привода потеряли мощность, а линза у них загрязнилась. Диски, может, и читаются, но так медленно, что BIOS успевает решить, что загрузочный CD в дисководе отсутствует, и перейти к загрузке с жесткого диска.
Одним из решений для дисков, отказывающихся загружаться, является использование Smart Boot Manager, который Вы найдете в каталоге Главное каждого LXFDVD. Запишите файл на дискету, загрузитесь с нее с CD в приводе, а затем выберите CD из меню Smart Boot Manager. НБ
Broadcom и SUSE
В: У меня OpenSUSE 10.1 на ноутбуке Dell M70, но я вынужден использовать NdisWrapper для моей беспроводной карты. Для ее активации я применяю modprobe, и все работает отлично. Вроде бы мой ноутбук использует беспроводной чипсет Broadcom.
Хотел бы перейти на OpenSUSE 10.3, но не могу заставить работать беспроводную карту – дистрибутив поставляется вместе с со встроенными драйверами, но я не знаю, как активировать беспроводную сеть, чтобы она заработала.
Дэвид Хилл [David Hill]