Подготовка загрузочных дискет
Вам потребуются 3 дискеты. Первую сделайте загрузочной дискетой для DOS. Скопируйте на неё fdisk.exe и sys.exe.
FORMAT /S A: COPY FDISK.EXE A: COPY SYS.EXE A:
Вторую сделайте аварийной (emergency) дискетой для Windows 98. Третья дискета вам потребуется временно для GRUB.
Подключение физического диска
Итак, предположим, что имеется виртуальный компьютер, на котором работает ОС Windows, запускаемая с виртуального диска C:, а также раздел жесткого диска (пусть это будет раздел /dev/hda2), отформатированныйFAT, FAT32 или NTFS, в зависимости от варианта ОС. Естественно, возникает желание получить доступ к этому разделу из виртуального компьютера. Попытаемся подключить этот раздел в качестве диска D: виртуального компьютера. Для этого надо выполнить следующую последовательность действий.
Добавить пользователя, от имени которого будет запускаться VMware, в группу disk (это делается путем редактирования суперпользователем файла /etc/group). Убедиться в том, что подключаемый физический диск не смонтирован в файловой системе базового компьютера. Чтобы создать файл описания физического диска, нужно запустить систему VMware, выбрать нужную конфигурацию (но не включать питание виртуального компьютера) и открыть пункт меню «Settings > Configuration Editor», после чего щелкнуть по значку «+» слева от указания на диски IDE или SCSI. Найти строку, в которой указано, что соответствующий диск не установлен («Not installed») и установить на нее курсор. Так, наличие строки «P-S Not Installed» среди дисков IDE будет означать, что виртуальная машина считает: данный физический диск подключен как второй диск (slave) к первому контроллеру (primary IDE controller). Соответственно, если в группе дисков SCSI найдется строка «SCSI 0:1 Not Installed», то для виртуального компьютера такой диск будет иметь номер 1 на SCSI-контроллере. Если строки «Not Installed» не найдется, это означает, что к виртуальному компьютеру подключено уже 4 виртуальных диска IDE (или, соответственно, 7 дисков SCSI), и для подключения физического диска надо отключить один из них. В поле «Device Type» установить (выбрать) значение «Raw Disk». В поле «Name» ввести имя для файла описания физического устройства (например, raw_hda.dsk). Щелкнуть по клавише «Create Raw Disk». В появившейся строке ввода указать имя физического диска (не раздела, а именно диска, например, /dev/hda для диска IDE или /dev/sda для SCSI), в результате чего появится окно со списком разделов на данном физическом диске. Для каждого раздела надо указать права доступа к нему виртуальной машины.
No Access — виртуальный компьютер не сможет ни читать, ни писать в данный раздел. Этот вариант используют только в том случае, если необходимо проконтролировать попытки несанкционированного обращения к разделу. Read/Write — виртуальный компьютер будет иметь возможность и читать, и производить запись в раздел. Этот вариант выбирают только для разделов, содержащих файловые системы, «родные» для операционной системы виртуального компьютера. Read-Only — виртуальный компьютер будет иметь возможность только читать из раздела. Это вариант для всех остальных разделов на диске.
Щелкнуть по клавише «Save». В некоторых случаях в ответ на это может появиться окно с сообщением, что два раздела на диске пересекаются (имеют общие сектора) и, следовательно, для них должны быть заданы одинаковые права доступа. Файл описания физического диска будет записан в каталог, где хранятся остальные файлы виртуальной машины (что-то вроде /home/user1/vmware/nt4/). Щелкнуть по клавише «Install», чтобы присоединить выбранный физический диск к виртуальному компьютеру. Как и в случае виртуального диска, можно задать для физического диска один из трех возможных режимов работы [1]: «с записью» («Persistent»), «без записи» («Nonpersistent») или «с отложенной записью» («Undoable»).
После завершения этой последовательности действий можно загрузить ОС в виртуальном компьютере, и в системе появится новый диск.
Для того чтобы отключить физический диск от виртуального компьютера (например, чтобы смонтировать его в файловой системе базового компьютера), следует открыть Редактор конфигурации и щелкнуть по клавише «Remove» на вкладке, соответствующей данному диску. На этой же вкладке есть клавиша «Edit Raw Disk...», с помощью которой можно откорректировать права доступа к разделам диска, определяемые файлом описания физического диска. Это может понадобиться, например, в тех случаях, когда был заменен физический диск или изменено разбиение его на разделы.
Подключение к существующей сети в варианте «Bridged»
Рис. 2. Настройка сетевых средств в ОС виртуального компьютера |
Базовый компьютер, работающий под управлением Linux, уже подключен к физической сети, на нем работает сервер Samba, предоставляющий некоторые каталоги в распоряжение других рабочих станций сети. Создание виртуальной сети из виртуальных компьютеров не планируется. В таком случае нужно сконфигурировать сетевые службы VMware в варианте «Bridged networking», получить у администратора сети реальный IP-адрес, маску сети, адреса серверов DNS и WINS и настроить сетевые службы ОС на виртуальном компьютере с использованием этих адресов. Пример такой настройки приведен на рис. 2, а на рис. 3 показано, как выглядит «Сетевое окружение» для небольшой сети из двух физических компьютеров. На Linux-компьютере запущена система VMware и виртуальный компьютер VMware, подключенный к физической сети по рассматриваемому варианту. Компьютер VMware выступает полноправным участником сети и получает доступ к дискам базового компьютера (приведенный снимок сделан в окне экрана виртуального компьютера).
Рис. 3. Доступ к диску базового компьютера через окно «Сетевое окружение» |
Необходимо отметить одну особенность настройки сетевых средств на виртуальном компьютере, проявляющуюся тогда, когда ОС виртуального компьютера загружается с физического диска: надо обязательно создать отдельный профиль оборудования для загрузки Windows в виртуальном компьютере. В этом профиле необходимо отключить реальную Ethernet-плату, в противном случае могут возникнуть трудности с подключением адаптера AMD PCnet PCI, который должен работать в виртуальном компьютере. Впрочем, то же самое верно и для других вариантов.
Подоболочки
Рассмотрим два почти аналогичных сценария #!/bin/bash # Сценарий 1 NUM=”one”; (NUM=”two”; echo $NUM;); echo $NUM
#!/bin/bash # Сценарий 2 NUM=”one”; {NUM=”two”; echo $NUM;}; echo $NUM
Сценарий 1 выведет на экран следующую информацию:
two
one
А сценарий 2
two
two
Если список команд заключен в фигурные скобки, то он выполняется в текущей оболочке, а если в круглые – то в подоболочке. Механизм подоболочек, как вы уже успели догадаться, связан с областью действия переменных. Как и в любом другом языке программирования, в bash существуют два типа переменных: глобальный и локальные. Поскольку переменные в bash не описываются в начале программы, как в других языках, например, Pascal, внутри блока можно использовать как глобальные переменные (описанные в основном блоке сценария), так и локальные (описанные в этом блоке, при условии, что этот блок является подоболочкой).
В этой статье я попытался объять необъятное, поэтому совсем не удивительно, что некоторые возможности bash (функции, циклы until и select, протоколирование, обработка сигналов…) не рассмотрены, а некоторые рассмотрены не очень подробно (команда test). Возможно, эти возможности я рассмотрю в своих последующих статьях. А сейчас могу предложить вам список ссылок, посвященных bash, shell, а также Unix-системам вообще: http://dkws.narod.ru/linux/books_.html
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
Подстановка переменных
Zsh имеет множество расширений в области различных подстановок. По назначению подстановки можно разделить на две группы: Подстановки в строке приглашения и прочие подстановки. Подстановки в строке приглашения могут использовать функции из группы "прочие подстановки".
Подстановка переменных Подстановка значений
Интерпретатор bash предоставляет нам довольно гибкий механизм подстановки переменных. При этом переменная будет использоваться не всегда, а в зависимости от определенных обстоятельств. (см. таблицу 3).
Таблица 3.
${переменная:=значение} | Значение присваивается переменной, если она не определена или является пустой строкой. |
${переменная:?сообщение} | Если переменная не определена или является пустой строкой, выводится сообщение |
${переменная:+значение} | Если переменная инициализирована (определена), вместо нее используется указанное в конструкции значение. (*) |
${переменная} | Если переменная определена, подставляется ее значение. Скобки используются лишь для того, если после переменной стоит символ, который может «приклеиться» к имени переменной. |
${переменная:-значение} | Если переменная определена и не является пустой строкой, подставляется ее значение, иначе подставляется значение, указанное в конструкции. (*) |
(*) Реальное значение переменной не изменяется.
Пример: ${2 :? “Не хватает второго параметра”}
При подстановке команд нужно использовать обратные одинарные кавычки (они расположены под символом тильды на клавиатуре). Подставлять можно не только одну команду, а целые списки команд:
USERS=‘who | wd –l‘
UP=‘date; uptime‘
I=‘whoami‘
В первом случае мы получим количество пользователей работающих в системе, а во втором последовательно записанные результаты выполнения команд date и uptime. В третьем случае мы просто получим логин пользователя, под которым мы сейчас работаем в системе.
Подставлять результаты выполнения можно не только в переменные, а и в другие команды, например
grep ‘id –un‘ /etc/passwd
Подстановки истории
Система подстановок истории zsh немного отличается от подстановок истории в командном процессоре bash. В zsh сделано много добавлений, которые позволяют получить доступ к нужным аргументам выполненных команд, а также выполнить разные модификации аргументов.
Подстановки истории zsh позволяют указать какое слово из команды нужно задействовать. Для этого используются следующие указатели слов:
:0 -- первое слово в командной строке
:n -- n-й аргумент
:^ -- 1-й аргумент (аналогично :1)
:$ -- последний аргумент строки
:X-Y -- аргументы с X по Y
:X- -- все аргументы начиная с X кроме последнего
:* -- все аргументы
:X8 -- все аргументы начиная с X (аналогично :X-$)
Кроме этого, в подстановках истории, после указателей слов, можно использовать модификаторы, которые позволяют выполнять различные подстановки в истории. Так, например, модификатор :h работает подобно использованию команды dirname, а модификатор :t работает подобно команде basename. Полный список модификаторов можно получить в руководстве по zsh.
Подстановки в строке приглашения
Zsh позволяет пользователю очень гибко настроить строки приглашения командного процессора. Для этого используются различные подстановки. С их помощью можно выделять цветами части текста в командной строке, помещать строку с текущим каталогом в строку окна терминала и многое другое.
Для приглашения командной строки существует разделение на левую и правую часть приглашения. Кроме привычных переменных, таких как PS1 и PS2, также существуют их аналоги, имена которых начинаются с буквы R. Например, это позволяет вынести в правую часть часы, которые показывают время выведения приглашения.
Полное описание всех возможных подстановок для строки приглашения можно найти в справке по zsh.
Поиск файлов
find / -name "имя_файла"
Найти файл "имя_файла" в вашей файловой системе, начиная с каталога "/". "имя_файла" может содержать маски (*,?). Это очень мощная команда. У нее есть много параметров, позволяющих производить поиск файлов различными методами, например, по дате, размеру, разрешения на доступ, владелец, .... Так что, некоторые поисковые запросы могут занять несколько минут на составление. Смотрите info find. А здесь приведены несколько примеров использования find.
find $HOME -name core -exec rm -f {} \;
Вышеуказанная команда ищет файлы с именем "core", начиная с вашей домашней директории. Для каждого найденного файла она выполняет команду "rm -f" (Удаление файла без подтверждения). Параметр {} замещается найденным файлом, а символ "\" завершает список команд.
find /dev -user "peter" |more
Вышеуказанная команда ищет список устройств, владельцем которых является "peter". Печать имени файла является "действием по умолчанию" для команды. Его не надо определять специально, если это все что необходимо сделать.
find /home/peter -nouser -exec ls -l {} \; -ok chown peter.peter {} \;
Найти файлы, у которых отсутствует владелец в директории /home/peter. Вывести файлы в длинном формате. При этом присвоить им владельца "peter" и группу "peter". Вам необходимо иметь права "root" для того чтобы сменить владельца файла.
locate имя_файла
Найти файлы, имя которых содержит подстроку "имя_файла". Проще и быстрее, чем предыдущая команда, но основывается на базе данных, которая обновляется в полночь. Чтобы произвести ее обновление на данный момент, я могу (как "root"): updatedb&.
which исполняемый_файл
Показывает путь к исполняемому файлу, который будет выполнен, если набрать в командной строке "исполняемый_файл". Например, эта команда:
which netscape
в моей системе:
/usr/bin/netscape
whereis команда
Печатает расположение двоичных и исходных файлов, а так же файлов руководства "команда".
rgrep -r 'celeste' . |more
grep -r 'celeste' . |more
(Две команды, используйте ту, которая сработает в вашей системе.) Показывает все файлы текущей директории и ее поддиректорий (параметр "-r" значит "рекурсивно") содержащие строку "celeste". Показывает имена файлов и строки, содержащие подстроку поиска.
kfind &
(в X терминале). Графическая оболочка для find и grep. Очень неплохо. Ко всему прочему kfind исполняется в отдельном окне, оставляя терминал свободным для использования.
Поиск утерянных данных
Мы прибегли к Linux Ext2fs undeletion mini-HOWTO, Аарона Крэна (Aaron Crane); Ext2fs undeletion of directory structures mini-HOWTO, Томаса Эриксона (Tomas Ericsson); программе recover Тома Пыке (Tom Pycke); патчу от Торстена Вернера (Torsten Werner) для программы debugfs на платформе i386.
Статья является переводом текста Dru
Автор: Станислав Лапшанский, slapsh@kos-obl.kmtn.ru
Опубликовано: 21.05.2002
Оригинал: http://www.softerra.ru/freeos/17921/
Статья является переводом текста Dru Lavigne, опубликованного по адресу: http://www.onlamp.com/pub/a/bsd/2002/03/14/FreeBSD_Basics.html.
В предыдущей части статьи я познакомил вас с командой поиска find. Сегодня я продолжу свой рассказ и продемонстрирую вам некоторые другие возможности этой полезной команды.
Давайте продолжим с места, на котором мы остановились в прошлый раз: find . -atime +7 -o -size +‘expr 10 \* 1024 \* 2‘ -print
Как вы помните, эта команда ищет файлы в текущем каталоге и его подкаталогах (текущий каталог указывается первым параметром «.»), к которым не обращались более семи дней («-atime +7») или (на операцию логического «ИЛИ» указывает параметр «-o») размер которых превышает определенное значение (ключ «-size +»). Для подсчета размера используется команда expr. Поскольку мне хотелось найти файлы более 10Мб, а find оперирует размерами указанными в 512-ти байтных блоках, то мне нужно умножить 10 на 1024 и на 2 (т.к. 512*2 = 1024). (Не стоит забывать о возможности указания размера искомых файлов в байтах – для этого после числа надо, без пробела, поставить символ «с» – прим. переводчика).
Заметьте, что я использовал символ обратного апострофа «‘» (он находится в левом верхнем углу клавиатуры). Когда вам требуется в системе UNIX подставить в параметры одной команды в результат работы другой, следует поместить команду, результат которой вам необходим в обратные апострофы. Это так называемая подстановка команд. Помещая команду производящую вычисления между обратными апострофами, я тем самым подставляю результат вычисления в параметр ключа «-size» команды find.
Последнее на что я хочу обратить ваше внимание, это то что я поставил перед символами «*» обратные слеши «\». Дело в том, что в вычислениях «звездочка» означает умножение, тогда как интерпретатор команд считает его подстановочным символом. Однако если перед «звездочкой» поставить знак обратного слеша, интерпретатор команд не будет считать его символом подстановки, в то время как команда expr воспримет пару символов «\*» как знак умножения.
Наконец перейдем к следующим примерам. Давайте будем считать, что я имею некий каталог, содержащий большую ветвь файловой системы, в котором я хочу найти все файлы удовлетворяющие определенным условиям, после чего эти файлы следует удалить. Существует несколько способов сделать это при помощи команды find. Давайте попробуем их сравнить.
В моем домашнем каталоге есть подкаталог tmp, в котором, в свою очередь, находится подкаталог tst. В каталоге tst содержится много файлов и каталогов, некоторые из которых имеют расширение .old. Давайте подсчитаем сколько файлов находится в каталоге tst: cd ~/tmp/tst find . -print | wc -l 269
Обратите внимание, что команда find печатает каждый найденный файл в одной строке. Используя канал я передам результат работы find команде wc (word count – подсчет слов), заставив ее при помощи ключа -l считать количество строк. В результате выполнения этой операции я узнал, что в каталоге ~/tmp/tst 269 файлов (включая каталоги, поскольку в UNIX каталог на самом деле является особым видом файла). Посмотрим сколько из них имеет расширение .old: find . -name "*.old" -print | wc -l 67
Как мне теперь удалить эти файлы? Один из способов – использование ключа -exec, с командой rm в качестве параметра, например так: find . -name "*.old" -exec rm {} \;
Когда команда выполнится, я могу повторить поиск для проверки наличия файлов с расширением .old: find . -name "*.old" -print | wc -l 0
Теперь мы убедились, что файлы удалены. Однако, для удаления большого количества файлов, такой способ не является лучшим. Дело в том, что когда вы используете ключ -exec, для каждого найденного файла создается отдельный процесс для выполнения команды – параметра ключа -exec. Это скорее всего не создаст проблем на вашем домашнем компьютере, где вы собираетесь найти всего несколько файлов, однако если вы попытаетесь таким способом найти и обработать сотни или тысячи файлов на рабочем сервере, то проблемы появятся – дело в том, что к сожалению этот метод требует наибольшее количество ресурсов и работает медленнее чем все остальные.
Воспользуемся для удаления файлов другим способом: find . -name "*.old" -print | xargs rm
Заметьте, что в данном случае не используются завершающие символы «\;», так как они необходимы только при использовании ключа «-exec». Используя команду xargs в этом примере, я опять стираю все файлы, оканчивающиеся на .old, однако в отличие от предыдущего способа, при этом создается только один процесс. Команда find создает список найденных и подлежащих удалению файлов. Этот список передается команде xargs, которая преобразует строки списка в одну большую строку, разделенную пробелами, затем эта строка передается команде rm.
И наконец воспользуемся третьим способом удаления файлов, используя ключ «-delete» команды find: find . -name "*.old" -delete
Эта команда имеет самый простой синтаксис из всех трех и, к тому же, является самым эффективным способом удаления файлов. Ключ «-delete» вообще не требует создания отдельного процесса, так как все операции по удалению файлов производятся процессом find. К тому же, этот способ будет работать в любом случае, в отличие от второго способа использованием команды xargs, которая может привести к ошибке, если будет найдено слишком много файлов и они не смогут убраться в буфер командной строки. Если вы будете что-нибудь искать в многоуровневой системе каталогов или имена найденных файлов будут слишком длинные, то скорее всего вы натолкнетесь на это ограничение. Если вас интересует размер этого буфера, воспользуйтесь следующей командой: sysctl -a | grep kern.argmax kern.argmax: 65536
Число 65536 означает максимальное количество байт (символов) в буфере аргумента.
Вас может заинтересовать какие файлы удалит команда find. В моем примере я просто удаляю старые файлы из моей тестового каталога. Если вы боитесь, что команда find может удалить некоторые нужные вам файлы, для начала выполните команду: find . -name "*.old" -print
Она выведет вам список файлов, подходящих под образец. Если список файлов соответствует вашим ожиданиям, воспользуйтесь ключом «-delete», как описано выше. Однако есть и другой способ – вы можете воспользоваться ключом «-ok»: find . -name "*.old" -ok rm \;
Ключ «-ok» заставит команду find выдавать запрос перед удалением файла. Обратите внимание, что для удаления я использовал команду rm, а не ключ «-delete». Символы окончания команды «\;» требуются как и в случае ключа «-exec».
Давайте двинемся дальше и посмотрим на работу других ключей команды find.
При помощи ключа «-ls» можно получить следующую информацию о найденных файлах: номер inode в файловой системе, размер в блоках, права доступа, количество жестких ссылок (hard link), имя владельца, группу, размер в байтах, время последней модификации, а так же имя найденного файла. Следующая команда показывает мне первые десять подкаталогов в моем домашнем каталоге. Обратите внимание, на то, что для поиска каталогов используется ключ «-type» с параметром «d»: cd find . -type d -ls | head 976142 8 drwxr-xr-x 39 genisis wheel 4096 Mar 3 17:52 . 1413099 2 drwxr-xr-x 2 genisis wheel 512 Mar 3 13:38 ./pdfs 373539 2 drwxr-xr-x 2 genisis wheel 512 Feb 6 12:38 ./tst 1087249 2 drwxr-xr-x 2 genisis wheel 512 Oct 4 07:29 ./perlscripts 650764 2 drwx------ 2 genisis wheel 512 Mar 3 17:52 ./mail 706616 2 drwx------ 4 genisis wheel 512 Sep 22 14:29 ./.kde 706635 2 drwx------ 11 genisis wheel 512 Nov 7 12:36 ./.kde/share 706636 4 drwx------ 3 genisis wheel 1536 Mar 2 18:38 ./.kde/share/config 785986 2 drwx------ 2 genisis wheel 512 Sep 22 14:36 ./.kde/share/config/colors 706682 2 drwx------ 3 genisis wheel 512 Mar 2 18:36 ./.kde/share/fonts
Давайте попробуем еще чему-нибудь научиться используя ключ «-ls». Ранее для того что бы узнать сколько файлов подходит под определенный поисковый запрос, мы использовали перенаправление вывода в команду wc -l. Воспользуемся этим для подсчета количества подкаталогов в моем домашнем каталоге: find . -type d -print | wc -l 256
На самом деле он содержит только 255 подкаталогов, так как первый результат поиска – сам родительский каталог. Теперь попробуем побольше выяснить о структуре этих каталогов, используя следующую конструкцию: find . -type d -ls | awk '{print $4 - 2, $NF}' | sort -rn | head 37 . 26 ./.kde/share/apps/kio_http/cache 18 ./.kde/share/apps 15 ./.gimp-1.2 9 ./tmp/tst 9 ./.kde/share 8 ./tmp/tst/h 8 ./tmp/tst/g 8 ./tmp/tst/f 8 ./tmp/tst/e
Великолепно! Мы видим, что в моем домашнем каталоге «.» – 37 подкаталогов, а в каталоге «./.kde/share/apps/kio_http/cache» – 26 и так далее. Теперь разберемся как работает эта команда. Для начала я воспользовался ключом «-ls», который дает нам полную информацию о каждом найденном каталоге. Эта информация передается утилите awk, которая используется для извлечения данных из определенных полей. Вспомните, что результатом работы ключа «-ls» является список, состоящий из следующих полей: номер inode, количество блоков, права, количество ссылок и т.п. Я запрограммировал awk, так что бы он брал информацию из четвертого столбца (который содержит количество ссылок и в awk обозначается $4) и вычел из него двойку (так как меня не интересуют каталоги «.» и «..»). Еще мне необходимо название каждого каталога и поскольку оно содержится в самом последнем столбце, я воспользовался переменной $NF для получения этой информации. Поместив эти инструкции в фигурные скобки «{}», я запрограммировал awk на выполнение этих действий с каждой строкой данных, поступающих от команды find. В свою очередь, результат выполнения команды awk передается в команду sort. Используя ключи «-rn», я задаю обратный порядок сортировки (от большего к меньшему), для того что бы увидеть, какие каталоги содержат больше подкаталогов. Так как я не хочу смотреть на весь получившийся результат, я пользуюсь командой head, передавая ей результат работы команды sort, в результате чего получаю лишь первые десять строк этого результата.
Следующий ключ, на котором мы остановимся – «-perm». Если мы хотим найти все файлы, которые имеют права доступа «777», что означает доступ на чтение, запись и выполнение для всех, то нам следует воспользоваться командой: find . -perm 777 -print
Вышеуказанная команда ищет файлы с правами «777». Если вы озабочены поиском файла в правах которого установлен конкретный бит (независимо от остальных), то воспользуйтесь чем-нибудь подобным (обратите на знак «-» перед числом задающим права доступа – прим. переводчика): find . -perm -4000 -print
Этот пример выдаст вам только те файлы, у которых установлен SUID-бит. Другая полезная команда выглядит так: find . -perm -0002 -print
Она найдет вам файлы, которые доступны «на запись» для «всех». Заметьте, что -0002, -002, -02 и -2 дадут вам одинаковый результат, так как нули в начале подразумеваются.
Последние два ключа, которые я опишу в этой статье, полезны при резервном копировании или репликации каталогов. Начнем с ключа «-depth». Скажем я хочу провести резервное копирование моего домашнего каталога в смонтированный каталог /backup (имеется в виду копирование со всеми правами и т.п. – прим. переводчика). Я могу это сделать следующей командой: find . -depth -print | cpio -dump /backup
Эта команда может выполняться и без ключа «-depth», но не всегда. По умолчанию find создает список найденных файлов начиная с места указанного в этой команде, в моем случае это «.» или мой домашний каталог. Этот список состоит из названия каталога, после которого идет содержимое этого каталога. Может возникнуть ситуация, когда исходный каталог имеет права только на чтение, и команда cpio, сначала создав каталог с такими правами, уже не сможет поместить туда файлы, которые содержатся в исходном каталоге (т.е. создается пустой каталог, только для чтения, в котором производится попытка создать файлы – прим. переводчика).
Однако, если вы вспомните о существовании ключа «-depth», то команда find будет формировать список найденных файлов начиная с нижних уровней вложенности. Это означает, что содержимое каталога будет в списке раньше чем его название. А это в свою очередь означает, что файлы, находящиеся в исходном каталоге, будут помещены cpio в целевой каталог раньше, чем она наложит на него права.
А как поступить, если мне не хочется реплицировать всю структуру домашнего каталога, а только его часть? Здесь может помочь ключ «-prune». Давайте представим, что я хочу скопировать весь мой домашний каталог, за исключением каталога tmp. Я могу поступить следующим образом: find . -type d -name tmp -prune -o -print | cpio -dump /backup
Синтаксис команды выглядит немного знакомо: я использую ключ «-name» для нахождения всех каталогов («-type d») с названием tmp и все такие каталоги пропускаю «-prune». Затем идет логическое «ИЛИ» («-o»), в результате которого все остальные найденные файлы печатаются («-print») и передаются команде cpio.
Надеюсь, что примеры приведенные в этих двух статьях, посвященных поиску при помощи команды find, помогут вам разобраться с ее синтаксисом и возможностями.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
Статья является переводом текста Dru
Автор: Станислав Лапшанский, slapsh@kos-obl.kmtn.ru
Опубликовано: 23.04.2002
Оригинал: http://www.softerra.ru/freeos/17569/
Статья является переводом текста Dru Lavigne, опубликованного по адресу: http://www.onlamp.com/pub/a/bsd/2002/02/21/FreeBSD_Basics.html.
Программа поиска «find» является одной из самых полезных утилит, всегда находящихся в любой UNIX-системе.
В этой статье я расскажу вам о синтаксисе команды find и продемонстрирую ее применение на нескольких практических примерах.
Сама по себе команда find имеет очень простой синтаксис: find где_искать ключи
Часть команды которую мы назвали «ключи» на первых порах может показаться вам запутанной. К тому же ее конкретная запись может варьироваться в зависимости от той версии UNIX, которой вы пользуйтесь в данный момент. Если вы работаете на новой для вас системе, то вероятно вам придется заглянуть на страницу руководства посвященную команде find (man find – прим. переводчика). Вот список самых основных ключей, которые вы можете использовать во FreeBSD:
-name | искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки |
-type | тип искомого: f=файл, d=каталог, l=связь (link) |
-user | владелец: имя пользователя или UID |
-group | владелец: группа пользователя или GID |
-perm | указываются права доступа |
-size | размер: указывается в 512-байтных блоках или байтах (признак байтов – символ «c» за числом) |
-atime | время последнего обращения к файлу |
-ctime | время последнего изменения владельца или прав доступа к файлу |
-mtime | время последнего изменения файла |
-newer | искать файлы созданные позже указанной даты |
-delete | удалять найденные файлы |
-ls | генерирует вывод как команда ls -dgils |
показывает на экране найденные файлы | |
-exec command {} \; | выполняет над найденным файлом указанную команду; обратите внимание на синтаксис |
-ok | перед выполнением команды указанной в -exec, выдает запрос |
-depth | начинать поиск с самых глубоких уровней вложенности, а не с корня каталога |
-prune | используется, когда вы хотите исключить из поиска определенные каталоги |
Я покажу вам на примерах, как использовать и сочетать эти ключи при поиске. Однако перед этим давайте поглядим для чего может использоваться команда find. Если вы воспользуйтесь для этого командой whatis, то результат ее работы может вас удивить: whatis find find(1) -- walk a file hierarchy (обход иерархии файлов)
В двух словах, команда find предназначена для рекурсивного поиска в каталогах различных файлов, отбирая их по указанным вами ключам. На первый взгляд это может показаться небольшим достижением, однако не следует забывать, что большая часть UNIX-утилит не может «прогуляться» по каталогу и всем его подкаталогам. Поэтому эта способность может быть крайне полезна, так как find может не только находить различные файлы, но и проводить над ними разнообразные операции.
Давайте начнем с нескольких простых примеров, для того что бы потом перейти к более сложным. Самый простой поиск вы можете провести напечатав следующее: find . -print
Поскольку символ точки «.» означает текущий каталог, то эта команда найдет и напечатает (-print) на терминале все файлы находящиеся в текущем каталоге, а так же во всех подкаталогах.
В FreeBSD ключ «-print» подразумевается по умолчанию, так что даже если вы забудете его написать, вы получите такой же результат: find .
Однако будет правильнее, если вы выработаете в себе привычку писать «-print», так как на многих UNIX-системах «-print» не является подразумеваемым выражением.
Для того что бы найти все файлы в вашем домашнем каталоге, сначала вы должны увериться в том, что находитесь именно там, а затем повторить команду поиска: cd find . -print
Команда cd выполненная без параметров вернет вас в ваш домашний каталог. Поскольку команда find может использоваться для выполнения серьезных действий со значительными последствиями, всегда будет правильным сначала перейти в тот каталог, в котором вы хотите производить эти действия. В этой статье я подразумеваю, что вы находитесь в вашем домашнем каталоге. Итак, что бы выполняемые действия не нанесли необратимых изменений в вашей системе, не покидайте домашний каталог.
Приведенные примеры показали как просто использовать команду find. Однако скорее всего вы хотите найти нечто конкретное, когда обращаетесь к find. С этого места в игру вступают другие ключи команды find. Попробуем найти файл по его имени: touch file1 find . -name file1 -print ./file1
Давайте разберемся, что я сейчас сделал. Я создал пустой файл с именем file1 при помощи команды touch. Затем я приказал find поискать в моем текущем каталоге («.») файл с именем («-name») file1 и напечатать («-print») результат поиска на экране. Теперь я могу сказать, что в моем домашнем каталоге и содержащихся в нем подкаталогах, есть лишь один файл с именем file1, так как команда find выдала одну строку с именем найденного файла.
Обычно, мы прибегаем к помощи команды find, когда нам необходимо найти более одного файла. Например вам может понадобиться найти все файлы с определенным расширением. Я имею привычку скачивать большое количество pdf-файлов и, при этом, часто забываю сохранять их в каком-то определенном месте. Иногда я складываю эти файлы в каталог с названием pdfs. Когда меня посещает такое желание, я использую команду find для поиска pdf-файлов во всех подкаталогах моего домашнего каталога: find . -name "*.pdf" -print ./pdfs/50130201a.pdf ./pdfs/50130201b.pdf ./pdfs/50130201c.pdf ./pdfs/IWARLab.pdf ./pdfs/DoS_trends.pdf ./pdfs/Firewall-Guide.pdf ./2000_ports.pdf
Это значит, что я был аккуратен последнее время, так как только один файл не находится в «правильном» подкаталоге.
Заметьте, что для того что бы команда find работала, я заключил образец *.pdf в кавычки, написав "*.pdf", а не просто *.pdf. Существуют еще два способа правильного написания образцов. Эти две команды дадут одинаковый результат: find . -name \*.pdf -print find . -name '*.pdf' -print
Давайте добавлять к этой команде другие команды и смотреть, что в результате получится. Что если нас интересуют только те файлы, которые находятся не в каталоге pdfs? Давайте повторим команду find, но в данном случае переправим ее вывод команде grep, в результате чего мы получим только одно имя: find . -name "*.pdf" -print | grep -v "^\./pdfs/" ./2000_ports.pdf
Отлично, команда работает, однако ее синтаксис выглядит устрашающе. Разберем его по частям. Когда вы используете grep -v, вы создаете инвертированный фильтр. Это значит, что grep будет выбирать из входного потока все строки, в которых НЕ содержится указанный образец. В моем случае, меня не интересуют файлы, которые находятся в каталоге ./pdfs/, я исключаю их используя инверсный фильтр. Обратите внимание, что выражение записано в кавычках. Я так же добавил в фильтр параметр ^\. Символ степени «^» говорит команде grep, что образец надо сравнивать только с началом строки. Обратный слеш «\» нужен для того, что бы команда grep не воспринимала точку «.» как специальный символ. Сложенный вместе, такой образец скажет команде grep, показать мне файлы которые не лежат в каталоге ./pdfs/. Вот таким образом я почил желаемый результат.
Давайте наберемся смелости и сделаем что-нибудь более полезное, чем просто просмотр списка файлов. Попробуем использовать find для того что бы не просто найти необходимые файлы, но и переместить их в правильный каталог: find . -name "*.pdf" -print | grep -v "^\./pdfs/" | xargs -J X mv X ./pdfs/
Для того что бы убедиться в том, что это сработало, выполним первоначальную команду find: find . -name "*.pdf" -print ./pdfs/50130201a.pdf ./pdfs/50130201b.pdf ./pdfs/50130201c.pdf ./pdfs/IWARLab.pdf ./pdfs/DoS_trends.pdf ./pdfs/Firewall-Guide.pdf ./pdfs/2000_ports.pdf
Посмотрим, каким образом работает эта конструкция. В то время как grep заканчивает фильтрацию вывода команды find, мы передаем результаты его работы команде xargs, для завершения операции. Ключ J говорит xargs взять все полученные строки и подставить их в указанную команду. Например перед вызовом команды find я не знал сколько файлов придется перемещать – такой файл может быть один, или их может быть несколько. Вне зависимости от того, сколько файлов будет найдено, мне необходимо что бы все они были перемещены в каталог pdfs. Это сделать нам поможет маленькая магия ключа J. Для того чтобы ключ J сработал правильно, я определил символ «X» и поместил его по обоим сторонам команды mv. (Я честно перевел это, вы, я думаю, честно прочитали. На самом деле так никто не делает. Во второй части этой статьи вы узнаете как пользоваться ключом «-exec», который как раз и предназначен для подобных действий – прим. переводчика).
Помните, что имена файлов в системе UNIX не обязательно имеют расширения. Поэтому вам может понадобиться задать более сложный образец для поиска. Скажем, я захотел найти все файлы, содержащие в своем имени подстроку «bsd». Для этого следует воспользоваться следующей командой: find . -name "*bsd*" -print ./.kde/share/icons/favicons/www.freebsd.org.png ./.kde/share/icons/favicons/www.freebsddiary.org.png ./.kde/share/wallpapers/bsdbg1280x1024.jpg ./mnwclient-1.11/contrib/freebsd
Мы можем искать файлы не только по имени. Например найдем файлы, которые не читали более чем (условие «более чем» задается знаком «+») 30 дней: find . -atime +30 -print
Для поиска файлов, которые вы не модифицировали какое-то время, используйте ключ «-mtime», а для файлов у которых определенное время назад не менялись права доступа используйте «-ctime». Число после символа «+» задает количество дней (суток). Для того, что бы узнать какие файлы были модифицированы сегодня, попробуйте: find . -mtime -1 -print
Эта команда покажет вам какие файлы были модифицированы за последние сутки. Заметьте, что для указания времени «меньше чем» следует указать знак «-».
Ключ «-newer», это еще один ключ, имеющий отношение ко времени. Все три ключа «time» в качестве параметра используют суточные интервалы. Если вы хотите использовать более точные интервалы времени, то вам может помочь ключ «-newer», который позволяет сравнивать время модификации, последнего чтения или смены прав одного файла с другим с точностью до минуты. Например для того что бы поглядеть какие скрытые (файлы с точкой в начале) были изменены с тех пор как вы последний раз изменили файл .cshrc, вы должны выполнить такую команду: find . -type f -name ".*" -newer .cshrc -print
Обратите внимание, что мы включили в эту команду еще один незнакомый ключ. «-type» с параметром «-f», который устанавливает тип искомого «файл», так как в данном случае нам не нужны изменившиеся каталоги. Ключ «-name» будет искать файлы с именем начинающимся на точку, а ключ «-newer» отберет файлы, которые модифицировались позже файла .cshrc.
По умолчанию подразумевается, что между ключами поиска стоит логический оператор «И», если вы хотите, что бы вместо «И» использовался «ИЛИ», укажите ключ «-o». Поскольку между ключами по умолчанию подразумевается логический оператор «И», то выражение find принимает следующий вид: искать файлы определенного типа «И» с определенным именем «И» более новые чем мой файл .cshrc.
Продемонстрируем разницу между логическим «И» и логическим «ИЛИ». Если я хочу найти все файлы в моем домашнем каталоге, которые не использовались последние 7 дней «И» их размер больше чем 10Мб, то я использую следующую команду: find . -atime +7 -size +20480 -print
Однако, если я хочу найти файлы которые не использовались последнюю неделю «ИЛИ» их размер больше чем 10Мб, то мне придется выполнить такую команду: find . -atime +7 -o -size +20480 -print
Если вы будете использовать ключ «-size», вам придется немного повычислять, так как он использует в качестве параметра число 512-байтных блоков в файле. Я могу воспользоваться командой expr для облегчения этого процесса: find . -atime +7 -o -size +`expr 10 \* 1024 \* 2` -print
Заметьте, что в этой команде в обратных кавычках (это знак ` в левом верхнем углу вашей клавиатуры) заключено то что надо вычислить. Нам остается поставить перед выражением знак плюс, так как мы хотим найти файлы «более чем» 10Мб размера.
Для того что бы поглядеть заранее то, что сосчитает команда expr, припишите впереди команды find команду echo: echo find . -atime +7 -o -size +`expr 10 \* 1024 \* 2` -print find . -atime +7 -size +20480 -print
Вообще проверка сложного выражения find, для того что бы увидеть его полный вид, перед выполнением, является хорошим тоном.
На сегодня все. В следующей части этой статьи я продолжу рассказ о ключах команды find и приведу несколько более полезных примеров ее использования.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
Полезные мелочи Линукса
Я хочу поделиться маленькими хитростями, которые облегчают жизнь линуксоиду.
1. Всем людям, кто хоть раз использовал Linux известно, что при работе с FAT32 из-под Linux русские имена файлов ну просто нечитаемы, да еще и все файлы имеют атрибут "запускаемый". Все это очень просто можно убрать, достаточно подредактировать файлик /etc/fstab:
/dev/hda1 /mnt/win vfat noexec,rw,vmask002,codepage=866,iocharset=koi8-r,gid=100 0 0
Здесь:
"/dev/hda1" - расположение виндового раздела у вас на винте (в данном
случае это первый primary раздел на первом винчестере);
"/mnt/win" - директория, к которой подключается виндовый раздел;
"vfat" - сигнатура, обозначающая использование FAT/FAT32;
"rw" - подключаем как read/write;
"codepade=866" - используем "родную" для FAT32 кодовую страницу;
"iocharset=koi8-r" - а для отображения на экране - koi8-r.
Все остальные параметры я расшифровывать не буду, но они требуются для этой фичи.
2. Как всем известно (или не известно) в Linux постоянно ведутся логи всех событий. Обычно они располагаются в /var/log. Но после недель работы вдруг обнаруживаешь, что места на винте стало как-то меньше, хотя вроде бы ничего нового не ставил =8-X . Оказывается, что Linux не очищает логи автоматически, а оставляет эту работу на могучие плечи пользователя. Следующий маленький скриптик очищает файлы в указанном в командной строке каталоге файлы до нулевой длины. Задание каталога в командной строке является небольшой универсализацией - а вдруг у вас несколько каталогов, которые необходимо очищать. Итак, создаем файлик с именем "clrlog" (без кавычек, ессно) и пишем в него следующее:
#!/bin/bash
if [ $1!="" ]
then
for i in $1/*
do
if [ -f $i ]
then
echo -n > $i
fi
done
fi
После чего записываем его в каталог /bin. Для запуска можно написать еще один скриптик, к примеру "Kill_Log", который тоже помещаем в /bin. В него пишем строки типа:
./clrlog /var/log
./clrlog <любой_другой_очишаемый_каталог>
и т.д.
3. После установки какого-либо дистрибутива Linux (к примеру RedHat 7.0, Mandrake 7.1), в графической системе X-Window нет возможности переключиться на русскую раскладку клавиатуры, либо она повешена на клавишу типа CapsLock, а если вам не нравится ваша раскладка - это не всем приятно. Недавно на сайте IPLabs Linux Team я прочитал решение этой проблемы, и хочу его, рассказать. Исправляется все это дело в файлике /etc/XF86Config (или /etc/X11/XF86Config). Он содержит инфу о настройках X-Window системы и создается любым конфигуратором X: Xconfigurator, XF86Setup, SaX, xf86config (XF86Setup и SaX спросят вас о типе клавиатуры - выберите русскую). Там же надо добавить пути к русским KOI8 - шрифтам в секцию Files, если это необходимо. Далее смотрим содержимое секции Keyboard, точнее говоря - на переменные, начинающиеся с Xkb. Переменной XkbDisable не должно быть в Файле, либо вы ее аккуратно закомментариваете, ставя в начале строки с перепенной символ #. Должна присутствовать переменная XkbModel. Значение переменной XkbLayout устанавливаем в "ru":
XkbLayout "ru"
Строку с переменной XkbOptions пока закомментарим. Далее убеждаемся, что Вашем домашнем каталоге нет файла .Xmodmap. А также проверим, что при запуске X не начнут автоматически выполняться программы типа xruskb и kikbd. Настройка, точнее ее основная часть, закончена. Запустите xterm в X и убедитесь, что нажатие на CapsLock и удержание правой клавиши Alt переключает группы Рус/Lat.
Но, скорее всего, вас не удовлетворит текущая раскладка клавиатуры - цифры в верхнем ряду набираются при нажатом Shift. Если это действительно так, то тогда делаем следующее: помещаем в каталог /usr/X11R6/lib/X11/xkb/symbols раскладку ru1 для обычной клавиатуры и rums - для клавиатуры с клавишами MS, а затем исправляем строчку XkbLayout в XF86Config, указав вместо ru - ru1 или ru-ms. Если же и эти раскладки вас не устраивают, - поправьте файлы раскладок, с их синтасксисом разобраться совсем несложно.
Если вы не удовлетворены клавишей CapsLock в качестве переключателя раскладок, то следует изменить строчку XkbLayout, добавив после названия раскладки слово basic в скобках, например:
XkbLayout "ru-ms(basic)"
и определbnm переменную XkbOptions. Она может принимать следующие значения (все они описаны в файле /usr/X11R6/lib/X11/xkb/symbols/rules/xfree86.lst):
grp:toggle - переключение правым Alt,
grp:shift_toggle - двумя клавишами shift,
grp:ctrl_shift_toggle - ctrl+shift,
grp:ctrl_alt_toggle - ctrl+alt.
Например, строка
XkbOptions "grp:shift_toggle"
задает переключение Рус/Lat двумя клавишами shift. Наконец, если вам очень уж хочется, чтобы при переключении раскладок загоралась лампочка ScrollLock, то можно сделать и это (главное - захотеть ;-). Посмотрим в каталог /usr/X11R6/lib/X11/xkb/compat. Там должен быть файлик group_led. Затем загружаем в любой редактор файл /usr/X11R6/lib/X11/xkb/rules/xfree86 и находим в нем первое вхождение слова complete, оно должно быть под словом compat. Заменяем это вхождение complete на group_led и сохраняем измененный файл. При очередном запуске X лампочка ScrollLock будет сигнализировать о переключении алфавитов.
4. Один из способов, как увеличить свободное место на винчестере - это использование утилиты Strip. Да-да, именно ее. Как известно, при компиляции программы в Linux в выходной файл записывается так называемый debug-info, чтобы в случае сбоя этой программы можно было посмотреть, где был сбой. Но для "рядового" пользователя Linux это незачем. Тогда делаем так:
strip -s *
И из всех запускаемых файлов и библиотек в текущей директории будет удалена debug-info. На практике, 800-меговый Linux удалось укоротить почти на 150Mb. Кому как, а для нескольких (десятков) mp3 как раз хватит.
5. В Linux возможна одновременная pабота в full screen и в X-Window.
Переключаться можно так: Ctrl-Alt-F# (из иксов в текстовый режим) или Alt-F# (обратно, только нужно найти свободную консоль).
2. Сделать автоматический старт X-Window при загрузке компьютера или отключить это можно так: нужно изменить RunLevel v уровень запуска Linux. Для этого исправляем файл /etc/inittab. Находим в нем строчку
id::initdefault:
и исправляем ее. Вместо там написана цифра, мы заменяем ее на одну из следующих:
3 v текстовый режим, без автостарта X Window;
5 v автостарт графического режима.
3. Настроить звук в Linux можно программкой sndconfig. Она после своего запуска определяет тип вашей звуковой карточки, а после проигрывает парочку звуков, спрашивая, хорошо ли было слышно звук. В случае неудачи позволяет выбрать настройки вручную. После всего этого она подправляет конфигурационный файл.
6. Если в Midnight Commander у вас не отображаются или не вводятся русские буквы, то проверьте, стоят ли у вас следующие опции: меню Options, Display bits, параметры ?Full 8-bit Output¦, ?Full 8-bit input¦.
7. Многих интересует вопрос: как загружается Linux-система? Очень коротко процесс загрузки можно описать так: ядро монтирует корневую файловую систему, и запускает первый процесс init, разыскав его исполняемый файл в нескольких стандартных местах. Этот процесс читает свой конфигурационный файл /etc/inittab и запускает все остальные процессы согласно инструкциям из этого файла. Обычно в inittab прописывается запуск процессов *getty, управляющих терминалами, виртуальными консолями и последовательными линиями (то есть именно *getty ответственны за запуск login (сравниваюий имя и пароль, указанные пользователем, с тем, что прописано в /etc/passwd и в случае успеха запускающего соотв. shell), pppd, ifcico и т.д., что именно запускается и в каком случае - зависит от конкретного getty, наиболее универсальным считается mgetty.
Кроме того, здесь же прописываются скрипты, запускающиеся на различных так называемых "уровнях выполнения", из которых в свою очередь запускаются все остальные системные сервисы, осуществляется настройка сети, проверка файловой системы и так далее.
8. А знаете ли вы, что из под Linux можно запускать Windows-программы?
Для этого нужно поставить Windows Emulator v Wine. Далее заходим в каталог с требуемой программкой и выполняем следующую команду:
wine <имя_программки>
Не стоит думать, что все Windows программы захотят так работать, но по крайней мере у меня свободно работал MS Word, а также Mortal Combat 4 (причем даже со звуком!).
9. Создавать и удалять новых пользователей можно так: добавление производится командой adduser, удаление - командой deluser или, при удалении информации из /etc/passwd, руками в редакторе. Замечу, что также имеется команда addgroup для создания групп. Вся служебная информация по пользователям и группам хранится в файлах /etc/passwd и /etc/group.
10. Спасательные дискеты. Многие пользователи применяют для запуска Linux загрузочные дискеты. Такая дискета содержит копию ядра Linux. Во многих дистрибутивах инсталляционные программы предоставляют возможность создать подобную дискету. Такая дискета вместе со спасательной дискетой, содержащей маленькую копию Linux и необходимый минимальный набор утилит, используются в качестве ремонтного набора, если вдруг вы что-либо сделали не так. Загрузочная и спасательные дискеты создаются программой rawrite (она находится в каталоге /dosutils компакт-диска Linux). Для этого нужны две отформатированные дискеты с метками boot и rescue соответственно. Вставьте дискету boot в дисковод A: и введите команду
e:dosutils>rawrite
Считаем, что CD-привод у вас является устройством E:, иначе измените букву привода на свою. После запуска появится приглашение ввести имя файла, который содержит образ необходимой дискеты. Введите e:imagesboot.img. Далее пойдет процесс записи образа на дискету. Если создание дискеты окончилось неудачно, повторите операцию с другой дискетой. Точно также создается спасательная дискета, только используется файл rescue.img.
Использовать дискеты очень просто. Вставьте загрузочную дискету и перезагрузите систему. После теста системы появится приглашение. Если вам просто нужно загрузить установленный на компьютер Linux, то просто введите
root=/dev/hda1
где после знака равенства должен быть прописан раздел, на котором стоит оная система. Если же требуется провести ремонтные операции с использованием спасательной дискеты, то надо ввести команду rescue. После ее ввода и загрузки ядра вас попросят вставить спасательную дискету и нажать любую клавишу. После загрузки спасательной дискеты вы увидите приглашение shell-а.
11. Выход из Linux. Работая с Linux, следует быть аккуратным при выходе из системы. Ни в коем случае нельзя просто выключить компьютер! Т.к. Linux хранит информацию файловой системы в оперативной памяти, то при отключении питания эта информация может потеряться и повредиться файловая система. В большинстве дистрибутивов реализован нормальный выход из Linux по нажатию комбинации клавиш Ctrl+Alt+Del. Но есть еще один способ выйти v использовать команду shutdown. Синтаксис команды имеет вид:
/sbin/shutdown [flags] time [message]
где: flags v флаги команды, time v время выполнения отключения системы (формат: hh:mm, либо +m, где m v количество минут до останова системы, +0 обычно заменяется словом now), а message v сообщение, которое посылается всем пользователям, работающим в данный момент в системе. Основные флаги:
-r - перезагрузка компьютера по завершению работы;
-h - отключение компьютера по завершению работы.
Данная команда запрещает регистрацию пользователей, посылает всем работающим на данный момент в системе пользователям предупреждающее сообщение, после чего выжидает заданное в параметре время и посылает всем процессам сигнал завершения работы. Затем вызывается команда halt или reboot (смотря что было передано в командной строке).
12. Основные команды управления файлами и каталогами. Подавляющее большинство команд оболочки Linux предназначено для простого манипулирования файлами и каталогами. Основные из них:
ls v получение списка файлов текущего каталога;
mkdir v создание каталога;
cd v изменение текущего каталога;
cp v копирование файлов и каталогов;
mv v перемещение и переименование файлов и каталогов;
rm v удаление файлов и каталогов;
cat, more, less v просмотр содержимого файлов;
find v поиск файлов.
Подробную справку по каждой из команд можно получить, набрав в командной строке саму команду и параметр --help (именно два знака ?тире¦). А для тех, кто любит оболочки типа Norton Commander и DOS Navigator есть подобная вещь и под Linux v Midnight Commander. Запуск ее осуществляется командой mc.
13. Если подвисла программка, то не стоит перезагружать всю систему. Снять с выполнения вредную программу можно так: переключаемся на свободную консоль, используем команду ps для вывода списка текущих процессов в системе, ищем и запоминаем в самом левом столбце числовой идентификатор необходимой программы, и завершаем ее выполнение командой kill <идентификатор>.
14. Linux FTP-архивы. Linux детище Интернета, поэтому вполне понятно, что в Интернете можно почерпнуть максимум информации связанной с Linux. В приводимой ниже таблице перечислены FTP-узлы, в которых собраны архивы Linux.
Название узла |
Каталог |
tsx-11.mit.edu |
/pub/linux |
sunsite.unc.edu |
/pub/Linux |
nic.funet.fi |
/pub/Linux |
ftp.mcc.ac.uk |
/pub/linux |
ftp.dfv.rwth-aachen.de |
/pub/linux |
ftp.informatik.rwth-aachen.de |
/pub/Linux |
ftp.ibr.fr |
/pub/linux |
kirk.bond.edu.au |
/pub/OS/Linux |
ftp.uu.net |
/systems/unix/linux |
wuarchive.wustl.edu |
/systems/linux |
ftp.win.tue.nl |
/pub/linux |
ftp.stack.nl |
/pub/Linux |
ftp.ibr.cs.tu-bs.de |
/pub/os/linux |
ftp.denet.dk |
/pub/os/Linux |
split -b 1420k largefile
С помощью этой команды вы создадите файлы xaa, xab, ... размером 1420k. Скопируйте их на дискеты и соберите обратно командой :
cat xaa xab > largefile
Это еще к тому же многоплатформенное решение. Под DOS вы соберете эти файлы командой :
copy /b xaa + xab largefile /b
16. Shared Windows resourсes
Чтобы посмотреть список расшаренных ресурсов на Windows-машине, можно использовать следующие команды: "smbclient -I -L NAME_SERVER", или "nmblookup -r -A ", или "smbclient -N -L hostname -I ", или скрипт "smpfind".
17. Список пакетов
Чтобы вывести список всех установленных пакетов, используйте команду "rpm -qa" (не нужно указывать имя пакета). Чтобы найти все установленные пакеты, в названии которых содержится какое-нибудь слово (например, kde), используйте команду "rpm -qa | grep kde".
18.Если надо установить два или более пакетов, зависящих друг от друга,
то установите их одновременно: "rpm -ihv foo-1.1-3mdk.rpm libfoo-1.5-2mdk.rpm".
19.Хранение списка контрольных сумм md5
Хранение списка контрольных сумм md5 важных системных файлов может быть очень полезным. Например, если злоумышленники проникнут в вашу систему, вы сможете узнать, были ли оставлены backdoor'ы. Скрипт, создающий список контрольных сумм md5, может быть примерно таким:
#!/bin/sh md5sum /bin/* /sbin/* /usr/bin/* /usr/sbin/* /usr/X11R6/bin/* /etc/* > \ "/root/date +"%Y%m%d".md5" 2> /dev/null
Этот скрипт создает файл в директории /root, в названии которого присутствует сегодняшняя дата. Лучше всего - запустить этот скрипт сразу же после установки системы. Для того, чтобы сравнить контрольные суммы файлов, присутствующих в системе сейчас, с уже сохраненными, создайте примерно такой скрипт:
#!/bin/sh md5sum /bin/* /sbin/* /usr/bin/* /usr/sbin/* /usr/X11R6/bin/* /etc/* \ 2> /dev/null | diff $1 - | awk '$1=="Формат запуска этого скрипта: checkmd5.sh /root/20020125.md5 (Если вы сохранили его под именем checkmd5.sh). Если какие-то файлы изменились, их имена будут выведены на экран. Рекомендуется хранить ваш файл с оригинальными контрольными суммами md5 в надежном месте (например, на другом компьютере), чтобы злоумышленники не смогли его изменить или удалить.
20. Изменение MAC-адреса сетевой карты
Если вы хотите изменить MAC-адрес вашей сетевой карты, используйте следующие две команды:
ifconfig eth0 down
ifconfig eth0 ether hw aa:bb:cc:dd:ee:ff
Где eth0 - ваша сетевая карта, а aa:bb:cc:dd:ee:ff - новый MAC-адрес. Теперь запустите скрипт запуска сети, или просто перезагрузитесь.
21. su
Никогда не входите в систему под именем root. Работайте с правами обычного пользователя, переключаясь в режим суперпользователя с помощью команды su только в случае необходимости. К тому же, посмотрев логи su, вы сможете контролировать, кто и когда работал в системе с правами root'а.
Чтобы выйти из режима su, используйте команду exit. Чтобы временно перейти в режим нормального пользователя, наберите "suspend", а чтобы вернуться - "fg".
Иксы упали и больше не запускаются
Иксы упали и больше не запускаются. Выдается что-то вроде "can't find default font fixed". Причина - после падения X перестает работать сервис xfs ("service xfs status"). Решение - сначала нужно удалить /tmp и создать его заново (для этого нужно выполнить команды mv /tmp, mkdir /tmp и chmod 1777 /tmp). После этого - выполнить команду "service xfs start". И еще насчет падений и зависаний X - обычно это бывает из-за Wine и кривых драйверов :).
22. PATH #2
Обычно PATH для администратора и для обычных пользователей различаются (PATH администратора включает в себя /sbin и /usr/sbin, тогда как у пользователей этих каталогов нет). Поэтому пользователи не могут исполнять программы, расположенные в каталоге "sbin", если в командную строку не включить полный путь к исполняемому файлу.
Также, если вы стали суперпользователем, выполнив команду su, вы наследуете PATH пользователя, и для выполнения программы, расположенной в sbin, вам все равно потребуется указывать полный путь.
23. Text: DOS -> UNIX
Самые простые способы преобразовать текстовый файл dos/windows в текстовый файл Unix:
1) "cat filename1 | tr -d "^V^M" > newfile".
2) "sed -e "s/^V^M//" filename > outputfilename".
3) Команда "dos2unix".
4) "col -bx dosfile > newfile".
24. Восстановление /dev/null
Если заменить /dev/null на обычный файл, система перестанет нормально функционировать. Чтобы восстановить /dev/null, нужно выполнить команды "mknod /dev/null c 1 3" и "chmod 666 /dev/null".
25. Удаление "корзины" из KDE 3.
Удалите каталог ~/KDesktop/Trash. Установите KDE Control Center->Look & Feel->Desktop->Paths->Trash в /dev/null и посмотрите, что не вы владелец. Перезапустите KDE. "Корзина" не работает, потому что вы - не владелец /dev/null. Наслаждайтесь чистым рабочим столом :).
26. CD burning.
Стираем так:
cdrecord -v blank=fast(или all) dev=.
Образ делаем так:
mkisofs -r -J -o
Пишем так:
cdrecord -v -eject speed=8 dev= file.iso.
Если надо мультисессионный диск, то добавляем -multi.
Так же существует много графических оболочек, которые в своей работе используют эти же простые команды.
Полигон для испытаний
Приятной особенностью VMware является возможность отладки приложений, активно работающих с сетью. Например, работа с SQL-серверами, отладка web-приложений, т.к. не всегда есть возможность держать дома два компьютера. Если вы планируете использовать VMware только для этих целей, то разумно будет настраивать виртуальную сеть по второму варианту – host-only. В этом случае выйти «наружу» можно будет только, если настроить proxy-сервер на host-машине, иначе guest-машине «наружу» хода не будет.
Кроме этого, вам может понадобится доступ к файловой системе host-машины. В этом случае можно использовать samba или ftp-сервер. Если вы будете использовать samba, то обратите внимание на следующее: при конфигурации VMware вам будет предложено воспользоваться samba-сервером, который идет в поставке с VMware. Версия пакета 2.0.6. Имеет смысл отказаться от его настройки и настроить samba-сервер самостоятельно и взять что-нибудь поновее.
При работе с сетевыми сервисами расположенными на host-машине для доступа к ним используйте ip-адрес host-машины для виртуальной сети (x.x.x.1). Зачем гонять данные через лишние интерфейсы?
Интересной особенностью VMware является то, что оно (ПО) позволяет работать как с реальным разделами на жестком диске, так и с виртуальными дисками. Вторые представляют из себя файл, который содержит образ жесткого диска, но не весь, а только ту часть, которая заполнена информацией. Размер файла растет по мере заполнения виртуального диска. При этом программы разбиения жесткого диска на разделы уверены, что это самый настоящий жесткий диск. Этим можно воспользоваться, например, для тестирования программ мультизагрузки ОС и переразбиения дисков (Acronis OS Selector, Partition Magic и пр.), если вы опасаетесь, что можете разрушить данные на диске. Список таких программ может быть очень длинным.
И последнее: использование виртуальных дисков позволяет вам, установив систему и настроив ее, сохранить файлы конфигурации и образов виртуальных дисков на CD и пользоваться ими по мере надобности. Такой метод интересен для курсов, где проводят обучение «от компьютерной безграмотности» 8-). Даете ученикам делать, что хотят, а к приходу следующей группы у вас уже готова свежая, только что установленная OC.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
Получение информации о процессах
Для работы с информацией о процессах, которую выводят на терминал программы ps и top, в Linux используется достаточно необычный механизм: особая файловая система procfs. В большинстве дистрибутивов она монтируется при запуске системы как каталог /proc. Данные о процессе с номером 1 (обычно это /sbin/init) содержатся в подкаталоге /proc/1, о процессе с номером 364 - в /proc/364, и т. д. Все файлы, открытые процессом, представлены в виде символических ссылок в каталоге /proc/<pid>/fd, а ссылка на корневой каталог процесса хранится как /proc/<pid>/root.
Со временем у файловой системы procfs появились и другие функции. Например, командой echo 100000 > /proc/sys/fs/file-max
суперпользователь может определить, что в системе разрешается открыть до 100 000 файлов, а команда echo 0 > /proc/sys/kernel/cap-bound
отнимет у всех процессов в системе все дополнительные права, т. е. фактически лишит систему понятия "суперпользователь".
Полезную информацию позволяет получить программа lsof, которая выдает список всех файлов, используемых сейчас процессами, включая каталоги, занятые потому, что какой-либо процесс использует их в качестве текущего или корневого; разделяемые библиотеки, загруженные в память; и т. д.
В следующей статье мы поговорим о командном интерпретаторе, его роли в системе и вообще о том, как из отдельных процессов и файлов складывается нечто единое.
Порталы, посвященные Linux:
виртуальная энциклопедия Linux по-русски linux.ru.net (ежедневные новости) http://www.linux.ru/ (ежедневные новости почему-то без архива) Linux на opennet.ru Linux park на webclub.ru linuxcenter.ru (реклама книжек по Linux) linux.org.ru (еще новости - не перепутать бы их :) - и результаты опросов) ru.linuxstart.com linuxRSP.ru Linux на lib.ru linuxnews.ru Linux gazette по-русски linux knowledge base linux webwatcher LinuxHQ Linux.org Linuxcenter (оригинал - французский) linux journal Linux International Linuxcare (в основном, предложение платных услуг) Linux у IBM
Посиделки за консолью
Автор: Алексей Федорчук, alv@newmail.ru
Опубликовано: 20.09.2001
Оригинал: http://www.softerra.ru/freeos/12718/
Продолжая начатый ранее разговор о прелестях консольного режима Linux, давайте разберемся, как извлечь из оных консолей хоть малую пользу и что же с ними можно делать?
Если я отвечу— все, что душе угодно, — вы обвините меня в преувеличении. И будете правы — текстовый режим накладывает некоторые ограничения на характер выполняемой работы. Тем не менее, для консоли существует немало полнофункциональных приложений, позволяющих решать некоторые задачи наиболее эффективным способом. Какие? Об этом мы сегодня и поговорим.
Когда речь заходит о работе в текстовом режиме, поневоле ассоциативно приходят на ум текстовые редакторы. Существует (особенно в среде Windows) мнение, что редакторы — убогие программульки для элементарных задач, тогда как всамделишняя работа со Словом может выполняться только в могучих и необъятных (в смысле занимаемого на винчестере места) текстовых процессорах [1].
Мнение это столь же привычно [2] , сколь и необоснованно — именно редакторы есть наиболее подходящий инструмент для создания текстов, претендующих на оригинальность, в силу того, что никакие (обычно тщетные) потуги на декор не отвлекают от полета творческой мысли. При этом возможности обработки (сиречь собственно редактирования) уже созданного текста в редакторах отнюдь не уже, а уж о скорости как таковой просто и говорить не приходится…
Впрочем, обо всем этом я уже писал. Возвращаясь к теме, выскажу свое мнение — именно в работе с текстами проявляются несравненные достоинства текстовой консоли. За более чем десятилетие околокомпьютерной жизни мне довелось поработать и в Lexicon'е, и в Chiwriter'е (помните о таком?), и в WodrPerfect'е еще для DOS. На долгое время остановился я на AmiPro — по сей день считаю его вершиной в развитии текстовых процессоров традиционного облика. Под гнетом принудительной силы реальности оскоромился я и Word'ом. Пока, подобно персонажу рекламы, не открыл для себя консольные текстовые редакторы для Linux. И с тех пор чувствую себя много комфортней…
Хотя, чтобы осознать всю силу и величие консольных текстовых редакторов, требуется некоторое напряжение мысли (да и кистей рук — тоже). Перво-наперво следует уразуметь, что лучшие их представители — это редакторы командные. То есть навигация по тексту и его обработка в них осуществляется не посредством действий через меню, и, тем паче, не щелканьем и перетаскиванием мышью, а отдачей прямых директив, вроде: перейти на пять слов вперед, удалить пятую снизу строку, заменить строку номер пятнадцать и т.д.
К такому образу действий нужно просто привыкнуть и выработать соответствующие навыки, сравнимые с рефлексами собаки Павлова. Зато, когда это свершится — жизнь становится простой и понятной. Остается только выбрать наиболее подходящий инструмент лично для себя…
Когда речь заходит о консольных текстовых редакторах для Linux, чаще всего упоминают два столпа в этой области — vi, известный также под псевдонимами Vim и elvis, и emacs. Я не буду вдаваться в обсуждение сакрального вопроса — какой из них лучше: каждый редактор имеет свои достоинства, и возможности каждого с лихвой перекрывают потребности среднестатистического пользователя.
Так, vi поначалу кажется порождением больного с садомазохистскими наклонностями. Однако достаточно осознать внутреннюю его логику — и начинаешь понимать, что более быстрого инструмента для обработки текста человеческий разум еще не придумал. А многочисленные возможности для его настройки (причем — выполняемые вполне элементарно) обеспечивают должную функциональность такой обработки. Хотя, с другой стороны, создание нарративных текстов — не самая сильная его сторона…
Напротив, emacs поначалу кажется более понятным (интуитивно, то есть когда нутром чуешь, что делать). Подкупает возможность работы с практически любыми наборами символов (вплоть до китайских), даже если они не поддерживаются системой как таковой — если это действительно нужно. Ну и, как говорят, возможности расширения и настройки — безграничны. Правда, тут-то и возникает некоторая напряжека: чтобы этими возможностями воспользоваться, нужно знать, что такое язык Lisp и как-то уметь на нем программировать.
А еще я не забывал бы и о скромном труженике joe (рис. 1). Его система команд проще и, ИМХО, логичнее, чем в vi и emacs, вместе взятых. Конечно, в отместку за это и возможностей он (в штатном исполнении) предоставляет, казалось бы, поменьше. Однако это компенсируется возможностью расширения путем создания собственных макросов простым протоколированием действий. А когда понимаешь, что весь joe — это, в сущности, и есть набор макросов собственного языка — возможности расширения и настройки ограничиваются только собственной фантазией.
Рис. 1. Консольный редактор joe с выведенной системой помощи
Работа с текстами подразумевает не только их создание и обработку, но и форматирование, вплоть до верстки, для печати, скажем, или для представления в Сети. Именно объединение средств набора и форматирования обеспечило популярность текстовых процессоров — якобы это облегчает жизнь. Вспомните серию работ Евгения Козловского — «Я пишу и верстаю в Word'е», и ее контрверсию от Олега Малоглавца — «А я пишу и верстаю в LaTeX'е». Опять же не буду вступать в дискуссию, а просто скажу: я пишу в Joe, а верстку предпочитаю оставить другим — ей-богу, у профессионала это получится лучше. А вот что касается вестки текстов для Сети — тут с «простыми» текстовыми редакторами могут конкурировать только специализированные средства типа HomeSite (в которых, думаю, мало кому придет в голову тексты СОЗДАВАТЬ). Например, joe (например — не потому, что он лучше, а потому, что я его лучше знаю) превращается в полноценный редактор html-кода легким движением руки. Причем автоматизированный ввод тэгов осуществляется параллельно с набором текстов, ничуть не отвлекая от этого процесса.
[1] — Вспомните хотя бы их названия — Превосходное Слово, или, паче того, просто Слово (типа — «Зовите меня просто Ильич»). Лишь Подруга Профи выделялась на этом фоне, да и та трансвестировалась в безликое Слово Профа…
[обратно к тексту]
[2] — В обзорах мне попадались комплименты особо на то сподобившимся текстовым редакторам, что они, мол, стали почти как текстовые процессры. Слава Богу, к лучшим редакторам это не относится.
[обратно к тексту]
После того, как на ваш компьютер
Прежде чем описывать процедуру подключения физического диска к виртуальному компьютеру, стоит предупредить о некоторых потенциальных опасностях. В документации по VMware (www.vmware.com) говорится: «Поддержка работы с физическими дисками является продвинутой особенностью VMware и может использоваться только теми, кто уже знаком с продуктом. А чтобы познакомиться с продуктом, вы должны, как минимум, создать и сконфигурировать виртуальную машину с виртуальным диском и установить на нее операционную систему. Что касается загрузки ранее установленной на физический диск ОС в виртуальном компьютере, то для некоторых конфигураций аппаратного обеспечения и операционной системы она может не работать». Это не означает, что подключение к виртуальной машине реальных дисков невозможно. Просто делать это надо корректно, с соблюдением мер предосторожности.
Основная опасность состоит в одновременном доступе к одному разделу физического диска из нескольких операционных систем. Все ОС создавались в расчете на полный контроль над компьютером, и, поскольку каждая из них не имеет представления о другой, то, когда две ОС пытаются производить операции записи или чтения в одном и том же разделе, может произойти потеря или разрушение данных. VMware не регулирует дисковые операции базовой операционной системы, поэтому раздел реального диска не должен одновременно использоваться (быть смонтирован) в ОС на базовом компьютере и в виртуальной машине. Следовательно, надо удостовериться, что базовая ОС «не видит» раздел, с которым работает ОС виртуального компьютера, и, прежде чем подключить раздел реального диска к виртуальной машине, размонтировать его в базовой ОС.
Последовательность из "простых" блоков
Однако, чаще используется другой формат файла - последовательность "простых" блоков. В таком файле объявления группируются в блоки, которые ограничиваются фигурными скобками - '{...}' (после каждого блока должна быть "точка с запятой" - ';').
Перед каждым блоком должен быть заголовок, такой же как и в файле с "простой" конфигурацией
[ Флаги ] ТипФайла [ Имя1 ] '{' [ Объявления ] '};' [ Флаги ] ТипФайла [ Имя2 ] '{' [ Объявления ] '};' ...
Например,
xkb_symbols "basic" {....}; xkb_symbols "us" {....}; ....
Последовательность из "составных" блоков
Наконец, рассмотрим третий тип конфигурационного файла - последовательность из "составных" блоков. Каждый такой "Составной Блок" оформляется как "простой" блок
[ Флаги ] СложныйТип [ Имя ] '{' Блок { Блок } '}' ';'
но внутри содержит не просто объявления, а блоки "простых" типов, например
xkb_keymap "complete" { xkb_keycodes {...}; xkb_types {...}; xkb_compat {...}; xkb_symbols {...}; xkb_geometry {...}; };
Так же, как и файл с "простыми" блоками, файл с "составными" блоками может содержать несколько таких "составных" блоков, отличающихся именами (один из блоков может быть помечен флагом "default").
Существует три типа "составных" блоков
xkb_semantics - такой блок должен содержать блок xkb_compat и может также иметь в себе блок xkb_types; xkb_layout - должен содержать блоки xkb_keycodes, xkb_types, xkb_symbols и может, также, иметь в себе блок xkb_geometry; xkb_keymap - наиболее полный блок, должен включать в себя все, что должны содержать предыдущие два типа (то есть - xkb_keycodes, xkb_types, xkb_compat xkb_symbols) и может включать дополнительно те компоненты, которые могут иметь в себе два предыдущих типа.
Иван Паскаль pascal@tsu.ru
Пост инсталляционная доработка Linux Mandrake Odyssey
Вот и обещанное продолжение. Почему так долго? Потому, что получил письмо, автор которого опровергает результаты инсталляции, и засомневался в воспроизводимости проблем за пределами отдельно взятого моего компьютера.
Почему же, все-таки пишу. Причин несколько.
Во-первых, ваши просьбы, из которых я понял, что многие столкнулись с теми же проблемами и пытаются их решить.
Во-вторых, пытался скрестить glibc оригинального Одиссея с некоторыми rpm-ками из Сизифа (локализованная версия), т.к. очень хочется KDE2.1 и разный новейший софт, а закачивать большие объемы не позволяет коннект, но потерпел полное фиаско (о чем заранее предупреждали разработчики из IPLabs), вынужден был переустановить систему и пройти все заново.
Теперь по пунктам:
Инсталляция описана мной в предыдущем обзоре и на этот раз все прошло точно так же. Единственное отклонение (добавление), на предварительном этапе я разбил существующий раздел с ext2 на два, размерами 3 Гб и 2 Гб для того, чтобы отделить дерево домашних каталогов, а во время инсталляции указал для этих дисков точки монтирования / и /home, соответственно.
Заменил GRUB на LILO, не понравился мне этот мультилоадер. Из-под root'а подкорректировал конфигурационный файл lilo:
boot=/dev/hda map=/boot/map install=/boot/boot.b vga=normal default=windows keytable=/boot/ru4.klt lba32 prompt timeout=50 message=/boot/message menu-scheme=wb:bw:wb:bw image=/boot/vmlinuz label=linux root=/dev/hda5 read-only other=/dev/hda1 label=windows table=/dev/hda
и скомандовал:
# lilo
Поставил Xfree 4.0.1 штатными средствами, скомандовав:
# Xfree -expert
Поставил шрифты arial, courier new и times new roman при помощи утилиты DrakeFont.
Поставил привычные cronix - шрифты, которые взял из MDK7.0RU.
создал папку /usr/X11R6/lib/X11/fonts/cyrillic/ скопировал в нее файлы скомандовал в папке шрифтов:
# mkfontdir прописал путь к новым шрифтам в конфигурационном файле /etc/X11/fs/conig перезапустил xfs, скомандовав:
# /etc/rc.d/inet.d/xfs restart проверил наличие присутствия новых шрифтов, скомандовав из-под Х-ов:
xfontsel
Поправил монтировочную таблицу /etc/ fstab так, чтобы на смонтированных локальных дисках было видно русские имена файлов и, чтобы файлы не отображались как исполняемые (фрагмент файла):
/dev/hda1 /mnt/win_c vfat user,noexec,conv=auto,codepage=866,iocharset=koi8-r 0 0 /dev/hda8 /mnt/win_d vfat user,noexec,conv=auto,codepage=866,iocharset=koi8-r 0 0 /dev/hda9 /mnt/win_e vfat user,noexec,conv=auto,codepage=866,iocharset=koi8-r 0 0
Чтобы появилась возможность писать по-русски поправил XF86Config-4 следующим образом (фрагмент файла):
Section "InputDevice" Identifier "Keyboard1" Driver "keyboard" Option "AutoRepeat" "200 32" Option "LeftAlt" "Meta" Option "RightAlt" "Meta" Option "ScrollLock" "Compose" Option "RightCtl" "Control" Option "XkbKeycodes" "xfree86" Option "XkbTypes" "default" Option "XkbCompat" "default" Option "XkbSymbols" "us(pc105)" Option "XkbGeometry" "pc" Option "XkbRules" "xfree86" Option "XkbModel" "pc104" Option "XkbLayout" "ru" Option "XkbVariant" "winkeys" Option "XkbOptions" "grp:ctrl_shift_toggle" EndSection
и настроил KDE2 следующим образом: страна - Russia язык - English (мне привычней англоязычный интерфейс, но это распространяется только на KDE и интегрированные с ним программы, в других останется русскоязычный интерфейс, если при инсталляции выбран русский язык, что является единственно правильным выбором для корректной локализации) charset - koi8-r
Поставил менеджер клавиатуры xxkb-1.5.1. Подробно прочитать про xkb можно у Паскаля. Там же находится оригинальный экземпляр xxkb.
разархивировал во временный католог инсталлировал
xmkmf
make
make install прописал в автозагрузку KDE, хотя можно запускать руками. настроил конфигуратор по адресу /usr/X11R6/lib/app-defaults/XXkb
Подработал Netscape под себя.
убрал локализацию - удалил файл /usr/X11R6/lib/X11/ru/app-defaults/Netscape изменил шрифт и задействовал мышинное колесо дописав в ~/.Xdefaults:
Netscape*globalTranslations: #override: LineDown()LineDown()LineDown() \n : LineUp()LineUp()LineUp() \n Netscape*fontList: -*-courier-medium-r-*-*-*-80-*-*-*-*-koi8-r
Все!
5 Марта 2001
Ю.Переляев
Постинсталляционная настройка Linux
Денис Колисниченко, 14.05.2003, ITC Online
Ничто в мире не идеально, и программы установки Linux -- не исключение. Одни забывают настроить средство автоматического монтирования дисков, другие -- прописать корректную кодировку для отображения имен файлов на Windows-разделах, третьи не дружат с кириллицей. В этой статье мы постараемся рассмотреть наиболее типичные из таких ситуаций. Информация в основном ориентирована на начинающего пользователя свободной ОС и призвана помочь ему как можно более быстро адаптироваться в непривычном мире Linux.
Автоматическое монтирование
Монтирование -- это подключение какого-нибудь тома винчестера к корневой файловой системе. Например, раздел /dev/hda1 можно "примонтировать" к каталогу /mnt/c корневой файловой системы и в дальнейшем именно посредством него обращаться к нужным файлам. Делается это с помощью следующей команды:
mount -t fs_type device mount_point |
Параметр fs_type (который должен следовать за -t) задает тип файловой системы, например: ext2 -- основная файловая система Linux, ext3 -- ее более новая версия (с журналированием), iso9660 -- для CD-ROM, vfat и ntfs -- для FAT16/32 и NTFS соответственно. Встречаются и другие варианты. NTFS может не поддерживаться по умолчанию (это проверяется в файле /proc/filesystems или /etc/filesystems), в таком случае, вероятно, придется перекомпилировать ядро, включив ее поддержку. При наличии драйвера в виде модуля может оказаться достаточно команды наподобие modprobe ntfs.
Следующий параметр (device) указывает монтируемый том в стандартном синтаксисе Linux, соответственно, /dev/hda1 -- первый раздел первого жесткого диска (Primary Master) и т. д. Последний -- собственно точка монтирования, т. е. самый обыкновенный каталог, который к этому моменту уже должен существовать.
Таким образом, типичная команда mount может выглядеть следующим образом:
#mount --t vfat /dev/hda1 /mnt/c |
Для отключения раздела используется команда:
umount mount_point |
Сведения о подключенных файловых системах хранятся в файле /etc/mtab, а информация об автоматическом монтировании -- в /etc/fstab. Формат записей в нем такой:
device mount_point fs_type options backup_flag check_flag |
Здесь options -- список опций, описанных в справочной системе (man fstab); backup_flag -- указывает программе резервного копирования dump на необходимость включения данной файловой системы в архив; check_flag -- управляет проверкой тома при инициализации системы (выполняется программой fsck).
Нередко при монтировании "в лоб" файловых систем Windows вместо русских букв отображается не совсем то, что вам бы хотелось. Например, вместо имени каталога Мои документы можно увидеть нечто вроде ??? ?????????. Для раскодирования имен файлов используются опции монтирования iocharset и codepage. В данном случае:
codepage=866, iocharset=koi8-r |
Результирующий фрагмент файла fstab может выглядеть таким образом:
/dev/hda1 /mnt/c vfat noexec, codepage=866, iocharset=koi8-r 0 0 |
Отключение лишних сервисов
Мастер установки шрифтов (команда kcmshell kcmfontinst) |
Давайте разбираться. Операционная система Linux имеет несколько уровней запуска. Как правило, ваша система загружается на третьем (многопользовательский режим с поддержкой сети) или на пятом (многопользовательский режим с поддержкой сети и автоматическим запуском системы X Window). Уровень 6 используется для перезагрузки. Сценарии для запуска демонов находятся в каталоге /etc/rc.d/init.d (на который также указывает ссылка /etc/init.d). Для того чтобы остановить нужный вам сервис, введите команду:
/etc/init.d/<сервис> stop |
Выбор шрифта (команда kcmshell fonts) |
Текущие процессы (команда ksysguard) |
Для редактирования уровней запуска я рекомендую использовать программу ksysv, которая входит в состав среды KDE (или консольную ntsysv). Она позволяет указать не только, какие сервисы нужно запускать на том или ином уровне, но и в каком порядке.
Существует также много других подобных программ, например drakxservices, которая, в отличие от ksysv, позволяет редактировать лишь текущий уровень запуска. Перейти на другой можно с помощью команды init N, а уровень по умолчанию определяется в файле /etc/inittab.
Казалось бы, все просто: отключаешь лишние сервисы, и система работает быстрее. А что можно-то отключить? Судя по информации, которую предоставляет, к примеру, программа drakxservices, все сервисы крайне нужны и незаменимы. Первичную информацию можно получить в таблице 1, остальное -- по мере приобретения квалификации.
Производительность жесткого диска
Теперь ваша система запускается заметно быстрее, но почему файлы открываются так медленно? Даже запуск простенькой программки kwrite заставляет довольно долго ждать, а за время инициализации знаменитого Mozilla можно успеть выпить чашку кофе (если он не слишком горячий)...
Таблица 1. Стандартные сервисы Linux |
# hdparm -t /dev/hda Timing buffered disk reads: 64 MB in 17.08 seconds = 3.75 MB/sec |
Маловато? Хотите получить полный список отключенных функций (с DMA и так уже все ясно)?
# hdparm /dev/hda /dev/hda: multcount = 0 (off) I/O support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 0 (off) keepsettings = 0 (off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on) |
Вот теперь можно вводить команду man hdparm, разбираться с параметрами этой полезной (но и опасной) программы и предельно аккуратно "разгонять" винчестер. Для моего оптимальными оказались следующие настройки:
# hdparm -d1m8c3u1 /dev/hda |
Здесь параметр d включает DMA, c -- 32-битный доступ к диску, с помощью m я разрешил передавать более одного слова за такт (в данном случае -- 8), а u быстро избавит xmms от "заикания", если таковое появится. Параметры X34, X68 и X69 включают режимы ATA33/66/100 соответственно, например:
#hdparm -X34 /dev/hda |
Для сохранения конфигурации контроллера IDE используйте команду:
# hdparm -k1 /dev/hda |
При перезагрузке настройки IDE сбрасываются, поэтому команду "разгона" винчестера нужно поместить в сценарий запуска системы (например, /etc/rc.d/rc.local).
Кстати, программа hdparm способна не только повысить производительность накопителя, но и принудительно снизить ее, что особенно актуально для современных приводов CD-ROM (к сожалению, далеко не все из них поддерживают эту возможность). К примеру, следующая команда установит скорость 10Х (около 1500 KBps):
# hdparm -E10 /dev/hdd |
Подключение кириллицы
В некоторых дистрибутивах проблемы со шрифтами X Window бросаются в глаза уже при регистрации в системе. Это значит, что, скорее всего, не были установлены или корректно прописаны кириллические шрифты. Чтобы исправить ситуацию, в большинстве случаев нужно всего лишь добавить в конфигурационный файл /etc/X11/fs/config строку:
/usr/X11R6/lib/X11/fonts/cyrillic |
или
/usr/X11R6/lib/X11/fonts/KOI8/75dpi |
Какую именно -- зависит от каталога, в который установлены соответствующие шрифты. Для Red Hat и Mandrake подходит первый вариант. В дистрибутиве ALT Linux кириллические шрифты находятся в пакетах XFree86-cyr_rfx_fonts_koi8 и val-ttf и устанавливаются в каталоги:
/usr/X11R6/lib/X11/fonts/KOI8/75dpi /usr/X11R6/lib/X11/fonts/KOI8/misc /usr/X11R6/lib/X11/fonts/urw-ttf |
Вот фрагмент файла /etc/X11/fs/config:
catalogue = /usr/share/fonts/KOI8-R/75dpi:unscaled, /usr/share/fonts/KOI8-R/75dpi, /usr/share/fonts/KOI8-R/misc:unscaled, /usr/share/fonts/KOI8-R/misc, /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/misc, /usr/X11R6/lib/X11/fonts/Type1, /usr/X11R6/lib/X11/fonts/Speedo, /usr/X11R6/lib/X11/fonts/cyrillic |
Судя по всему, какие-то кириллические шрифты в системе уже присутствуют. При необходимости добавить дополнительные, укажите нужные каталоги в этом списке, желательно ближе к его началу. После этого необходимо перезапустить сервер шрифтов командой service xfs reload и, возможно, X-сервер (другой вариант -- подключить шрифты в текущей сессии с помощью команды xset).
Таблица 2. Основные программы-конфигураторы Linux Mandrake
Программа | Описание |
drakxconf | Основной конфигуратор |
drakboot | Конфигуратор загрузчика LILO |
drakgw | Совместное использование Internet-соединения |
draknet | Настройка сети |
drakfloppy | Создание загрузочного диска |
draksec | Определение уровня безопасности |
drakxservices | Автозапуск сервисов |
diskdrake | Программа для разметки диска |
adduserdrake | Управление учетными записями |
keyboarddrake | Настройка клавиатуры |
mousedrake | Настройка мыши |
printerdrake | Настройка принтера |
netconf | Настройка сети |
modemconf | Конфигурирование модема |
XFdrake | Настройка Х-сервера |
Xdrakres | Установка разрешения монитора |
Xconfigurator | Настройка X Window |
Проблемы, связанные со шрифтами
Может случиться и такое, что система X Window вообще не инициализируется. При этом если вы запускаете X Window автоматически, то не увидите ни одного диагностического сообщения. Для того чтобы узнать причину краха системы, нужно зарегистрироваться как администратор и перейти на уровень 3 (иначе система будет повторно стартовать X Window через каждую минуту). Нажмите <Ctrl + Alt + F1> для перехода в первую консоль, затем введите root и пароль администратора. Делать все это нужно как можно быстрее, ведь до следующего запуска X Window не больше минуты.
Затем, как это ни парадоксально звучит, стартуйте X Window еще раз:
#startx |
Разумеется, система от этого работать лучше не станет, но теперь мы сможем увидеть причину сбоя. Если X Window (точнее, xfs) сообщает нам о невозможности открыть шрифт fixed, значит, нарушено функционирование сервера шрифтов xfs. Предлагаемое решение не очень рационально, но оно работает и позволяет быстро "поднять на ноги" систему X Window.
Удалите из конфигурационного файла /etc/X11/XF86Config-4 строку:
FontPath "unix/:-1" |
Вместо нее добавьте:
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/PEX" FontPath "/usr/X11R6/lib/X11/fonts/Type1" |
Можете указать и другие каталоги со шрифтами, но и этих достаточно, чтобы система продолжила работу. Попробуйте запустить X Window:
#startx |
В случае успеха завершите работу X Window и перейдите на уровень 5. Таким образом, мы фактически отказываемся от услуг сервиса xfs -- X Font Server. Более корректным решением была бы настройка сервера xfs путем редактирования его конфигурационного файла /etc/X11/fs/config, но когда нужно действительно быстро "поднять" систему, предложенный вариант вполне подойдет.
Таблица 3. Основные программы-конфигураторы Linux Red Hat
Программа | Описание |
setup | Основной конфигуратор |
control-panel | Вспомогательный конфигуратор |
modemtool | Конфигурирование модема |
printertool | Настройка принтера |
netconf | Настройка сети |
Xconfigurator | Настройка X Window |
authconfig | Параметры аутентификации |
redhat-config-securitylevel * | Выбор уровня безопасности |
redhat-config-language* | Выбор языка |
redhat-config-date* | Установка даты и времени |
redhat-config-users* | Управление учетными записями пользователей |
redhat-config-packages* | Работа с пакетами |
redhat-config-xfree86* | Настройка системы X Window |
redhat-config-printer* | Конфигуратор принтера |
sndconfig | Настройка звуковой платы |
br>*Данные конфигураторы доступны в версии Red Hat 8.0 и выше.
Учтите, однако, что при использовании конфигураторов X Window, например, для смены разрешения или типа монитора, данные изменения будут утеряны и вам придется проделать все это снова (поскольку конфигуратор восстановит для FontPath значение по умолчанию: "unix/:-1").
Еще один неприятный момент. Иногда "классические" X-приложения (не для среды KDE или Gnome) неправильно отображают русские буквы, несмотря на то что все необходимые шрифты вроде бы прописаны. Попробуйте запустить такое приложение с параметром:
-font -cronyx-*-*-*-*-*-*-*-*-*-*-*-koi8-* |
Чтобы вы не считали звездочки, скажу, что их должно быть 11 до указания кодировки (koi8) и одна после. Данный параметр является общим для всех X-приложений и принудительно указывает шрифт для использования.
Источник - LinuxBegin.ru
http://linuxbegin.ru/
Адрес этой статьи:
http://linuxshop.ru/linuxbegin/article332.html
"Поведение" клавиши
Эта переменная состоит из двух частей - набора флагов и дополнительного аргумента. Обычно аргумент не нужен. Но некоторые флаги подразумевают дполнительный числовой аргумент, а смысл этого аргумента зависит от флага.
Флаги определяют
нужен ли "автоповтор" для этой клавиши (Строго говоря, флаг "автоповтор" хранится в другом месте, а не в переменной "поведение". Но в данном случае это не так уж важно.) обычная эта клавиша или "залипающая" (то есть, по первому нажатию клавша "залипает" и отпускается при повторном нажатии). При этом "залипание" клавиши может отрабатываться самим "железом" или эмулироваться модулем XKB. принадлежность этой клавиши к какой-нибудь "радио-группе". При этом дополнительный аргумент указывает номер такой "радио-группы". принадлежит ли эта клавиша к "перекрывающейся группе" (overlay). Таких групп может быть всего две. Какая группа в данный момент активна, определяется "управляющими флагами" overlay1
и overlay2. Соответственно в "поведении клавиши" есть два флага которые и определяют принадлежность клавши к той или другой группе, а дополнительный аргумент указывает - какой скан-код должна эмулировать клавиша, если включен "режим перекрытия".
PPP
Документация
pppd.8, pppstats.8, char.8 PPP-FAQ (1996) PPP-HOWTO (март 1997) /usr/doc/ppp-2.3.7
Ядро должно быть сконфигурировано с поддержкой PPP (netdriver/ppp, модули ppp, slhc, bsd_comp
В RedHat 6.2 rp3 настраивает PPP почти нормально (правда, я не пробовал настраивать диалог). Конфигурационный файл - "/etc/wvdial.conf". rp3 аварийно завершается, если слишком быстро нажать stop/start. Обрыва линии не замечает, так что приходится прописывать в /etc/ppp/options lcp-echo-interval и lcp-echo-failure. Адреса DNS-серверов берет от сервера доступа.
В RedHat 6.0 linuxconf и control-panel имеют недоработки в конфигурировании PPP-доступа в интернет :( Так что я сделал так:
добавляем в /etc/resolv.conf имя нашего DNS-сервера
nameserver 195.161.72.28 убедиться, что /dev/modem указывает на нужное устройство (у меня COM2 - /dev/ttyS1) завел в control-panel/network интерфейс ppp0, а затем отредактировал конфигурационные файлы ручками
/etc/ppp/options (не забывать про ~/.ppprc)
lock #чтобы никто больше не лез к тому же самому порту во время работы pppd modem crtscts #нормальная синхронизация и сигналы mtu 576 mru 576 # стандартный размер блока (1500) мешает одновременно работать с telnet и ftp asyncmap 00000000 # использовать все символы defaultroute # поднимать маршрутизацию после установления соединения debug kdebug 1 # потом можно выключить lcp-echo-interval 20 lcp-echo-failure 3 # при разрыве связи pppd почему не получает извещения об этом, приходится непрерывно проверять целостность соединения через LCP echo. Может приладить програмку, которая будет смотреть /proc/tty/driver/serial и рубить pppd при пропадании сигнала?
/etc/sysconfig/network-scripts/chat-ppp0 (у меня модем Zyxel Elite 2864, соединяюсь с DEOL), содержит expect-send пары для chat
'TIMEOUT' '2' 'ABORT' 'BUSY' 'ABORT' 'ERROR' 'ABORT' 'NO CARRIER' 'ABORT' 'NO DIAL TONE' '' 'ATI2&F' 'OK' 'AT*E1&S1S13=2S42=64S52=96' 'OK' 'ATDP9329765' 'TIMEOUT' '45' 'CONNECT' '' 'TIMEOUT' '15' 'Username:' 'имя' 'Password:' '\qпароль'
/etc/sysconfig/network-scripts/ifcfg-ppp0 по вкусу (например, уменьшить RETRYTIMEOUT) после подъема/опускания канала pppd вызывает /etc/ppp/ip-up и /etc/ppp/ip-down, которые при необходимости тоже можно настроить (параметры: интерфейс, tty, скорость, localip, remoteip, ipparam)
создать в /etc/ppp скрипты для запуска ppp (названия условны):
deol-up: /etc/sysconfig/network-scripts/ifup-ppp /etc/sysconfig/network-scripts/ifcfg-ppp0 deol-down: /etc/sysconfig/network-scripts/ifdown-ppp /etc/sysconfig/network-scripts/ifcfg-ppp0
вызывать deol-up/deol-down ручками, вставить в crontab или в графическое меню - дело вкуса (только с правами надо разобраться) а где же pppdump?
Права доступа
Права доступа, которые будут у "свежеиспеченного" файла определяются параметром umask. Он задает - какие биты прав доступа НЕ НАДО выставлять в permissions.
Если это параметр равен нулю, то у всех создаваемых файлов права доступа будут одинаковые для всех категорий и выглядеть как rw-rw-rw. Директории (созданные, например, командой mkdir) будут иметь права доступа rwxrwxrwx. Такие же права доступа получатся и у исполняемых файлов, которые создают различные трансляторы (они, естественно, ставят биты "исполняемости" на результат своей работы).
Параметр umask можно посмотреть или изменить "одноименной" командой umask. Команда umask без аргументов просто показывает текущее значение этого параметра. А для того, чтобы поменять его, надо этой команде в качестве аргумента указать число, которое система "развернет" в соответствующие биты.
Если каждую группу из трех бит (что соответствует отдельной категории в правах доступа) рассматривать как двоичное число, то "свернув" их поотдельности в десятичные цифры мы получим число из трех цифр, которое и отражает значение всех битов в permissions. Точнее, получается не десятичное, а восьмеричное представление прав доступа, но, если вы мало знакомы с восьмеричной системой счисления, то можете просто рассматривать это число как три отдельных десятичных цифры.
Еще раз напоминаю, что биты в umask отмечают - какие биты прав доступа НЕ надо ставить при создании файла. То есть, если вы хотите, чтобы у категории "все остальные" вообще не было никаких прав, а "группе допущенных" не ставился бит разрешающий запись, то umask должна выглядеть как 027.
В FreeBSD по умолчанию в командных файлах, которые выполняются при входе в систему, у всех юзеров (включая root'а) вставлена команда, которая задает umask равной 022. То есть отменяются только биты разрешения записи для группы и "всех остальных". Если вас это не устраивает, вы можете изменить аргумент в соответствующем файле (обычно это файл .login в домашней директории юзера) или поменять параметр umask в любой момент "вручную".
Иван Паскаль pascal@tsu.ru
Права доступа (permissions)
Права доступа, кроме root'а может поменять также и владелец этого файла (директории). Кстати, обратите внимание, что хозяин файла может нечаянно установить такие биты доступа, что сам не сможет пользоваться этим файлом по назначению. Правда, никто не помешает ему же и исправить собственную ошибку.
Итак, для изменения прав доступа (permissions) служит команда chmod
("change mode"). В целом эта команда выглядит как и предыдущие (которые меняют владельца и группу)
chmod "что сделать" "имя файла"
Но, в отличии от предыдущих команд, второй аргумент ("что сделать") имеет несколько более сложный вид.
В нем можно выделить три части
u (user) владелец g (group) группа o (other) все остальные a (all) все три категории | - + = | r w x s или t |
Как понятно из таблицы, первой задается категория юзеров (владелец, группа или "все остальные"). Причем, можно поставить сразу несколько букв, обозначив тем самым сразу несколько категорий. Например, go
будет означать, что права меняются сразу и для группы и для "всех остальных". Если надо изменить права сразу для трех категорий, можно написать три буквы - ugo или одну букву a (все три категории).
Следом указывается "операция" (добавить права или наоборот - убрать). И, наконец, после "операции" один или несколько битов доступа, которые требуется изменить. Значение этих битов подробно рассматривалось выше, поэтому здесь не будем на них останавливаться.
Некоторых пояснений, наверное, требует "операция". Как можно догадаться, знаки "-" и "+" означают "убрать" или "поставить" соответствующие права.
А знак "=" означает сразу и то и другое. Дело в том, что если вы укажете, например o+x это будет означать - добавить бит x для категории "остальные", но никак не повлияет на биты r и w для этой же категории. А указав действие как o=rx, вы тем самым скажете системе - "установить биты r и x, и убрать бит w, если он там был".
Бит s имеет разный смысл (suid или sgid) в зависимости от того, в какой части permissions он находится. Поэтому, если вы хотите поставить именно suid бит, то "что сделать" должно выглядеть как u+s, а если вам нужен sgid, то - g+s. Sticky бит ставится командой chmod a+t ... .
Как видите, синтаксис этой команды достаточно гибкий (хотя и несколько сложноватый). Кроме того, второй аргумент ("что сделать") может состоять из нескольких "действий" перечисленных через запятую.
Например, можно задать команду
chmod a=rx,u+w mydir
это будет означать - "для всех категорий права r-x, а для владельца еще и w (право записи)".
Кроме того, команда chmod (точнее - ее первый аргумент) имеет еще одну форму.
Поскольку, все биты доступа это действительно двоичные биты из одной ячейки, "продвинутый" пользователь может указать сразу число (в восьмеричном виде) которое должно получится после изменения прав.
Восьмеричное представление выбрано потому, что при переводе в него двоичного числа, каждая группа из трех бит "сворачивается" в одну цифру. Таким образом, вам надо просто указать три цифры, каждая из которых описывает отдельную категорию юзеров (точнее - права для этой категории). Например, permissions rwxr-xr-x можно представить в восьмеричном виде как 755. И, следовательно, такие права могут быть выставлены командой
chmod 755 myfile
Что касается выполнения этой операций над несколькими файлами или "рекурсивного" обхода всех поддиректорий, здесь все так же, как для команд chown, chgrp. В качестве имени файла может быть задан "шаблон", а для обхода всех поддиректорий используйте ключ -R.
И, конечно, я советую все таки прочитать man chmod.
в отдельном предисловии переводчика обусловлена
Необходимость в отдельном предисловии переводчика обусловлена теми затруднениями, которые возникли у меня в процессе перевода некоторых терминов, и желанием пояснить выбор русского эквивалента, что, надеюсь, поможет читателю в правильном понимании и толковании текста стандарта.
И начать свои пояснения я хочу с рассуждения о выборе русского варианта названия стандарта. Дословный перевод названия ("Стандарт иерархии файловой системы"), хотя он уже встречается в литературе (например, в книге Д.Бендела и Р.Нейпира "Использование Linux", М., "Вильямс", 2002 г.) кажется мне неудачным из-за того, что слово "иерархия" имеет в русском языке смысл, несколько отличающийся от смысла, вкладываемого в словосочетание "иерархическая структура". Возможно, в английском термин "Hierarchy" имеет много оттенков и точно выражает суть стандарта, а может быть он употреблен в названии только для краткости. Я не настолько хорошо владею английским, чтобы уверенно отстаивать какое-то из этих утверждений. Но для русского текста дословный перевод показался мне не адекватным содержанию, и я думаю, что для русскоязычного варианта имеет смысл подобрать сочетание терминов, более полно и точно выражающее его содержание.
В процессе перевода стандарта я долго размышлял над выбором такого сочетания, перебрал несколько формулировок и в конце концов решил, что наиболее правильным вариантом будет "Стандарт на структуру каталогов файловой системы" или "Стандартная структура каталогов файловой системы".
Теперь еще о нескольких терминах.
Описание большинства каталогов в стандарте начинается с двух разделов, которые имеют в оригинале названия "Requirements" и "Specific Options". Первый термин переводится однозначно как "Требования", а второй термин можно перевести по разному. В конце концов я выбрал вариант "Рекомендации", поскольку в этом разделе речь в большинстве случаев идет о тех подкаталогах рассматриваемого каталога, которые могут создаваться, а могут и не создаваться, в зависимости от того, устанавливаются ли соответствующие подсистемы. В общем-то речь всегда идет о требованиях создания определенных подкаталогов в текущем каталоге, но называть раздел "необязательные требования" как-то не по-русски. Так что пришлось назвать рекомендациями, хотя мне кажется, что это все-же требования, но по отношению к необязательным каталогам.
Во многих разделах стандарта присутствуют пояснения, которые заключены между строками "Begin Rationale" и "End Rationale". Термин "Rationale" в англо-русском словаре переводится как "обоснования", но мне кажется более приемлемым именно "Пояснения", которое я и использую.
И еще. Если я где-то не совсем верно перевел текст стандарта, это моя вина, не относите все ошибки на счет разработчиков стандарта. О любых замеченных вами ошибках прошу сообщать мне по адресу kos@linux-ve.net.
В.А.Костромин, 9 января 2003 года.
Next: Введение
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Предопределенные типы
В модуле XKB "по умолчанию" определены четыре типа и, соответственно, каждая клавиша "по умолчанию" приписана к одному из этих четырех типов.
"ONE_LEVEL" - клавиши, которые имею только одно значение, независимо от состояния модификаторов (Enter, Escape, Space и т.п.)
"TWO_LEVEL" - клавиши с двумя уровнями (но не "буквенные"), второй уровень выбирается модификатором Shift (но не зависит от Lock). Это, в основном, клавиши на 0основной клавиатуре с цифрами и "специальными" символами (1/!, 2/@, 3/# и т.д.)
"ALPHABETIC" - "буквенные" клавиши. Они имеют два уровня (прописные/строчные), но в отличии от клавиш типа "TWO_LEVEL" зависят не только от Shift, но и от Lock.
"KEYPAD" - клавиши на "дополнительной цифровой клавиатуре" (keypad). Тоже имеют два уровня, зависят от состояния NumLock и Shift.
Надо заметить, что, если клавиша отнесена к соответствующему типу, в ее описании (в xkb_symbols) массив значений должен иметь необходимое количество "уровней".
Как следствие этого, хотя вы можете переопределить любой из "предопределенных" типов (поменяв в нем модификаторы или названия уровней), но при этом нельзя менять в них количество уровней.
Если вам хочется иметь для каких-то клавиш большее количество уровней, придется сочинить для них новый тип (напомню, что назвать его можно как угодно).
Примеры описаний типов, можно посмотреть в соответствущих файлах в директории {XKBROOT}/types/, поэтому я здесь их приводить не буду.
А пример составления нового типа и его использования можно посмотреть в разделе "Примеры":"Новый тип для клавиши Enter".
Иван Паскаль pascal@tsu.ru
Предостережения & Ловушки
Подготовка диска не является простым процессом. Весьма возможно уничтожение содержимого других дисков вашей системы, если не быть аккуратным.
Тщательно проверяйте свою работу. Очень просто уничтожить информацию не на том диске при работе с этими командами. Если сомневаетесь, обратитесь к сообщениям, выдаваемым при загрузке ядра, для определения верного имени устройства.
Излишне говорить, что мы не отвечаем за какую бы то ни было порчу данных или оборудования, с которыми вы можете столкнуться. Работайте на свой страх и риск!
Предпочтение сетевым возможностям
Если сравнивать два рассмотренных в данной статье способа получения доступа к физическим дискам, то предпочтение следует отдать способу, основанному на сетевых возможностях VMware. Во-первых, в этом случае не приходится думать о риске одновременного обращения к диску из разных операционных систем. Во-вторых, решаются вопросы обмена данными не только с локальным физическим диском, но и с другими компьютерами. В-третьих, обмен данными становится двусторонним, так как не только виртуальный компьютер получает доступ к физическим дискам, но можно получить доступ и к дискам виртуального компьютера из ОС базового компьютера, а также из других компьютеров в сети. Монтирование чужих дисков может осуществляться одновременно как в том, так и в другом компьютере. И, наконец, возможен не только доступ к дискам, но и к другим сетевым ресурсам, например, к принтерам.
ПРЕДПОСЫЛКА
Так сложилась, что часть уникальных черт ОС Линукс приобрела благодаря революционному решению представить любые физические устройства (будь то звуковая карта или жесткий диск), как обычные файлы. Для жестких дисков это так называемые файлы блочных устройств. Но в конечном итоге – файлы – они файлы и есть – делать с ними можно то же, что и с обычными.
Звуковой файл просмотреть в звуковом же устройстве тем самым прослушав его: cat /home/mysound.wav < /dev/dsp , редактировать mbr hdd в обычном текстовом редакторе (vi /dev/hda) и т.д.
Эта безобидная особенность может стать мощным оружием в умелых руках. Поэтому будем тренироваться. Для начала нам нужен файл – основа смелых экспериментов. Получить его можно разными способами.
ПРЕИМУЩЕСТВА LINUX
По мнению де Кекелэр и Кристинака, у Linux есть пара преимуществ перед другими виртуальными машинами. Ее относительно небольшой размер обеспечивает установку на одной машине сразу нескольких копий ОС.
Кристинак, чья компания предлагает технологию VM, работающую как с Windows, так и Linux, обращает внимание на невысокую стоимость последней. По его словам, Linux VM в основном используется как сервер Web или устанавливается в научных лабораториях. «Нулевая стоимость — самое большое преимущество, — уверяет он. — Это означает, что вы можете создать столько виртуальных машин, сколько нужно, не тратясь каждый раз на новую ОС, как в случае с Windows». Но Кристинак напоминает, что в США есть компании, например из списка Fortune 1000, которые пока не рискуют перейти на Linux. «Стоимость лицензии — недостаточный аргумент для смены платформы, — говорит он. — Не так уж она и высока... Если компании решатся рассмотреть Linux в качестве варианта, то он им понравится».
Преимущество разнообразия
Во-первых, я рекомендую вам не переделывать все ваши консоли на qlogin. Оставьте проверенную и надежную систему getty/login хотя бы на одной виртуальной консоле для того, чтобы если вы вдруг пропустили что-нибудь с qlogin, вы смогли зайти на другую консоль и исправить это. А если вы ошиблись в чем-нибудь с getty или login, то смогли бы войти на другую виртуальную консоль через qlogin и также исправить ошибку!
Прелюдия Гуляем по ЛЕССу
Перед тем как что-то искать, давайте разберемся чего будем делать с той информацией которую найдем. Любая Юникс подобная система, оснащена полезнейшей утилитой под названием less.
На кажущуюся простоту less являет собой довольно мощную утилиту для просмотра текстовых файлов, можно сказать что она справляется со своей задачей на твердую пятерку с плюсом. Однако у новичков, особенно после гипертекстовых систем помощи распространенных в ВЫНе, сия утилита может вызвать некоторое разочарование, которое связано исключительно с неумением ею пользоваться. А так как по умолчанию именно less является дежурным просмоторщиком man-страниц, то считаю просто необходимым рассмотреть основные его возможности и способы их использования.
"Историческая справка"
В стародавние времена народ заколупался выводить большие листинги программ с помощью обычного cat, который не умел выводить файлы по частям, а выплевывал на экран все содержимое файла целиком, тогда какой то умный дядька придумал утилиту more, которая выводила информацию постранично, выведет страницу и ждет, когда юзер скажет еще мол, и выводит еще одну страницу, поэтому и называлась она more. Но у юзеров была дырявая память, и они забывали что было написано на предыдущей странице, но вернуться назад more, не умел, чем очень расстраивал забывчивых юзеров, которым приходилось заново перезапускать его, тогда другой добрый дядя написал утилиту, которая умела листать файлы как вперед, так и назад, юзеры остались довольны, осталось придумать название утилиты. И в свойственном юникс стиле, в противоположность more; назвали утилиту less.
О названиях тех или иных команд, можно говорить очень долго, на ум приходит история с cat, имя которой происходит от слова конкатенация, соединение. Как-то мне понадобилось получить строки файла в обратном порядке, я на 100% был уверен что такая утилита должна быть, ее просто на может не быть. Искал долго и нудно, даже предполагал что она должна както хитро называться, я бы не удивился если бы она называлась dog. Уже не помню как я нашел то что мне было нужно..... Оно называлось tac! Забавно не правда-ли? cat - задом наперед. Игра словами очень характерная черта для юникс, сюда же можно приплести и такие название как GNU, YACC, bash, hurd. Всего не упомнишь.
После того как вы наберете к примеру man less, на экране появится соответствующая страница руководства, давайте посмотрим как можно перемещаться по ней:
space f страница вниз; enter e j строка вниз; d ^D полэкрана вниз; b ^B страница вверх; y k строка вверх; u ^U пол экрана вверх; g переход на начало файла; G переход в конец файла; r перерисовать текущий экран; F перейти в конец файла, и ожидать новой порции данных, полезно при просмотре логов; { } поиск парной фигурной скобки, в первом случае к открывающей находящейся в верхней строке экрана, во втором случае к закрывающей находящейся в нижней строке экрана. Аналогичные по функциям клавиши - [ ] ( ), предназначены для соответствующих скобок; m <char> маркирует текущую позицию, присваивая ей имя введенного символа; ' <char> переход на ранее отмеченную позицию, имена ^, $, предопределены и являются метками начала и конца файла соответственно. Двойное нажатие на ' - возврат в позицию файла в которой вы были пред последним большим перемещением. Кроме позиции в файле запоминается имя самого файла, то бишь при просмотре нескольких файлов можно ставить метки в разных файлов и переходить между ними; /pattern поиск в документе заданной подстроки, можно использовать регулярные выражения, например моим любимым является выражение следующего вида /^ +text, с помощью него ищется текст, находящийся в начале строки, таким образом можно найти к примеру описание нужного ключа, так если нужно найти описание -S, то в качестве запроса задаем /^ +-S, и находим то что требуется. Если сразу после косой черты ввести один из следующих символов: ^N или !,^E или *, ^F или @, ^K, ^R, то это изменит характер поиска. Так ^N или ! - инвертируют результат поиска, т.е. будет искаться строка не соответствующая запросу, ^E или * - говорит о том что вести поиск в нескольких файлах, так если в текущем файле строка найдена не будет, то поиск будет продолжен в следующем файле заданном в командной строке, ^F или @ - произвести поиск начиная с первой строки, первого файла указанного в командной строке, ^K - произвести поиск с сохранением текущей позиции, так соответствующие шаблону подстроки будут просто подсвечены, а текущая позиция не изменится, и наконец ^R - выключает интерпретацию регулярных выражений в строке поиска; ?pattern тоже что и предыдущее, но в обратном направлении; n и N повторяет предыдущую команду поиска, в первом случае в прямом направлении, а во втором, в обратном; :n :p :x переход к следующему, предыдущему или первому файлу заданному в командной строке соответственно; ! <shell-command> выполнить заданную команду интерпретатора; | <mark> <shell-command> направить участок файла начиная с первой строки отображаемой на экране и до указанной метки по конвейеру заданной команде, если вместо метки указана . - то передается текущий экран; s filename записать информацию в файл, работает только для конвейеров. q выход из программы; Это далеко не все клавиши, а только наиболее полезные с моей точки зрения, за более подробной информацией обращайтесь к Мане.
Preserve[]
Здесь требуются некоторые пояснения.
Напомню, что X-сервер передает прикладной программе сообщение о событии (нажатии/отпускании клавиши) в котором указывается скан-код клавиши и слово - "состояние" состоящее из набора модификаторов.
Для перевода этого сообщения в символ используются соответствующие подпрограммы Xlib.
Естественно, эти программы используют в качестве аргументов и скан-код и "состояние". Причем, отдельные подпрограммы (их там несколько) могут для принятия решения использовать не все модификаторы из "состояния".
Для того, чтобы избежать нежелательных эффектов, когда несколько таких подпрограмм обрабатывают сообщение последовательно, каждая подпрограмма обычно "вычищает" "использованные" модификаторы из слова-"состояния".
Но, в то же время, бывают ситуации, когда это нежелательно и какой-нибудь модификатор должен "приниматься во внимание" несколькими подпрограммами.
Для таких случаев и используется инструкция preserve - "сохранить" (имеется ввиду - сохранять модификатор в "состоянии").
В этой инструкции в квадратных скобках указывется модификатор (или комбинация модификаторов), такой же, как в одной из инструкции map[...], а справа от "присваивания" - модификатор (или набор модификаторов), который нужно сохранять.
Обратите внимание, что в скобках обязательно должна быть комбинация (или модификатор), точно такая же как и в одной из инструкций map[...].
Дело в том, что инструкция preserve[...] не является самостоятельной инструкцией, а представляет собой "продолжение" соответствующей инструкции map[...]. Поэтому, по "комбинации в скобках" XKB "сшивает" эти две инструкции.
А вот в правой части может быть только часть этих модификаторов (или даже один). То есть, в обработке будут учитываться все модификаторы из левой части, а сохраняться только те, которые указаны в правой.
Надо сказать, что в правой части инструкции preserve может, также, стоять и "None", что означает, что "ничего сохранять не нужно".
Но, поскольку "по умолчанию" и так ничего не сохраняется, то такие инструкции особого смысла не имеют и их можно не писать.
Приборы и материалы
Смотри также:
man locate[en];
Поиск файлов на диске[ru];
Мои труды Среди океана команд, а также "find ушами" или Шерлок Холмс GNU-того уезда для ознакомления с другими методами поиска.
Если вы еще не являетесь счастливым обладателем locate, том его можно взять с сайта GNU в составе Findutils 4.1.
Приемы работы
Настройка международной клавиатуры с помощью Xmodmap .
X Keyboard Extension.
Русификация linux.
Секретный арсенал: Неизвестные утилиты.
Поиск в unix. Часть1.
Поиск в unix. Часть2.
Еще один великолепный Shell. (Zsh).
Командный процессор Zsh.
Оболочки
Кто командует парадом?
Всех пингвинов командир (Midnight Commander).
Сироты командира Нортона.
Менеджер файлов Emelfm 0.9.2.
Настройка печати.
Приложение
Previous: Linux
Next: Лист рассылки FHS
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Приложения для работы с графикой
GIMP (В меню Мультимедиа/Графика/GIMP): отличный графический редактор с множеством разнообразных plugin'ов. Позволяет проводить любые операции над всеми известными форматами хранения растровой графики.
Обязателельно попробуйте этот редактор - Вы будете поражены его возможностями. Различные интересные примеры создания изображений в GIMP смотрите на сайте GIMP по-русски по адресу http://gimp.linux.ru.net.
Приложения под X
gnome-terminal: setting->preferences->font->browse. В фильтрах ставим, что шрифт должен иметь charset=koi8-r, после чего выбираем какой-нибудь из шрифтов типа курьер (они моноширинные).
ghostscript. Копируем все .pfm, .afm и .pfb файлы из созданной ранее cyrillic/Type1 в /usr/share/fonts/default/ghostscript. Берем в gpi gs-Fontmap.add и добавляем его в конец /usr/share/ghostscript/5.10/Fontmap (оригинал сохранить). Затем закоментировать в Fontmap алиасы для Helvetica, Courier и Times, раскоментировать алиасы на соответствующие русские шрифты (там два курьера, выбрать CourierCyrPS, см. про Netscape). Еще советуется запускать с ключем -dNOPLATFONTS, но у меня gv и так с ним зпускается. Преобразование ps в pcl для печати дл HP LaserJet:
gs -q -sDEVICE=ljet4 -r600x600 -sPAPERSIZE=a4 -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=-
Netscape 4.6: Edit->Preferences->Fonts. Для кодировки koi8-r выбираем Times(cronyx) и Curier (cronix). Почему-то netscape не любит шрифтов Type1 (ни pfb, ни pfa, ни с метрикой, ни без нее). Проблема при печати - он использует только встроенные метрики шрифтов и русские буквы плывут. Есть заплатка, которая правит бинарник netscape, записывая туда метрики CourierCyrPS и TimesCyrMT (любой версии, у меня сработало на 4.6/4.72). Естественно, теперь нельзя удалять русские Type1 шрифты ;). Также при печати нет подчеркиваний, цветов и оформления страницы (дата, имя файла и т.д.).
Последняя возможность заинтересует тех, кто
[1] Последняя возможность заинтересует тех, кто хочет разместить отинсталлированную операционную систему на компакт-диске.
[2] Для тех, кто не в курсе, что это такое -- речь идёт о точной посекторной (или, если хотите побайтовой) копии дискеты. Т.е. первые 512 байт образа -- это boot-сектор, далее -- всё зависит от типа файловой системы, размещённой на дискете.
[3] Автором статьи делается упор на то, что это должен быть Linux-раздел. Хотя, на самом деле, это не обязательно -- с таким же успехом на его месте может быть и DOS-раздел. Главное, чтобы он был primary, а не extended.
[4] Прошу учесть, что не все файлы по указанной ссылке являются загрузочными образами. Ищите те, что содержат в имени файла "iso" или "img". Да, и к размеру присматривайтесь -- образы дискет будут двух размеров -- 1.44MB или 2.88MB, с учётом компрессии.
[5] Учтите, если вы планируете создать копию с дискеты, чей размер отличается от 1.44MB, вы должны указать для ключа count другое значение. Для 2.88MB -- это будет в два раза больше -- 5670. Вообще-то ключи bs и count нужны только в том случае, если размер дискеты отличается от стандартной -- 1.44MB (хотя где-то же должны жить и здравствовать дисководы на 2.88MB).
[6] Обращаю ваше внимание на то, что обязательно нужно указать полный путь к ISO-образу. Даже если makebt.exe и ISO-образ и находятся в одном и том же каталоге. Проверено -- на эти грабли я уже наступил. :)
[7] Вот, что мне удалось обнаружить, создавая свой собственный мултизагрузочный CD: оказывается первым пунктом меню при загрузке с CD идёт тот образ загрузочной дискеты, что был указан в опциях программы mkisofs. Поэтому в программе makebt.exe нужно указывать только "недостающие" образы.
[8] Увы, но в этом месте автор, что-то очень "мутно" изъясняется, что дальше делать с таким разделом -- в оригинале статьи стоит фраза оканчивающаяся словом "experiment" и многоточие. Скорее всего автор забыл дописать предложение, планируя к нему вернуться позже. Писать свои домыслы на эту тему, не проверенные практикой, не буду, чтобы не загружать вам мозги.
[9] Если будете писать на CD-RW, не забудьте указать "4-ю скорость", а не 8-ю как это указано в примере.
[10] Очень странная ситуация: для первого пункта меню -- это образ указанный при вызове программы mkisofs -- сигнатура отлична от нулевой -- (19). Первым я поставил образ загрузочной дискеты для Windows'98. Для всех остальных пунктов, которые были добавлены при помощи makebt.exe -- (00).
[11] К сожалению, утилита bdiff хороша, как инструмент для "латания" двоичных файлов. Этого у неё не отнимешь. Но вот для получения информации о том, где находятся "разночтения" в файлах, лучше подойдёт утилита cmp из пакета diffutils.
[12] Не уверен, что это ошибка автора, но создавая свой собственный "десятиОСный" загрузочный CD, я обнаружил следующую странность. Первые девять пунктов меню нумеруются от 1 до 9. Далее для 10-го и 11-го (!) пунктов меню используются в качестве "горячих" клавиш символы ":" и ";", соответственно. Методом "научного втыка" я выяснил, что первый пункт соответствует тому образу, что был указан в опциях команды mkisofs. А второй -- тому образу, что указан первым в списке образов в программе makebt.exe (в нашем примере это fbsd.img). При этом оба этих образа не обязательно должны совпадать. Таким образом у нас получается 11 вариантов загрузки! Но если бы всё было так хорошо, то это было бы очень странно. Законы Мерфи никто не отменял. О чём это я? А проблема в следующем -- я не смог найти горячие клавиши для пунктов 10 и 11. Хотя там и указаны символы ":" и ";", но их нажатие ни к чему не приводит. Попытка "потоптать" всю клавиатуру не дала никаких результатов. Возможно кому-то из читателей удастся решить эту проблему. В таком случае не забудьте поделиться как. И последнее. Идеи, изложенные в статье проверялись в среде Junior 2.0, обновлённом из Сизифуса. Пишущий CD-привод -- SONY.
Copyright (C) 2002, Juraj Sipos. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 85 of Linux Gazette, December 2002
Вернуться на главную страницу
Этот безымянный пользователь им очень
[*1] Мда... Этот безымянный пользователь им очень насолил, если они решили дать ему в статье библейское имя.
[*2] Утилита factor раскладывает указанное число на ряд множителей, являющихся простыми числами: 10142 = 2 * 11 * 461
[*3] Угу. Читайте и "...будет вам благодать..." :)
[*1] Очень многие делают ошибку в названии "иксов" -- автор статьи не исключение. :) Правильное название X Window (в единственном числе). Точнее -- X Window System. А ещё лучше `man X` и сразу всё станет понятно. Помню случай, когда в fido7.ru.linux распекали кого-то на эту тему. :)
[*2] Увы, но автор статьи заблуждается -- VMware не создаёт сразу файл размером в 4 Гб. Изначально размер этого файла не превышает нескольких десятков или сотен килобайт и растёт по мере заполнения "дискового" пространства виртуальной машины. И совсем необязательно создавать диск такого размера. Просто 4 Гб -- это максимальный размер для виртуальных дисков.
[*3] VMware может эмулировать как SCSI так и IDE-диски. Почему автор так усиленно акцентирует внимание именно на SCSI -- не понятно.
[*4] Если перед вами встанет вопрос кому быть host-машиной, Linux или Windows, то лучший выбор это всё-таки Linux. И не потому, что эта рассылка ориентирована на Linux-пользователей. :) Windows работает пошустрее в качестве guest-машины, чем Linux в этой же роли под управлением "форточек" (по крайней мере, "иксы"). Тем более можно запустить VMware на отдельной консоли. Например, вот так: `xinit /usr/bin/vmware -x -q /home/alex/vmware/nt4/nt4.cfg -- :1 &`
[*5] Для тех, кто не в курсе -- у виртуальной машины существует три типа подключения к сети: bridged, NAT и host-only. Bridged работает, используя сетевую карту и нужен в том случае, если вы хотите "расположить" свою виртуальную ОС в "общей" локальной сети. NAT и host-only используют виртуальные сетевые интерфейсы, которые создаёт VMware. При этом NAT используется, если вы хотите разместить виртуальные машины в отдельной подсети и использовать host-машину как шлюз для общения с "внешним" миром. Host-only нужен в том случае, когда вы хотите ограничить виртуальным ОС доступ "наружу". В принципе, вы можете это обойти, если настроите proxy-сервер на host-машине. Есть ещё custom-подключение, но это частный случай одного из трёх вышеперечисленных вариантов.
[*6] Хм.. Не знаю, кто как, но я ничего не понял из того, что хотел сказать автор. :) Хотя, возможно, догадываюсь. Дело в том, что при настройке виртуальных сетевых интерфейсов, программа конфигурации (я сейчас говорю за вариант VMware для Linux) пытается определить свободный диапазон адресов для виртуальной сети. Возможно, у Алана VMware выбирала всегда эти два диапазона, из чего он сделал вывод, что они являются зарезервированными. Это не так. Вы можете отказаться от режима автоматического определения диапазона свободных сетевых адресов и ввести их вручную. Главное, чтобы вы отдавали себе отчёт в том, что делаете.
[*7] К сожалению, я не согласен с утверждением автора. Работая с VMware никогда не наблюдал, чтобы скорость на виртуальном сетевом интерфейсе в режиме host-only или NAT поднималась выше 7-8 Мбит/сек. Возможно в режиме подключения bridged на сетевой карте со скоростью в 100 Мбит/сек и можно получить большую, но проверить это лично пока не удалось и по утверждению тех, кто смог это проверить, скорость на виртуальном интерфейсе не поднимается выше 10 Мбит/сек.
Небольшой разбор полётов по статье "Так ли хороша VMware для пользователей Linux?". В примечаниях к ней я допустил ошибку, указав, что максимальный размер виртуальных дисков, создаваемых VMware -- это 4Гб. Начиная с версии 3.0 максимальный размер виртуальных IDE-дисков равен 128Гб, а SCSI -- 256Гб. В случае с VMware 2.0 это было 2Гб. Сплошной конфуз! :) Спасибо за замечание Alex Radetsky и другим читателям, приславшим замечание. Это хорошо -- значит обратная связь работает и рассылка не превращается в "глас вопиющего в пустыне". :)
Пример файла конфигурации LILO
Будем считать, что устройство /dev/hda1 является разделом с DOS/Windows, а раздел /dev/hda2 содержит Linux. В таком случае файл /etc/lilo.conf может иметь примерно такой вид:
boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.2.11-4bc label = linux read-only other = /dev/hda1 table = /dev/hda label = dos
Строка boot указывает загрузочное устройство. Строка compact включает режим сжатия map-файла, содержащего характеристики загрузочных ядер; это ускоряет начальную загрузку. С помощью команды message можно заставить загрузчик выдавать при загрузке произвольное сообщение. Начиная со строки image, идут секции конфигурационного файла, соответствующие разным операционным системам. В каждой такой секции имеется строка label. В этой строке записывается имя, которое вводится в ответ на приглашение LILO и служит для выбора пользователем загружаемой ОС. Если имя не введено по истечении времени, заданного строкой delay (задается в десятых долях секунды), будет загружена ОС, выбираемая по умолчанию. В данном случае по умолчанию будет загружаться Linux, поскольку соответствующая ей секция стоит первой в файле. Можно указать загружаемую по умолчанию систему с помощью строки вида default=dos (т.е. используя метку из соответствующей строки label).
Строка TABLE=<device> содержит указание на устройство, на котором находится таблица разбиения диска. LILO не передает информацию о разбиении загружаемой операционной системе, если эта переменная не задана. (Некоторые ОС имеют другие средства для определения того, из какого раздела они загружены.) Необходимо выполнить команду /sbin/lilo, если ссылка на таблицу разбиения, задаваемую переменной TABLE, изменена.
Если задать строку (секцию) other = /dev/hda1 в файле /etc/lilo.conf, то в корневом каталоге диска /dev/hda1 (диска C:) должен находиться вторичный загрузчик, например, NT Loader. Если нет желания видеть меню загрузки NT Loader, следует установить значение timeout в файле boot.ini равным 0 (задается в секундах).
Если из LILO предполагается загружать Windows 95/98, в /etc/lilo.conf надо добавить следующие строки:
other = /boot/bootsect.dos label = win
где файл bootsect.dos берется из корневого каталога того диска, на котором стоит NT Loader.
Пример файла типа xkb_keycodes
default xkb_keycodes "xfree86" {
minimum= 8; maximum= 134;
<TLDE> = 49; <AE01> = 10; <AE02> = 11; .......
indicator 1 = "Caps Lock"; indicator 2 = "Num Lock"; indicator 3 = "Scroll Lock";
virtual indicator 4 = "Shift Lock"; virtual indicator 5 = "Altrnate Group";
alias <ALGR> = <RALT>; };
Иван Паскаль pascal@tsu.ru
Пример выполнения sfdisk в среде Linux
Программа sfdisk в Linux показывает всю цепочку:
[root]# sfdisk -l -x /dev/hdaDisk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot | Start | End | #cyls | #blocks | Id | System | |
/dev/hda1 * | 0+ | 189 | 190- | 1526143+ | 6 | FAT16 | |
/dev/hda2 | 190 | 783 | 594 | 4771305 | 5 | Extended | |
/dev/hda3 | 0 | - | 0 | 0 | 0 | Empty | |
/dev/hda4 | 0 | - | 0 | 0 | 0 | Empty | |
/dev/hda5 | 190+ | 380 | 191- | 1534176 | 6 | FAT16 | |
- | 381 | 783 | 403 | 3237097+ | 5 | Extended | |
- | 190 | 189 | 0 | 0 | 0 | Empty | |
- | 190 | 189 | 0 | 0 | 0 | Empty | |
/dev/hda6 | 381+ | 783 | 403- | 3237066 | 7 | HPFS /NTFS | |
- | 381 | 380 | 0 | 0 | 0 | Empty | |
- | 381 | 380 | 0 | 0 | 0 | Empty | |
- | 381 | 380 | 0 | 0 | 0 | Empty |
Примеры изменения конфигурации XKB
Прежде всего, хочу заметить, что все решения, рассмотренные в примерах, не претендуют на "правильность".
Более того, многие из них я сам считаю или излишне "корявыми" (громоздкими), или "идеологически неправильными".
Но, с другой стороны, я не предлагаю готовые решения для всех проблем, а только хочу показать - чего можно добиться простым изменением текстовых "конфигов" XKB.
Во-первых, давайте решим вопрос -
Принятие решений Плюсы и минусы
По мере работы на вашем пути будут встречаться новые проблемы, которые надо решать. Например, на винчестере за неделю количество bad-секторов увеличилось вдвое. Винт - доходяга, надо срочно менять! Или сгорела лампа в сканере. Требуется замена. К сожалению, часто у начальства иной взгляд на проблему: "Денег пока нет!" - стандартный ответ. Винчестер еще работает? Вот и пусть работает, позже поменяем! Сканером мы не часто пользуемся, подождет! И разочарованный сисадмин уходит ни с чем.
В чем тут подвох? Да просто, когда HDD окончательно выйдет из строя в самый неподходящий момент, или когда срочнейшим образом понадобится сканер,- угадайте, кого сделают виноватым? На ваши объяснения - ":я же еще две недели назад говорил!" - вам расскажут, что финансы - вещь переменная, сегодня их нет, а завтра есть. Неделю назад все можно было проплатить, что ж не напомнил?!
Не оказаться в столь незавидном положении нам поможет старая знакомая - служебная записка. В ней описываете неисправность и способ устранения, получаете визу начальства - дело сделано, с вас ответственность снята! В довершение можете предоставить счет-фактуру на заменяемое устройство. Не оплатили - сами виноваты!
В качестве второго наглядного примера проблемы принятия решения можно представить покупку техники. Рано или поздно это предстоит сделать (расширение фирмы, частичное или полное обновление имеющейся техники и т. п.). Вероятнее всего, эта честь выпадет вам - как профильному спецу. Шеф вызовет и скажет, поблескивая перстнями: "Вася, присмотри 10-15 компьютеров покруче, шоб, когда ко мне заехал Вован, так и обомлел бы от зависти! И прибамбасов к ним набери, всяких там сканеров-шманеров! Денег не жалей, все проплатим!". Так это же классно - скажете вы - где же тут подводные камни? А вот они: идя на поводу у шефа, вы взваливаете на себя дополнительные обязательства, которые будете не в силах выполнить. Фраза "не жалей денег" подразумевает студенческую ситуацию "первый день после стипендии в столовой" - выбирается все самое дорогое. "Дорогое" - значит, новое. А hardware - конечно, в меньшей степени, чем софт от БГ - но также подвержено синдрому первого релиза очередной версии Windows: неустановившаяся частота, нет нормального набора логики и т. п.
:И что вы ответите потом на претензии руководства: "Мы тебе купили все самое дорогое, что можно было купить - почему же оно сбоит и зависает?".
Проблема
Задача, с которой сталкиваются все пользователи Linux, это оценка размеров и разметка дискового пространства на разделы во время установки системы. И не имеет значения, системный ли это администратор, управляющий площадкой серверов, или это обычный/продвинутый пользователь, обнаруживший, что у него заканчивается место на диске. Звучит знакомо, не так ли? Вот и начинается "борьба за место". О! У пользователя появляется блестящая идея и проблема решена (после нескольких бессонных ночей) с использованием разных некрасивых методов (читай: "грязных хаков") -- например, символических ссылок между разделами, или утилит для изменения размеров разделов (parted). Но, в общем, это все временные решения и рано или поздно мы снова встаем лицом к лицу с той же проблемой.
Как хотелось, чтобы это проблема была решена!! Сидящий в тебе экспериментатор хочет, чтобы у тебя была система, в которой можно спокойно экспериментировать не оглядываясь на размеры разделов, а дисковое пространство могло просто подключатся и удалятся по мере надобности. Если же вы -- системный администратор, управляющий серверами, постоянно подключенными к Internet, ставки гораздо выше. Каждая минута простоя приносит убытки. И, возможно, что потенциальный клиент не вернется на ваш сайт. Едва ли вы сможите избежать необходимости перезагрузки, после изменений в таблице разделов. И так, каждый раз, когда заканчивается дисковое пространство. LVM, Система управления логическими томами, поможет вам выходить победителем в таких ситуациях.
Проблема первая
Первый круг проблем связан с тем, что система делит всех юзеров только на три категории. Причем только вторая категория представляет собой "четко очерченную" группу юзеров.
Первая категория состоит только из одного юзера - владельца, и ее права не так-то просто "размазать" на группу юзеров.
Третья же категория состоит вообще из всех юзеров, зарегистрированных на данной машине, то есть границ не имеет.
Если возникнет задача - наделить разными правами (по отношению к конкретному файлу) разные группы юзеров, причем это именно группы, а не "отдельный юзер" и не "все зарегистрированные юзеры", то возникнут проблемы даже у root'а.
Проблема вторая
Второй круг проблем связан с тем, что составлять группы может только root. Поэтому, если владелец файла захочет по своему усмотрению распределить права на свой файл различным юзерам, то оказывается, что он практически не имеет для этого никаких механизмов.
Он может "закрыть" файл от всех или, наоборот, "открыть" его всем. Наличие такой категории как "группа допущенных" не очень-то помогает, поскольку поменять состав этой группы "рядовой юзер" не сможет.