Содержание

Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal

Аудит сети Х-терминалов

По большей части Х-терминальная среда работает очень стабильно. В моей практике (три раза стучу по дереву) не было ни одного случая зависания сервера Х-терминалов. Тем не менее, это не избавляет системного администратора от необходимости поддержания системы в оптимальном работоспособном состоянии. А лучший путь для достижения этого, внедрение системы аудита Х-терминальной сети. Под аудитом я понимаю контроль за загрузкой локальной сети, процессорным временем и также удаление неработоспособных программ из памяти Х-терминал сервера. Обязательно при этом следить за безопасностью работы пользователей и выявлять попытки проникновения в вашу локальную сеть извне.

"Уборка мусора"

Не смотря на то, что по своей природе компьютеры лишены иррациональности, и все их поведение должно объясняться четко сформулированными правилами, иногда они ведут себя, мягко говоря, странно. Дело в том, что программы создаются людьми, и, видимо, поэтому от людей, которым, как вы знаете, свойственно ошибаться, им передаются черты, присущие живым организмам. Поэтому современные программы "виснут", делают ошибки, "болеют" (имеется в виду распространение компьютерных вирусов), и даже иногда по прихоти своих создателей совершают откровенно деструктивные действия. Пользователи уже смирились с такими "достоинствами" программного обеспечения, но чтобы их терпение не лопнуло, системному администратору необходимо максимально сгладить негативные последствия от работы таких программ. Частично такого эффекта можно добиться от внедрения системы "уборки мусора" операционной системы. Под термином "уборка мусора" следует понимать ряд мероприятий, которые помогают операционной системе удалять ненужную информацию, такую как временные файлы, повисшие в памяти процессы, не использующиеся сервисы-демоны и т.д. Точно так, как современное общество не может жить без дворников, подметающих улицы, так само и операционная система требует от администратора помощи в ее обслуживании.

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

За чем же должна следить система "уборки мусора" Х-терминал сервера? Все зависит от того, какие программные продукты используют ваши пользователи в своей работе. Мне и вам очень повезло, так как в качестве серверной операционной системы мы выбрали Linux, которая сама по себе довольно надежна, так что про головную боль, вызванную "зависаниями" именно операционной системы, можно забыть. Но остаются прикладные программы, часть из которых иногда дает сбои. Лично я рекомендовал бы настроить систему Х-терминалов и дать пользователям поработать с ней в течении месяца. За это время системному администратору нужно постараться собрать как можно больше информации про некорректное поведение программных продуктов. Для реализации задуманного лучше всего попросить пользователей Х-терминалов сообщать системному администратору о каждом случае неправильного поведения их компьютеров. Тем самым мы убьем сразу двух зайцев: поможем пользователям освоиться в новой Х-терминальной среде, а также соберем и систематизируем достаточно данных для повышения работоспособности и надежности сервера Х-терминалов.

У системы Х-терминалов, с которой мне довелось работать, у пользователей были такие претензии:

Начнем рассмотрение жалоб пользователей по порядку. Итак, офисный пакет OpenOffice предоставляет пользователю достаточно широкий спектр возможностей, но иногда ведет себя не совсем корректно. В частности, известны случаи "зависания" его в середине работы, а также аварийного завершения при определенных обстоятельствах. Особенно тяжело пользователю в случае "зависания" OpenOffice, так как даже нажатие на кнопку закрытия окна не имеет никакого результата. Более того, если пользователь даже воспользуется утилитой xkill, нет никакой гарантии, что офисный пакет повторно успешно запустится. С "зависаниями" офисного пакета ситуация понятна, к сожалению, он еще не может похвастаться 100% надежностью в работе, но случаются они очень редко и пока другой достойной альтернативы OpenOffice нет с этим приходится мириться. А вот с невозможностью его повторного запуска бороться нужно.

Рассмотрев ситуацию более пристально, мною было выявлено причину невозможности повторного запуска после аварийного выключения Х-терминала или "зависания" OpenOffice. Дело в том, что в памяти сервера продолжает работать процесс soffice.bin, который и мешает повторному запуску. Так выглядит список процессов пользователя test, после аварийного выключения его Х-терминала (на нем был запущен офисный пакет):

$ ps -u --User test
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
test      9536  0.0  0.0  3696  892 ?        S    10:26   0:00 /usr/bin/icewm-session
test      9590  0.0  0.0  3216  628 ?        S    10:26   0:00 /usr/bin/ssh-agent /usr/share/apps/switchdesk/Xclients.icewm
test      9591  0.0  0.1  3716 1136 ?        RN   10:26   0:00 icewmbg
test      9592  0.0  0.1  6128 1264 ?        R    10:26   0:00 icewmtray
test      9593  0.0  0.1  6620 1976 ?        S    10:26   0:00 icewm
test      9608  0.6  4.6 136516 47712 ?      S    10:26   0:02 /usr/lib/openoffice/program/soffice.bin
test      9632  0.0  0.3  9292 3156 ?        S    10:26   0:00 /usr/apps/ROX-Filer/Linux-ix86/ROX-Filer

Как видно, физическое выключение Х-терминала никак не повлияло на прекращение выполнения на сервере процессов пользователя. Офисный пакет soffice.bin продолжает работать в процессе под номером 9608. Для того, чтобы пользователь мог заново запустить OpenOffice, необходимо завершить выполнение этого процесса. Лаконичное и универсальное решение от имени суперпользователя:

# killall soffice.bin

Применять нельзя ни в коем случае, так как вместе с "повисшим" офисным приложением пользователя test будут принудительно закрыты и все другие, нормально работающие, экземпляры OpenOffice остальных пользователей Х-терминальной сети. Необходимо завершить процесс от имени пользователя его запустившего. Для реализации задуманного я написал такой простой сценарий, а также ассоциировал его выполнение с кнопкой в панели быстрого запуска (см. рис. 8.4):

#!/bin/sh

oobin='soffice.bin'

killall $oobin
sleep 5
pids=$(ps -a --user=$USER | grep $oobin | awk '{print $1}')
for pid in $pids
do
    kill -9 $pid
    sleep 1
done

Запускать данный сценарий следует только от имени обычного пользователя. Как видно из его содержания, он сначала пытается завершить OpenOffice, посылая сигнал TERM командой killall, а затем после 5 секундной паузы, проверяет перестали ли работать процессы soffice.bin. Если это не так, то они завершаются уже командой kill, посылающей сигнал KILL (-9). Перед использованием данного сценария не забудьте сделать его файл исполняемым.

Рис. 8.4. Кнопка для принудительного завершения работы OpenOffice

Аварийному завершению браузера Galeon помочь никак нельзя. Единственным компромиссным решением является использование другого (более надежного браузера), а также совет пользователям не открывать одновременно слишком много его окон. А вот с невозможностью запуска этого браузера, как и почтового клиента Evolution, бороться можно. Причиной такого поведения этих двух программ является некорректное поведение сервисов-демонов, с которыми они связаны, а также аварийное завершение работы Х-терминала. Вот так выглядит список процессов в памяти сервера при аварийном завершении работы пользователя Х-терминала с именем guser:

$ ps -u --User guser
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
guser    10502  0.0  0.1  3692 1444 ?        S    11:29   0:00 /usr/bin/icewm-session
guser    10556  0.0  0.0  3216  840 ?        S    11:30   0:00 /usr/bin/ssh-agent /usr/share/apps/switchdesk/Xclients.icewm
guser    10557  0.0  0.1  3716 1492 ?        RN   11:30   0:00 icewmbg
guser    10558  0.0  0.1  6132 1640 ?        R    11:30   0:00 icewmtray
guser    10559  0.0  0.2  6636 2348 ?        S    11:30   0:00 icewm
guser    10560  0.2  1.1 26668 12192 ?       S    11:30   0:00 evolution
guser    10562  0.0  0.2  5996 2328 ?        S    11:30   0:00 oafd --ac-activate --ior-output-fd=9
guser    10565  0.0  0.5 23252 6008 ?        S    11:30   0:00 wombat --oaf-activate-iid=OAFIID:Bonobo_Moniker_wombat_Factory --oaf-ior-fd=10
guser    10569  0.0  0.3 11788 4036 ?        S    11:30   0:00 bonobo-moniker-xmldb --oaf-activate-iid=OAFIID:Bonobo_Moniker_xmldb_Factory --oaf-ior-fd=12
guser    10573  0.1  1.2 51876 12372 ?       S    11:30   0:00 evolution-mail --oaf-activate-iid=OAFIID:GNOME_Evolution_Mail_ShellComponent --oaf-ior-fd=14
guser    10575  0.0  0.2  3788 2216 ?        S    11:30   0:00 /usr/bin/gconfd-1 12
guser    10582  0.0  0.6 23992 6684 ?        S    11:30   0:00 evolution-addressbook --oaf-activate-iid=OAFIID:GNOME_Evolution_Addressbook_ShellComponent --oaf-ior-fd=
guser    10586  0.0  0.6 24408 6672 ?        S    11:30   0:00 evolution-calendar --oaf-activate-iid=OAFIID:GNOME_Evolution_Calendar_ShellComponent --oaf-ior-fd=15
guser    10591  0.1  0.9 24160 9316 ?        S    11:30   0:00 evolution-executive-summary --oaf-activate-iid=OAFIID:GNOME_Evolution_Summary_ShellComponentFactory --oa
guser    10593  0.0  0.5 21888 5552 ?        S    11:30   0:00 evolution-alarm-notify --oaf-activate-iid=OAFIID:GNOME_Evolution_Calendar_AlarmNotify_Factory --oaf-ior-
guser    10633  0.3  1.9 57528 20000 ?       S    11:31   0:00 /usr/bin/galeon-bin

Процессы с именем icewm относятся к оконному менеджеру, поэтому нас они не очень интересуют, в вот процессы с идентификаторами 10560 (evolution) и 10633 (galeon-bin) соответствуют почтовому клиенту и Интернет браузеру. Браузер Galeon связан с процессом gconfd-1. Чтобы узнать, что это за программа, выполним команду определения принадлежности файла к пакету:

$ rpm -qf /usr/bin/gconfd-1
GConf-1.0.9-10

Согласно информации про содержимое пакета:

$ rpm -qi GConf
Name        : GConf                        Relocations: /usr 
Version     : 1.0.9                             Vendor: ASPLinux
Release     : 10                            Build Date: Птн 25 Кві 2003 18:28:16
Install Date: Срд 25 Лют 2004 14:13:58      Build Host: arena.asplinux.ru
Group       : System Environment/Base       Source RPM: GConf-1.0.9-10.src.rpm
Size        : 1901746                          License: LGPL
Signature   : DSA/SHA1, Пнд 05 Тра 2003 10:10:10, Key ID c96aa8e69b3c94f4
Packager    : ASPLinux Team 
URL         : http://www.gnome.org/projects/gconf/
Summary     : The Gnome Config System.
Description :
GConf is the GNOME Configuration database system.

GNOME is the GNU Network Object Model Environment. It is an easy to
use, powerful, and highly configurable desktop environment.

GConf– это конфигурационная база данных проекта Gnome, а так как Galeon это Gnome-браузер, то ничего удивительного в том, что он использует gconfd-1 в своей работе. А как результат, для того чтобы браузер Galeon успешно запустился, достаточно завершить процессы с именами выполняющихся программ galeon-bin и gconfd-1.

Пока интересно, читаем дальше!

Авторское право © Сеник Николай, 2004-2006