|
|||
реклама у нас | |||
*** |
Маленькие хитрости большой системыАвтор: Роман RTG ЕПИШЕВ В этом материале поговорим о некоторых нюансах использования ОС Linux. Сервисный центр Как-то раз решил поставить я Apache. Поставил, принял конфигурацию по умолчанию, запустил сервер httpd, но ожидаемого эффекта не было — http://localhost не был найден ни одним из установленных браузеров. Игрушка Maelstrom запускалась-запускалась, а потом взяла, да и перестала работать — не появлялся кораблик на звездном фоне. Не думал, что эти проблемы могут быть хоть как-нибудь связаны... Оказалось, все произошло из-за отключения мною сервиса network, и поэтому вся система жила без внутренней сети. «Хорошо, с Apache сравнительно понятно, но что случилось с Maelstrom?» — спросите вы. Как выяснилось, некоторые программы (а особенно игры) соединяются сами с собой через эту внутреннюю сеть компьютера. Не имея возможности такого соединения, они либо зависают, либо загружаются не полностью. Поэтому очень советую, если вы точно не знаете, нужен ли вам какой-нибудь сервис или нет, не выключайте его, ведь это может быть что-то важное. Хотя... если у вас стабильный состав оборудования, kudzu нет смысла при каждой загрузке это проверять, а если у вас не ноутбук, то сервису apmd незачем отнимать системные ресурсы. Для конфигурирования сервисов в вашем дистрибутиве уже должна быть установлена какая-нибудь программа (попробуйте запустить serviceconf), позволяющая в удобном интерфейсе их включать и выключать. Но представим ненадолго, что вы вырубили, например, сервер шрифтов (xfs), и теперь никакие иксы не хотят грузиться, а для текстового режима конфигуратора нет... Как в таком случае указать, какие сервисы нужны, или хотя бы запустить требуемый? Начнем издалека :-). В Linux существует понятие runlevel (дословно — уровень запуска). Каждому состоянию компьютера и системы присвоен свой runlevel. При переходе из одного уровня в другой (например, из третьего в нулевой) выполняются скрипты из /etc/rc.d/rc[уровень_запуска_в_который_переходим].d (на самом деле, в этих папках — только ссылки на скрипты в /etc/rc.d/init.d/). Если посмотреть на имена ссылок, то нельзя не заметить одну особенность. Возьмем, к примеру, тот же network. Ссылка на него в нормальном, пятом уровне выглядела у меня так:
«Ссылка есть, но почему network не работает?» — опять спросит кто-нибудь. Разберем сначала имя: K — означает, что этот сервис будет «убит» (KILL) при переходе в данный runlevel, цифра 90 позволяет запустить сервисы в определенном порядке, иначе они бы выполнялись в алфавитном, наконец, network — это название сервиса. А чтобы заставить сервис запускаться, нужно всего лишь переименовать ссылку и сделать из буквы K букву S (что означает START):
Для того чтобы выключить сервис, букву S меняем на K (так уж исторически сложилось). Вот и все, при следующем изменении runlevel'а network будет запущен. Если вы знаете имя сервиса и хотите его запустить из консоли, то наберите
Например, чтобы заставить работать ранее уже упоминавшийся xfs:
Для того чтобы перемещаться между уровнями, можно использовать команду
(она требует прав суперпользователя). Удобно использовать halt (для выключения питания ATX-систем нужно добавить ключ -p) и reboot. Установка Другой Операционной Системы. Вот вроде бы и работает Linux, вам он уже начинает нравиться. Но у всех «переходящих» пользователей обязательно на другом разделе еще живет какая-нибудь Windows. В один прекрасный день она дает сбой, и вы принимаетесь переустанавливать ее. Установили, настроили, перезагружаете компьютер, а входа-то в Linux уже и нету — Windows преспокойно затерла загрузочный сектор. Для восстановления загрузчика Linux вам потребуется загрузочная дискета, содержащая ту же версию ядра (если версии не будут совпадать, фокус с дискетой не получится), что и в вашей системе. Бросайте ее в дисковод и с нее загружайтесь, на запрос boot: нажмите Enter, и компьютер должен загрузиться в Linux (разумеется, запускается та система, которая уже у вас установлена, поэтому нет смысла использовать загрузочную дискету на компьютере без Linux). Теперь нужно стать суперпользователем (root) и установить загрузчик: если у вас (был) установлен grub, то в консоли наберите
где <диск> — физический жесткий диск, откуда грузился прежний grub (обычно тот же диск, на котором установлен Linux); если же lilo, то достаточно просто набрать
Теперь, если не выдано сообщений об ошибках, система готова к дальнейшей работе. Бывает так, что загрузочной дискеты нет, но есть компакт-диски с Linux. В RedHat-подобных дистрибутивах можно с этих дисков войти в Rescue Mode, в котором в свою очередь можно «спасти» вашу установленную систему. Загружайтесь с первого компакт-диска. Далее наберите:
Инсталляционная программа проверит ваши жесткие диски на наличие Linux'а и, если таковой найдется, примонтирует вашу файловую систему куда-то в /mnt/sysimage (об этом будет сказано в специальном сообщении). Теперь вам нужно /mnt/sysimage сделать вашим корневым каталогом:
А сейчас устанавливайте загрузчик — так, как об этом написано выше. Для того чтобы создать загрузочную дискету, вам нужно выполнить команду
Чтобы узнать вашу версию ядра, наберите
(Будьте внимательны, версия ядра в Rescue-режиме может отличаться от установленной на вашей системе!) Среда переменных Как и в DOS/Win, в Линуксе существуют свои системные переменные, и некоторые из них могут быть нам интересны:
Итак, что они нам дают? Во-первых, мы всегда сможем узнать имя в системе (echo $USER или команда whoami ('кто я такой')), во-вторых — папку, где находимся (echo $PWD, также команда cwd (current working directory)). Переменная $PATH уже обсуждалась ранее на страницах газеты, разберем подробнее $LANG и $DISPLAY. Когда система только загружается, устанавливается переменная $LANG, ее значение берется из файла /etc/sysconfig/i18n. Когда нужно сменить локаль с русской, например, на английскую, то достаточно выполнить
и все программы, запущенные из данной консоли, будут использовать уже другую локаль, если она установлена в системе. Также можно прописать в файл ~/.bashrc строчку
а в /etc/sysconfig/i18n —
и вы получите систему, в которой обычный пользователь будет иметь русскую локаль, а root и все системные сервисы — английскую (кодировка для en_US не указывается) Лично я прибегнул к этому затем, чтобы в журналах системы не фигурировали локализированные даты. Но бывает и так, что менять локаль или любую другую переменную приходится только ради какой-то одной программы — для таких случаев процедура изменения и последующего восстановления значения излишне громоздка. Специально для этого служит еще одна из встроенных Bash-команд — env:
А вот таким образом вы можете запустить Midnight Commander с английской локалью, при этом все программы, запущенные из mc, будут все равно использовать русскую:
Что касается DISPLAY... Вы запускали когда-нибудь приложение, требующее X-сервер, из «голой» консоли? Помните сообщение о невозможности присоединиться к X-серверу, хотя тот у вас уже час как запущен? Правильно, это потому что программа не знает, куда подключаться. Вот эта информация и указывается в переменной $DISPLAY. Для приложений из среды KDE и оконных менеджеров достаточно при запуске указать -display :0 или --display :0, а вот приложения на базе Gtk и проч. могут не иметь такой опции. Но у нас есть env, так что можем запустить:
Теперь перейдите в консоль с X-сервером, и вы увидите, что там открылось окно плейера XMMS. Команда
запустит текстовый редактор kwrite с английским интерфейсом на первом X-сервере. Скачал с сети и установил как-то раз я оконный менеджер fluxbox и долго не мог понять, как в него войти. Потом вспомнил, как запускаются другие оконные менеджеры, добавил в /etc/X11/xdm/Xsession после строчек, отвечающих за запуск KDE
затем изменил в этой же папке kdmrc, добавив в строчку
еще и fluxbox. Только после этого в kdm появился соответствующий рабочий пункт меню. Немного закручено, не правда ли? А если менеджер только попробовать хочется? В таком случае все просто — запускаете
или
и оконный менеджер загрузится в новые иксы. Икс vs. Консоль Вот была такая проблема: при инсталляции системы я не выбрал запуск X-сервера при загрузке, наивно полагая, что уже порядком поднаторел работать в консоли. Через час я опять устанавливал Linux, уже с загрузкой X-сервера по умолчанию. А оказалось вот что. В файле /etc/inittab указывается, каким образом процесс init должен настраивать систему в определенных runlevel'ах, В частности, вы можете указать уровень runlevel по умолчанию (НЕ СТАВЬТЕ 0!), разрешить/запретить использование клавиш Ctrl+Alt+Del во время загрузки системы. Где-то в конце файла Вы найдете строчку
Параметры в inittab существуют в таком виде:
Вы заметили, что в /etc/init.d нет ничего типа S84Xserver? Правильно — запуск xdm/kdm/gdm происходит из inittab, а те уже в свою очередь запускают Иксы. Для того чтобы отказаться от автоматической загрузки Xserver, вы можете просто в начале файла вместо
написать
заказав runlevel по умолчанию. Так можно сделать, если вы уже достаточно хорошо ориентируетесь в командах и в чисто текстовом режиме чувствуете себя как рыба в воде. Зачем загружать X, если большую часть времени проводишь в консолях? Все, отключили иксы при загрузке. Но тут вдруг срочно понадобилось запустить, например, grip, а он требует Xserver. У нас три выхода: изменить runlevel на 5 (если вы — root) и загрузить ваш gnome/kde/windowmaker/fluxbox; запустить вручную сервер (прав обычного пользователя для этого достаточно), а там и программу (но окно будет без управления — не запущен оконный менеджер); или же запустить X-сервер, потом GNOME, а в нем уже grip. Первый вариант будет выглядеть так:
Второй вариант:
А третий:
(X:0 & в круглых скобках потому, что только так мы можем указать более одной команды — bash не понимает конструкцию &;) Единственный недостаток второго и третьего методов — даже если указать ключи --quiet и перенаправление > dev/null 2>&1, некоторая отладочная информация редко, но все-таки может вылезать на экран. Если вы все же захотите использовать именно эту виртуальную консоль, добавьте еще и знак & в конец последней команды, иначе оболочка будет полностью захвачена работающим процессом. С помощью таких действий можно, например, запустить mplayer вообще на отдельном сервере и без оконного менеджера (кнопка f переключает в полноэкранный режим):
или The GIMP, но с оконным менеджером Metacity без запуска самого GNOME:
Мы получаем меньшую загруженность системы, следовательно, большую производительность. А переключаться по X-серверам будем кнопками Ctrl+Alt+F7, Ctrl+Alt+F8 и так до F12. Источник:
http://www.mycomp.com.ua/ |