Вопросы и ответы 2

Вопросы и ответы
Q: Расскажите, пожалуйста, что такое "демон" в Linux?
A: Демон (от английского demon или daemon -- встречаются обе транскрипции!) представляет собой программу, выполняющуюся в фоновом режиме, незаметно для пользователя, и дополняющую операционную систему каким-либо специальным сервисом. Происхождение названия не имеет ничего общего с ужасами потустороннего мира или игрой Quake и представляет собой акроним от "Disk And Execution MONitor". Основная идея, положенная в основу демонов, состоит в том, что эта программа не вызывается пользователем в явной форме, а спокойно ожидает в памяти какого-либо определенного события. Инициатор генерации события может и не подозревать, что в дебрях оперативной памяти его подстерегает голодный демон (а иногда программа может выдать квитанцию о выполнении той или иной операции только в том случае, если она передала информацию соответствующему демону). Характерный пример — работа с принтером, при котором программа LPR передает данные демону управления печатью LPD. При постановке задачи в очередь на печать LPR даже не интересуется наличием в памяти демона печати, а только помещает печатаемый файл в каталог спулинга.

Q: У меня в файле конфигурации XF86Config прописано использование модуля DGA. Зачем он нужен?
A: DGA (Direct Graphics Access) является специфическим расширением XFree86, и в других системах X-Window не существует, или существует в другом виде. DGA позволяет прикладным программам получать прямой доступ к видеопамяти (фреймбуферу) и работать в полноэкранном режиме. Также программа может перехватывать на себя все сообщения от клавиатуры и мыши. Таким образом, этот интерфейс в какой-то мере является аналогом DirectDraw для Windows. Достоинства этого метода очевидны: он позволяет работать с железом почти напрямую и выжать максимальное быстродействие.

Q: Как получить статистическую информацию о Linux, типа сколько места свободно, кто в системе зарегистрирован и т.п.?
A: Следующие команды показывают статистическую информацию об операционной системе или о ее частях:
-- du [-abs] [path1(путь1) path2... pathN]
du — сокpащенное disk usage (использование диска). Эта команда считает размер дискового пространства данной директории и всех ее поддиректорий. du перечисляет, сколько места занимает каждая поддиректория текущей директории, и в самом низу, сколько места использует текущая директория (плюс сосчитанные поддиректории). Если вы передаете команде несколько параметров, она будет считать количество пространства, занимаемого этими файлами или директориями. Флаг 'a' будет считать размер как директорий, так и файлов. Флаг 'b' будет отображать размер файлов в байтах, а не в килобайтах. Флаг 's' будет отображать все директории, указанные в командной строке без их поддиректорий.
-- df
df является сокращением disk free. df сообщает о количестве используемого пространства. Для каждой файловой системы (вспомните, различные файловые системы находятся на разных дисках или на разных логических дисках) эта команда показывает общее количество дискового пространства, используемого пространства, доступного пространства и общий объем, используемый файловой системой. Вы можете встретиться с такими странными вещами: объем может превышать 100% или используемое пространство плюс доступное не равно общему. Это происходит потому, что Unix резервирует некоторое пространство в каждой файловой системе для администратора системы (пользователя root). Таким образом, если пользователь случайно заполняет диск, в системе есть еще немного места для действий. df не имеет никаких полезных для большинства людей опций.
- uptime
Программа uptime делает именно то, что от нее ожидают. Она печатает время, которое система была в работе, — время после последней загрузки. uptime также выдает текущее время и среднюю загруженность. Средняя загруженность — это среднее число задач, ожидающих исполнения в определенный промежуток времени. uptime показывает среднюю загруженность в течение последней минуты, пяти минут, десяти минут. Средняя загруженность около нуля означает, что система почти незанята. Средняя загруженность около единицы означает, что используются почти все ресурсы системы, но нет перенагрузки. Высокая средняя загруженность — результат исполнения одновременно нескольких задач. Удивительно, но uptime одна из немногих команд Unix, в которой вообще нет опций.
-- who
Команда who выводит список пользователей системы в настоящий момент и то, когда они вошли в систему. Если команде передать параметр 'am i' (таким образом, получится 'who am i'), она выведет информацию о текущем пользователе.
-- w [-f] [username]
Программа 'w' выводит список пользователей системы в настоящий момент, и что они делают. Эта команда сочетает в себе действия команд uptime и who. Заголовок 'w' точно такой же, как и у uptime, и каждая строка показывает идентификатор пользователя, время, когда он вошел в систему, и как долго он не предпринимал никаких действий. JCРU — общее количество времени CРU, которое занимал пользователь, а РCРU — общее количество времени CРU, которое занимает его текущая задача. Если команде 'w' передается опция 'f', она показывает, с какой удаленной системы вошел пользователь. Необязательный параметр ограничивает действие команды 'w', показывая только имена пользователей.

Q: В Линухе бывает так, что когда глючит какая-нибудь программа, то на винт выкидываются дампы памяти — core (в Midnight Commander они обозначаются красным цветом), которые едят место и вообще не нужны для нормальной работы. Как мне избавиться от них или хотя бы ограничить их размер?
A: Для решения такой проблемки есть специальная команда — ulimit. Используется в следующем виде:
ulimit <KB> — установить максимальный размер дампа <в килобайтах> ;
ulimit -c 0 — убрать дамп памяти вообще.
Для того чтобы эта операция происходила каждый раз при загрузке, вставьте в файл /etc/profile одну из вышеперечисленных команд.

Q: Я не программер, но хочу сделать так, чтобы после загрузки Linux у меня было бы меню, из которого я смог бы выбирать, в каком режиме мне работать: в текстовом, графическом или еще в чем-нибудь. Как мне быть?
A: Ниже приводится листинг простого скрипта, который позволяет реализовать поставленную задачу:

#!/bin/sh dialog --clear --title "Linux Start Menu" \ --menu "Select your working mode:" \ 11 50 4 \ 1 "Shell" \ 2 "Midnight Commander" \ 3 "X-Window Session" \ 4 "Text Editor Mode" \ 5 "Restart computer" \ 6 "Shutdown the system" 2> /tmp/menu.tmp.$$ choice='cat /tmp/menu.tmp.$$' rm -f /tmp/menu.tmp.$$ case $choice in 1) exit 0;; 2) mc;; 3) startx;; 4) vi;; 5) shutdown -r now;; 6) shutdown -h now;; esac

В первой строке скрипта мы указываем, какой командный интерпретатор мы хотим использовать. В следующих девяти строках мы описываем вызов стандартной консольной Линуксовой команды dialog, которая сама нарисует диалоговый экран с названием, указанным в параметре title, и нашим меню (что указывается параметром menu), с указанным заголовком. Параметр clear говорит, чтобы утилита dialog не забыла очистить после себя экран. Следующими параметрами идут размеры окна меню по вертикали и горизонтали, а также количество видимых одновременно пунктов меню. Затем идет описание самих пунктов меню в виде "горячая клавиша"-"заголовок". Последние параметры перенаправляют вывод во временный файл.
Утилита dialog позволяет создавать не только меню, но и другие диалоговые блоки. Для того чтобы узнать ее параметры, наберите dialog --help.
Идем дальше. Следующей строкой переменной choice мы присваиваем номер выбранного пункта в меню, которое вывелось во временный файл, а следующей же строкой удаляем этот файл. Блок, идущий далее, выполняет определенные команды, которые соответствуют выбранному пункту.
Этот текст надо набрать в файл с каким-нибудь соответствующим названием, к примеру mymenu. Далее необходимо сделать его запускаемым, для чего мы используем команду chmod +x mymenu. После чего допишем строчку mymenu в файл bashrc, который находится в вашем домашнем каталоге. Сам файл надо поместить в каталог /bin либо любой другой, в котором лежат запускаемые файлы.

Q: Как наиболее просто: определить самую большую директорию; найти самые большие файлы; определить процесс, который ест больше всего памяти?
A: Определить самую большую директорию можно следующей командой:
du -S | sort -n
Она выведет список директорий, отсортированных по размеру. Найти самые большие файлы на разделе можно так:
cd /
ls -lR | sort +4n
Команда выводит список файлов, отсортированных по размеру. Определить процесс, который ест больше всего памяти, можно так:
ps -aux | sort +4n
или
ps -aux | sort +5n
Команда выведет список процессов, отсортированных по "поедаемости" памяти.

Q: Я работаю в KDE. Хотелось бы узнать, есть ли какие-нибудь клавиатурные комбинации для простейших действий типа работы с окном?
A: Список клавиатурных ускорителей:
Alt-Esc или Control-Esc — показывает менеджер сессии КDE, где вы можете переключиться на нужную вам программу или выйти из KDE; Alt-Tab или Alt-Shift-Tab — переход от одного окна к другому; Ctrl-Tab или Ctrl-Shift-Tab — переход от одного рабочего стола к другому; Alt-F2 — командная строка; Alt-F3 — меню управления окном; Alt-F4 — закрыть текущее окно; Ctrl-F[1..8] — переключиться на указанный рабочий стол; Ctrl-Alt-Esc — уничтожить окно (любое окно, на которое вы щелкнете мышью, будет уничтожено); Ctrl-Alt-Backspace — аварийный быстрый выход из KDE (без сохранения!), используйте как последнюю меру; Ctrl-Alt-Numpad "+" — переход к следующему разрешению экрана; Ctrl-Alt-Numpad "-" — переход к предыдущему разрешению экрана. Кроме того, вы сами можете назначить любую клавиатурную комбинацию некоторым стандартным действиям. Для этого воспользуйтесь KDE Control Center.

Q: Линукс перед логином выдает приветственную надпись. Как ее изменить?
A: Все довольно просто. Само приветствие хранится в файлах /etc/issue и /etc/issue.net. Первый предназначен для показа на локальной машине, второй — для сети. Но попробовав изменить эти файлы и перезагрузив компьютер, вы увидите, что ничего не изменилось. Как же так? Все дело в том, что в загрузочном скрипте /etc/rc.d/rc.local есть команды, которые при каждой перезагрузке переписывают вышеописанные файлы. Чтобы этого не происходило, надо убрать из скрипта строчки, содержащие команды перезаписи, или просто закомментировать их. Обычно перед этими строчками написан комментарий, в котором и говорится, что они делают. Для Linux Mandrake это строчки с 38 по 57.

Q: У меня есть некоторый скрипт. Я бы хотел, чтобы он выполнялся при загрузке.
A: Делаем просто: смотрим в файле /etc/inittab, какой из runlevel (уровень запуска) является дефолтовым. Нужно смотреть строчку вида "id:X:initdefault", где X — это и есть необходимая цифра. Обычно это 3, если автоматически грузится консольный режим, либо 5 — если графический. Далее заходим в каталог /etc/rc.d, находим каталог вида rcX.d, где вместо X подставляем номер runlevel'a, и заходим в него. Таких каталогов несколько, каждый для разного уровня запуска. В них находятся ссылки на скрипты, выполняющиеся во время загрузки на данном runlevel'e. Эти скрипты обычно располагаются в /etc/init.d. Туда же стоит поместить и ваш скрипт. Далее, в каталоге со ссылками, который соответствует нашему уровню запуска, надо создать символическую ссылку на наш скрипт. Делается это командой ln. Формат запуска:
ln -s <путь_к_скрипту_и_его_ имя> <название_ссылки>
Название должно быть вида SxxName. Здесь xx — номер, чем он больше, тем позже будет выполняться скрипт. Т.е., если 99 — то он будет выполнен последним. Стоит заметить, что можно отключить запуск некоторых сервисов или скриптов, просто удалив соответствующие ссылки. Но делать это надо с большой осторожностью.

Q: Где в KDE можно настроить ассоциации файлов?
A: Смотрите KDE Control Center — File Browsing — Ассоциации файлов. Типы файлов разбиты на группы, но есть возможность пролистывать и весь список.

Ну, а напоследок одна новость: опубликованные ранее статьи и некоторый материал по Linux можно найти на моем сайте http://www.linux4u.narod.ru .
X-Stranger xstranger@tut.by


(c) компьютерная газета




Компьютерная газета. Статья была опубликована в номере 25 за 2001 год в рубрике soft :: linux

©1997-2024 Компьютерная газета