Работа с текстом
Для преобразования текстов из формата MS Word служат catdoc и wv.
Программа catdoc (автор - Виктор Вагнер) читает файлы MS Word (разных версий) и выводит их на стандартное устройство вывода (обычно - текстовый терминал) в виде плоского текста. Самый простой вариант использования:
catdoc my.doc > my.txt
Вы можете определять кодировки входного и выходного текста, а также работать с catdoc в интерактивном графическом интерфейсе, который предоставляет программа wordview из того же пакета.
Если Вам нужна не только текстовая информация из файла MS Word, то к вашим услугам программа wvHtml из пакета wv. Она преобразует файл документа в html, пробуя сохранить картинки и фреймы. По умолчанию вывод
осуществляется в Unicode html, если Вам это не нужно. то можно указать кодировку результирующего файла при помощи параметра -c:
wxHtml -c koi8r my.doc > my.htm
OpenOffice - это целая офисная система, являющаяся свободным вариантом StarOffice, и включающая в себя текстовый процессор, электронные таблицы, систему подготовки презентаций, графический редактор, редактор формул.
Достоинством системы является хорошая совместимость с форматами MS Office, а ее главным недостатком - полное отсутствие в данной версии системы печати. В результате в ней удобно готовить документы, но печатать их пока
приходится из других приложений.
Работа в конcольном режиме
Базовый набор команд состоит из: cd <директория> Сменить текущую директорию на требуемую, двумя точками обозначается директория нижнего уровня, одной - текущая ls <директория> Просмотреть список файлов, по умолчанию выбирается текущая cp <файл> <файл> Копировать файл rm <файл> Удалить файл mv <файл> <файл> Переместить файл mkdir <директория> Создать директорию pwd Указать текущую директорию
Причем писать название команды до конца не обязательно, достаточно нажать клавишу <Tab> и shell допишет название сам. Если этого не произошло, это означает, что есть более чем одна команда с таким началом. Нажмите <Tab> еще раз и увидите весь этот список. Если дважды нажать <Tab> в начале строки, то увидите список всех команд, правда shell сначала поинтересуется, работать ли ему. Ведь список такой большой, а shell программа ленивая.
Прочтя этот список, многие захотят испытать ту или иную команду. Но не все команды предназначены для простых смертных, и они у вас не запустятся. Те, которые запустятся, могут не заработать, поскольку у них недостаточно информации для работы. Чтобы узнать все требования выбранной команды есть команда man, это сокращение от manual. Из ее названия понятно, что она возвращает описания команды. Наберите man <команда> и получите ответы на все вопросы. Но команда man имеет более широкое применение, нежели простое описание команд, она говорит также и о системных вызовах и многом другом, что может потребоваться уже программисту. Существуют man-страницы и на русском языке, также можно найти практически все man-страницы в интеренете на сайте www.linuxdocs.ru.
Например: rm -r Удаление файлов и директорий rm -f Удаление без глупых вопросов
Те, кто работал с DOS (я вообще то с ним имел дело всего пару раз), легко привыкнут набирать команды с клавиатуры. Однако разница не только в названиях отдельных команд. Самая главная разница заключается в том, что shell, вообще-то, не всегда интересуется названием вашего текущего каталога. Часто это название приходится ему напоминать. Например, при запуске исполняемого файла. Если просто набрать abvgd, то shell поищет в каталоге /sbin, затем в /bin, затем в /usr/sbin, заглянет в /usr/bin, может еще куда, затем плюнет на это дело и выругается. Надо набрать ./abvgd (обратите внимание на точку перед слэшем).
Другой серьезной разницей являются имена файлов. Здесь различаются строчные и прописные буквы, запрещен пробел, а перед названием директории стоит не обратный слэш \, а прямой /. Здесь также разрешены длинные имена файлов, до 256 символов, и отсутствует ограничение на длину полного имени (это имя файла вместе с именами всех директорий).
Скучающие по Norton Commander могут набрать mc, и, о чудо, увидеть пару голубых панелей. А на них кучу файлов с непонятными атрибутами. Если название файла начинается с точки, то это скрытый файл, то же самое относится и к директориям. Если перед названием стоит *, то файл исполняемый (звездочка не входит в название, это атрибут). После названия файла или директории идут имя владельца, имя группы владельца и атрибуты (это 3 восьмизначные цифры). Атрибуты регулируют права чтения, записи и исполнения и меняются командой chmod <файл> <новые параметры> (это сокращение от change mode). Для директории исполнение означает получение списка ее содержимого, а чтение - открытие. Каждая цифра получается как "чтение"*4+"запись"*2+"исполнение", каждый параметр принимает значение 0 или 1. Первая цифра означает права владельца, вторая его группы, третья - прочие. Атрибут 666 означает права на чтение и запись для всех, но запрет на исполнение. root имеет неограниченные права.
В аргументах большинства команд входящие в название файлов буквы и цифры можно заменять специальными символами - $ (заменитель одного любого символа), * (заменитель любого количества любых символов), {1-3} (заменитель обозначенных символов). Будьте осторожны с употреблением этих символов!
Примечание: несколько лет тому назад на моего научного руководителя (он в тот момент был root'ом) в Университете нашло непонятное забвение, и он в каталоге /mnt кафедрального сервера набрал следующую команду:
rm -rf *
После этого 3 диска стали девственно чистыми. Самым страшным итогом этого происшествия стала гибель архивов порнухи двух групп. А это 17 человек!
Помимо обычных файлов в каталоге могут быть еще и линки (link). Если вам знакомо такое понятие как ярлык (а кому оно сейчас не знакомо), то линк - это обобщение ярлыка. Обобщение это состоит в том, что если ярлыки служат для удобства пользователей, то линки могут использоваться еще и программами. Существует два типа линков - мягкие (soft) и жесткие (hard). Жесткие линки неотличимы самого файла, и любое изменение жесткого линка эквивалентно изменению файла. Нельзя удалить файл, если на него указывает хоть один жесткий линк. Мягкие ссылки больше похожи на ярлыки, поскольку их можно оставлять везде, тогда как для жестких есть ограничения. Жесткий линк получается командой ln <файл>, а мягкий ln -s <файл>. Если файл открыт программой, то это эквивалентно наличию жесткого линка.
Windows - операционная система многозадачная, это означает, что она работает и глючит одновременно. (Когда я набирал предыдущую фразу в Word'е, у него перекосило шрифты.) Для UNIX мультизадачность означает немного другое. Вы можете запустить несколько процессов, переключаться между ними, менять приоритеты, и многое другое. Если процесс не понравится, его можно убить, только надо иметь в виду, что у каждого процесса имеется владелец. И ему могут не понравиться ваши действия. А поскольку простой пользователь может убивать только свои процессы, то всеобщим убийцей является root. Получить список процессов можно командой ps.
Для организации многозадачности в UNIX предусмотрено 2 режима foreground и background. Отличаются они тем, что foreground работает с клавиатурой, в то время как background доступа к ней не имеет. Командами для доступа к этим режимам являются fg и bg с номером процесса. Если у вас открыта только одна консоль (а не 2 или 3), то бэкграундные процессы посылают свой вывод только на нее. Выглядит это жутковато, мало кто способен разобраться в мешанине букв, цифр и других символов. Но есть масса облегчителей (я не придумал это слово, а прочел на банке с соком) работы, например команды < и >. Это команды ввода/вывода в файл. С их помощью вы можете отправить вывод в файл (например, на другую консоль или иное устройство). Команда служит для отправления вывода одного процесса на вход другого. Если после команды стоит символ &, то она автоматически исполняется в бэкграунде.
Для управления процессами также служит команда kill, особенно полезно знать ее версию killall. Применение этой команды root'ом может привести к немедленной перезагрузке. Она посылает системные вызовы процессам, сам вызов определяется ключом, который пишется между командой и номером процесса.
Тупоконечники против остроконечников, зенитчики против спартачей, поклонники Intel против сторонников AMD - это противостояние вечно. Есть оно и среди пользователей Linux. Это вечное противоборство текстовых редакторов vi и emacs. Многие, поработав с Word, удивляются, как можно готовить тексты без графического режима. "Можно!" - отвечают им и те и другие. Это мощнейшие из известных мне текстовых редакторов, во много раз превосходящие Office XP по возможностям. И не просто отвечают, а пишут книги о любимом редакторе, и разгромные статьи о противном. Количество ругани, выплеснутой в этом противостоянии, явно превосходит новомодное выяснение "кто тут производительнее". Редактор emacs имеет собственный язык программирования elisp, умеет работать с TeX, HTML и другими языками подготовки текста. Насчет HTML я не знаю, но ничего лучше для TeX просто не существует. Широко известен (и много лет развивается) макропакет для emacs, который представляет собой личного психотерапевта. Редактор vi не имеет собственного языка программирования, но система его команд способна подключать компиляторы C/C++, Java, FORTRAN, Perl и многое другое, даже с синтаксической подсветкой. Я не могу описать все возможности этих языков, это тема для нескольких отдельных книг, благо они написаны. Недавно появился emacs и для Windows.
Отгремевшая же недавно Великая Броузерная Война никак не задела пользователей Linux. Microsoft не удосужился сделать текстовую версию своего IE с открытыми кодами. А создатели lynx удосужились! Ходить по сети можно и в текстовом режиме. Есть версия для Windows по адресу http://jim.spath.com/lynx_win32/. Или можно посмотреть под виндами, как выглядит паутина для юниксовой консоли, просто зайдя в Библиотеку Мошкова http://lib.ru. А когда зайдете, то помимо художественной и не очень литературы найдете там лучшую подборку книг по UNIX.
Linux Navigator. Стр 2. Инсталляция
Содержание: |
Linux Navigator. Консоль
Linux Navigator. Инсталляция
Linux Navigator. Опции ядра
Linux Navigator. Администрирование
Linux Navigator. Файловая система 1. Монтирование.
Linux Navigator. Файловая система 2.
Linux Navigator. Настройки сети.
Работаем с историей команд Часть I Основы
Как известно, лень человеческая - помимо слабости, является одним из основных двигателей прогресса. Не чужды ей и простые смертные линуксоиды и юниксоиды вместе взятые. Итак, как помочь человеку попавшему в дебри командного интерпретатора и облегчить его труд и усилить во сто крат силу его? Ответ на сей вопрос прост - надо дать ему в руки, и научить пользоваться таким полезным инструментом, как история команд. Сей инструмент в той или иной мере присутствует во многих программах и системах. В том же многострадальном MS-DOS, было жалкое подобие истории введенных команд, история также присутствовала в NC, FAR и других командных оболочках. Но там они ни в какое сравнение не идут с возможностями присутствующими в любом мало мальски распространенном shell под linux или unix. Далее я буду описывать работу c bash, хотя на сколько мне известно tcsh, csh и некоторые другие интерпретаторы имеют сходный набор команд для работы с историей.
Итак начав работу с командной строкой bash, я обнаружил что с помощью клавиш перемещения курсора можно перемещаться по списку ранее введенных команд. Так когда мне нужна была некоторая команда из ранее введенных я жал клавишу „стрелка вверх“ до тех пор пока нужная мне не появлялась в командной строке, потом я ее корректировал нужным мне образом и жал „Enter“ для ее выполнения. Это конечно значительно экономило время однако, как оказалось, не было наиболее эффективным способом работы.
Итак, все по порядку. Для просмотра списка ранее введенных команд в bash - имеется команда history. По умолчанию она выводит список команд хранящийся в истории. Размер данного списка определяется переменными окружения HISTSIZE - размер списка хранящегося в памяти интерпретатора, а HISTFILESIZE - максимальное количество команд хранящихся в файле истории. По умолчанию этоn файл ~/.bash_history, а его размер - 500 команд. Если вы желаете хранить историю в другом файле, то нужно в .bashrc, задать команду - HISTFILE=~/.vasya_history. Я для себя переопределяю только размер списка команд и размер файла истории, устанавливая их значения в 1000 команд. Итак введя:
$ history
1 history | less 2 hg test 3 test 333 4 lynx www.yahoo.com 5 cat /etc/profile.d/colorls.sh 6 vim .screen 7 vim .screenrc .......................... 305 man bash 306 man vfork 307 hg lynx 308 cd txt/everyday/ 309 vim history.txt 310 histroy
Отсюда видно, что в истории на данный момент находится 310 команд, конечно они все на экране не поместятся, посему если вам надо только последние 20 команд, то можно набрать:
$ history 20
295 vim lib/advhist.sh 296 getpg 297 vim .bash_logout 298 vim .bashrc 299 cat .lynxrc 300 vim .lynxrc 301 ls lib 302 cat .bashrc 303 getmail 304 ls 305 man bash 306 man vfork 307 hg lynx 308 cd txt/everyday/ 309 vim history.txt 310 histroy 311 history 312 history 313 fg 314 history 20
Таким образом получим только последние 20 команд. Каждая команда имеет свой номер, с помощью которого к ней можно обратится. Если нам надо повторить 302 команду, то просто печатаем:
$ !302 cat .bashrc # .bashrc
# User specific aliases and functions if [ "$PS1" -a -f ~/lib/advhist.sh ]; then . ~/lib/advhist.sh fi # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi umask 066
Здесь сначала печатается команда под номером 302 - cat .bashrc, а затем результат ее выполнения.
Приведу список команд для работы с историей:
!! - ссылается на предыдущую команду; !n - ссылается на команду под номером n; !-n - ссылается на команду по номером „текущая минус n“; !string - ссылается на команду, начинающуюся с string; !?string[?] - ссылается на команду, содержащую строку string; ^string1^string2[^] - „быстрая замена“, заменяет первое вхождение строки string1 в предыдущей команде, на string2, после чего выполняет полученную команду. Приведу несколько примеров по использованию вышеприведенных команд. Я часто выполняю приблизительно следующую последовательность:
$ locate diald.conf /etc/diald.conf $ cat /etc/diald.conf .......
Первой командой я нахожу требуемый файл, а второй вывожу его содержимое. Сей короткий пример можно автоматизировать следующим образом:
$ locate diald.conf /etc/diald.conf $ cat `!!` cat `locate diald.conf` mode ppp accounting-log /tmp/dialdlog .....
Таким образом я избегаю повторного ввода имени файла. `!!` означает - выполнить предыдущую команду и подставить ее результат в качестве параметра cat. Результирующая команда после подстановки из перечня печатается сразу за командной строкой: cat`locate diald.conf`.После чего выводится результат выполнения команды. На мой взгляд весьма удобно.
Идем дальше:
$ history 10 324 hg \' 325 hg \` 326 locate diald.c 327 locate diald.conf 328 cat `locate diald.conf` 329 getmail 330 history 10 331 ls 332 ps 333 history 10 $ !328 cat `locate diald.conf` mode ppp accounting-log /tmp/dialdlog ..........
Данная команда выполняет 328 команду перечня. Другой способ обратится к этой же команде:
$ !-6 cat `locate diald.conf` mode ppp accounting-log /tmp/dialdlog ..........
Здесь используется обратная нумерация, то есть номер команды вычисляется как текущая минус 6.
Следующий способ, это когда я помню что команда начиналась со строки cat, чтобы ее повторить я печатаю следующее:
$ !cat cat `locate diald.conf` mode ppp accounting-log /tmp/dialdlog ..........
А если я не помню названия начала команды, но помню ее середину diald, то тогда набираем:
$ !?diald cat `locate diald.conf` mode ppp accounting-log /tmp/dialdlog ..........
Следующий интересный момент касается исправления неверно введенных команд или их корректировки:
$ cta /etc/diald.conf bash: cta: command not found $ ^ta^at cat /etc/diald.conf mode ppp accounting-log /tmp/dialdlog ...............
В результате опечатки первая команда была введена с ошибкой, вместо cat, было введено cta, естественно интерпретатор не нашел такой команды, о чем и вывел предупреждение. Вторая команда ^ta^at^ - исправляет ошибку, делая замену ta на at. Это намного удобнее чем вызывать предыдущую команду на экран потом подводить курсор под нужный символ, а затем редактировать команду с помощью вставки/удаления символов. Данная возможность особенно удобна при удаленной работе с telnet на медленных линиях.
До настоящего момента при вызове команд из списка, мы ссылались на команду целиком. Но частенько надо повторить не всю команду, а только ее часть.
Пример:
$ cat /etc/diald.conf mode ppp accounting-log /tmp/dialdlog ......... $ vim !$
Первой командой cat мы выводим содержимое файла, например для того, чтобы удостоверится что это нужный нам файл. Удостоверившись я хочу его отредактировать, для того, чтобы повторно не набирать имя файла пишу vim !$ - что после подстановки преобразуется в vim /etc/disld.conf. Кратко опишу основные операторы обращения к различным частям предыдущей команды:
$ - последний аргумент командной строки; ^ - первый аргумент командной строки; 0 - нулевое слово, другими словами имя команды; N - N-ый аргумент командной строки; x-y - аргументы с x по у командной строки; -y - сокращенное обращение к 0-y; * - все аргументы, синоним 1-$; x* - синоним x-$, другими словами аргументы с номера x до конца строки; x- - синоним x*, но не включает последний аргумент.
Перед всеми описанными операторами, кроме ^ $ * %, необходимо ставить двоеточие.
Для ясности приведу несколько примеров:
$ echo 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 $ echo !$ echo 8 8 $ echo 1 2 3 4 5 6 7 8 $ echo !* echo 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 $ echo !:3* echo 3 4 5 6 7 8 3 4 5 6 7 8 $ echo !^ echo 3 3 $ echo !-2:-3 echo echo 3 4 5 echo 3 4 5
Я наиболее часто использую операторы !^, !$, !* - которые ссылаются на первый аргумент, на последний аргумент и на все аргументы предыдущей команды соответственно.
Еще нужно упомянуть о так называемых модификаторах, подробно о них можно почитать на страницах руководства. Но об одном из них я скажу отдельно. Этот заслуживающий внимания модификатор - :p. Он говорит интерпретатору о том, что полученную в результате подстановки команду не надо выполнять, а только напечатать. Например:
$ echo 1 2 3 4 5 6 7 $ !! echo 1 2 3 4 5 6 7 1 2 3 4 5 6 7 $ !!:p echo 1 2 3 4 5 6 7 $ echo !-2:p echo echo 1 2 3 4 5 6 7 $
Как можно заметить - последняя и предпоследняя команды echo, не были выполнены, так как использовался модификатор :p. Вместо этого были выведены результаты подстановки.
Вот в общих чертах и все. Что я имел сказать - я сказал.
Еще хочу предложить вашему вниманию, парочку небольших скриптов облегчающих работу с историей, написанных мной на досуге, так сказать, для тренировки с одной стороны, и для удобства, с другой. Их описание можно найти на следующей странице, а сами сценарии на странице Программки.
Работаем с историей команд Часть II Усовершенствования
Разбираясь с функционированием перечня ранее введенных команд, я обнаружил что перечень обладает несколькими отрицательными свойствами. Так при вводе одной и той же команды, она каждый раз оседает в истории. Пример:
$ echo 1 1 $ echo 1 1 $ echo 1 1 $ history 5 26 PS1='$ ' 27 echo 1 28 echo 1 29 echo 1 30 history 5
Как видно команда echo 1 была три раза введена и три раза была записана в историю. Для чего не понятно. Это можно устранить вставив строку HISTCONTROL=ignoredups в ваш файл ~/.bash_profile. Вышеприведенный пример будет выглядеть следующим образом:
$ HISTCONTROL=ignoredups $ echo 1 1 $ echo 1 1 $ echo 1 1 $ echo 1 1 $ history 4 42 history 4 43 HISTCONTROL=ignoredups 44 echo 1 45 history 4
Как видно теперь повторяющаяся четыре раза команда echo 1, в перечне встречается только один раз. Но вот от следующей неприятности вышеприведенная опция не спасет:
$ echo 1 1 $ echo 2 2 $ echo 1 1 $ history 5 51 history 6 52 echo 1 53 echo 2 54 echo 1 55 history 5
Здесь команда echo 1, включена опять-таки два раза, что на мой взгляд, весьма неприятно.
Еще один неприятный момент, это то, что история засоряется короткими командами, смысла хранить которые нет. К таким командам можно отнести ls, ps, who, короче, те команды, длинна которых меньше 3-5 символов. У меня таких команд большинство. И что самое обидное, это то что из-за несколько сотен таких коротких команд, а также повторного включения одной и той же команды в перечень, перечень переполняется и из него выбрасываются действительно нужные команды.
Чтобы это исправить, пришлось написать парочку небольших функций облегчающих работу с историей. Скрипт реализующий их можно найти на странице Программы.
Если вкратце, то там реализованы такие функции для работы с историей:
hs - записывает историю в $HISTFILE, кроме того выбрасывает все повторяющиеся команды, а также команды длинна которых меньше $MINHISTITEMSIZE, таким образом перечень команд избавляется от мусора. Данная команда выполняется автоматически при выходе из интерпретатора; hr [n] - название от History Reverse. Печатает n - строк истории, причем кроме прямой нумерации печатает обратную, что облегчает обращение к командам с помощью !-n, если n=0, то выводит весь перечень, если n опущено, то печатает только $DEFAULTPRINTSIZE строк истории; hg [string [n]] - название от History Grep. Синоним hg n | egrep -i string, напечатать n - последних элементов истории, в которых встречается строка string, причем в строке могут применяться расширенные регулярные выражения, и она не чувствительна к регистру. Если n опущено, то поиск ведется по всему перечню. Чтоб было более понятно о чем идет речь приведу пример:
$ hr 10 348 echo $HISTFILESIZE 9 349 vim lib/advhist.sh 8 350 ls 7 351 PS!='$ ' 6 352 PS1='$ ' 5 353 hr 4 354 ps 3 355 PS1='$ ' 2 356 who 1 357 hr $ hr 5 5 354 ps 4 355 ws 3 356 who 2 357 hr 1 358 hr 5 $ hs # Выкидывает из перечня короткие и повторяющиеся команды $ hr # Проверяем результаты 10 716 lynx sit/linux 9 717 getpg 8 718 lynx www.sit.kiev.ua/linux 7 719 echo $HISTFILE 6 720 echo $HISTSIZE 5 721 echo $HISTFILESIZE 4 722 vim lib/advhist.sh 3 723 PS!='$ ' 2 724 PS1='$ ' 1 725 hr $ hg ping # Находим все команды в которых присутствует подстрока ping 116 613 ping www.yandex 53 676 ping www.yandex.ru 1 728 hg ping $ !-53 # Выполняем найденный ping ping www.yandex.ru PING yandex.ru (62.118.249.254) from 195.230.153.157 : 56(84) bytes of data. 64 bytes from yandex.ru (62.118.249.254): icmp_seq=0 ttl=235 time=609.5 ms 64 bytes from yandex.ru (62.118.249.254): icmp_seq=1 ttl=235 time=600.0 ms .....
Замечу, что сохранение отфильтрованного перечня команд выполняется автоматически, при выходе из интерпретатора, или при обрыве связи при работе на удаленной машине.
Для использования этих функций, advhist.sh должен находится в ~/lib/advhist.sh, а в ваш .bashrc, необходимо добавить следующие строки:
if [ "$PS1" -a -f ~/lib/advhist.sh ]; then . ~/lib/advhist.sh fi
Для настройки можно изменить следующие переменные окружения:
DEFAULTPRINTSIZE - количество печатаемых строк командой hg, по умолчанию равно 10; MINHISTITEMSIZE - строки перечня короче этой величины будут исключены из него при выполнении команды hs, по умолчанию удаляются строки короче 5-ти символов.
Радио-группы (Radio Groups)
Модуль XKB позволяет объединять несколько клавиш в "радио-группу". То есть, клавиши одной ради-огруппы являются взаимозависимыми. При нажатии одно из клавиш группы все остальные из этой группы "отжимаются".
Естественно, нажатая клавиша остается "залипшей", пока не будет нажата другая клавиша из этой группы. Принадлежность конкретной клавиши к некоторой радио-группе задается в поле "поведение клавиши".
Там же можно определить дополнительное свойство - можно ли "отжать" все клавиши радио-группы. Обычное определение радио-группы подразумевает, что одна из клавиш группы должна быть нажата, а чтобы отжать ее, надо нажать другую клавишу в группе (естественно, теперь она будет "залипшей"). Если задано свойство "могут быть отжаты все", то "залипшую" клавишу группы можно "отжать" просто повторным нажатием (при этом никакая другая клавиша группы не окажется "залипшей").
В XKB можно объявить до 127 радио-групп (хотя это может зависить от конкретной реализации XKB).
Radiogroup и allownone
Означает, что данная клавиша является членом радио-группы. Справа от знака присваивания должен быть номер группы.
Номер группы может быть произвольный, в пределах 2-128 (обратите внимание, что нельзя сделать радио-группу номер 1, хотя это скорее всего "баг" в реализации XKB).
Allownone устанавливает соответствующий флаг для этой радио-группы и является просто логической переменной.
По умолчанию никаких радио-групп нет.
Радости интерактивной работы
Надо сказать, что для интерактивной работы bash предоставляет массу удобств (на которые вы уже, скорее всего, обращали внимание, если работали в GNU/Linux). Он поддерживает такие средства редактирования командной строки, как повтор символов, макросы, «карман» (буфер) и т. д., а также историю (т. е. возможность повторить ранее введенную команду) и настраиваемое автоматическое дополнение.
Так, чтобы запустить, скажем, программу mysql_ convert_table_format, достаточно набрать в командной строке mysql_co и нажать клавишу табуляции: bash, зная названия доступных команд, сам «допишет» имя. (Если в системе есть несколько команд, начинающихся с заданного префикса, он выдаст их перечень, а если их более 100, то предварительно уточнит, действительно ли нужен такой огромный список. Кстати, с помощью данного свойства bash легко выяснить число доступных команд: для этого достаточно нажать клавишу табуляции, находясь в начале строки.) А когда название команды введено (и после него поставлен пробел), интерпретатор позволяет тем же способом ввести имя файла.
Автозаполнение также можно вызвать, нажав клавишу <Meta> (в ее роли обычно выступает <Alt>) одновременно с одним из специальных символов: ‘/’ вызывает дополнение имени файла, ‘!’ — команды, $ — переменной, ‘~’ — пользователя, @ — машины. А при нажатии последовательно клавиш <Ctrl>+x и соответствующего специального символа выдается список возможных вариантов дополнения.
Но и это еще не все. Например, автодополнение можно программировать... Вернемся, однако, к языку интерпретатора bash.
Расширение файловых систем с помощью Web
До создания распределенных файловых систем совместное использование файлов через сеть ограничивалось простыми передачами файлов с помощью использования протокола передачи файлов – FTP (File Transfer Protocol). Появление Всемирной паутины в значительной степени упростила процесс работы с FTP – теперь не нужно знать команды, потому что протокол FTP интегрирован в большинство броузеров. Способность легко передавать файлы через Web также вела к расширению Паутины и существенному улучшению основного протокола передачи гипертекста – HTTP (HyperText Transfer Protocol), который сейчас является основанием для многих систем распределенного использования файлов.
Самая известная из них – это WebDAV, которая расшифровывается как «Web-система распределенной авторизации и контроля версий» (Web-enabled Distributed Authoring and Versioning). WebDAV – это набор расширений к протоколу HTTP, обеспечивающий совместную среду для пользователей, которая позволяет им скачивать, упорядочивать и редактировать файлы, хранящиеся на Web-серверах.
Поддержка WebDAV встроена во многие популярные Web-серверы, например – Apache, где это основывается на опознавательных механизмах сервера. (От простых файлов .htaccess до интегрированных NIS, LDAP, или даже механизма аутентификации Windows). Использование WebDAV для доступа и модификации файлов через Web встроено в операционные системы Mac OS X, в новые версии Microsoft Internet Explorer, а так же доступно и в Linux при использовании таких приложений, как менеджер файлов Nautilus. Хотя это и не файловая система в традиционном смысле, но вы можете даже смонтировать WebDAV в Линуксе, используя загружаемый модуль ядра под названием davfs.
WebDAV обеспечивает такие стандартные для распределенных систем возможности, как блокировка файлов, создание, переименование, копирование, удаление файлов, а так же поддерживает такие продвинутые возможности, как meta-данные файла (более подробная информация о файле – заголовок, тема, создатель, и т.д). В ближайшем будущем WebDAV будет включать интегрированную поддержку управления версиями, которая упростит работу многих пользователей над общими файлами, отслеживая изменения, авторов этих изменений, и другие аспекты общего использования документа. Эти возможности контроля над версиями обеспечиваются в соответствии с протоколом DeltaV, который активно разрабатывается Рабочей группой DeltaV – подразделением Проектировочной группы Интернета (IETF – Internet Engineering Task Force). Некоторые проекты, например, Subversion (WebDAV и DeltaV-основанная замена стандарту CVS), уже доступны в альфа-версии. Subversion обеспечивает систему контроля над версиями и сохранение архива файла на основе базы данных, имеющей API языка C, и моделирует версионную файловую систему, легко доступную через Web.
Расширение и усечение логического тома
Увеличить существующий логический том (при наличии резерва у VG) можно либо указав его новый размер, или указав на какую величину необходимо расшириться. Команды будут следующими:
# lvextend -L3G /dev/LIN/tomusr
или
# lvextend -L+1G /dev/LIN/tomusr
В первом случае новый размер тома станет 3 Gb, во втором увеличится на 1 Gb (если первоначальный размер 2 Gb обе команды эквивалентны). Первая команда может как расширить, так и усечь существующий том, во втором случае для усечения достаточно поменять lvextend на:
# lvreduce -L-1G /dev/LIN/tomusr.
Расширенные возможности "пищалки" (Bell)
Вообще-то, эта часть XKB имеет малое отношение к клавиатуре.
Более того, для пользователей компьютеров, в которых клавиатура, дисплей и "спикер" - независимые устройства, такое совмещение может показаться очень странным. Но поскольку, в некоторых архитектурах динамик "пищалки" находится в клавиатуре и издает звук (key_click) при каждом нажатии клавиши, в "иксах" считается, что управление "пищалкой" - дело клавиатурного модуля.
Надо отметить, что управление "пищалкой" заложено еще в традиционном (core) модуле клавиатуры. С помощью стандартных запросов к X-серверу, приложение может регулировать параметры key_click'а (высоту тона, длительность и громкость), а также вызвать этот click при необходимости.
В XKB разработчики пошли еще дальше и предусмотрели возможность вместо простого "писка" проигрывать "музыкальные фрагменты". Естественно, обеспечить такое "музыкальное сопровождение" для клавиатурного модуля слишком сложная задача. Во-первых нужна "база данных" различных звуков (хотя бы просто в виде набора аудио-файлов), а во-вторых музыка может воспроизводится различными "железками" (звуковыми картами), каждая из которых требует "особого подхода" (драйвера).
Поэтому, по замыслу разработчиков, выбором конкретного звука и его воспроизведением должна заниматься отдельная программа (назовем ее - "музыкальная приставка"). А модуль XKB вместо "писка" просто генерирует специальное сообщение (event), которое так же как и обычные event'ы X-сервера могут быть доставлены любой программе. "Музыкальная приставка" только должна при старте сообщить X-серверу, что ее интересует определенная разновидность event'ов (в данном случае - bell-event'ы от модуля XKB).
Естественно, если такая "музыкальная приставка" существует, ее возможности не ограничиваются воспроизведением "писков" разной частоты и длительности. Она может проигрывать множество разных музыкальных фрагментов из своей "базы данных".
Поэтому, в сообщениях XKB указывается не "параметры писка", а просто некое "имя звука" (bell name). Естественно, "музыкальная приставка" должна иметь какой-то конфигурационный файл, в котором для каждого "имени звука" назначен свой музыкальный фрагмент.
Соответственно, теперь любое приложение с помощью соответствующих запросов к X-серверу (теперь уже не в core-формате, а в формате XKB), может заказать не просто "писк" с определенным тоном и длительностью, а любой звук, указав его имя (bell name).
При этом XKB собственно является просто "ретранслятором". Он даже не анализирует правильность "имени звука", а просто, получив запрос от любого приложения, передает его в виде своего event'а "музыкальной приставке".
Естественно, в такой схеме XKB кажется даже лишним. Приложение могло бы и само общаться с "музыкальной приставкой". Но не забудьте, что сама идеология "иксов" допускает, что приложение, X-сервер и "музыкальная приставка" могут быть запущены на различных машинах. Поэтому, нормальное приложение должно было бы, кроме соединения с X-сервером, найти еще и "музыкальную приставку" и установить с ней контакт.
В схеме с XKB, любое приложение отправляет свои запросы тому же самому X-серверу (с которым ему и так приходится общаться), а уж администратор сервера определяет - кто и как будет обслуживать эти запросы. Кроме того, при этом вводится некоторый стандарт на общение между приложением и "звуковой приставкой" (разве что, кроме самих "имен звуков").
Надо заметить также, что XKB не только ретранслирует запросы, но и сам может "заказать звук" при некоторых изменениях своего внутреннего состояния (состояния индикаторов, флагов и т.п.).
Иван Паскаль pascal@tsu.ru
Рассматриваемые производители и решения
VMware — http://www.vmware.com/.
SWsoft — http://www.sw-soft.com/.
Ensim — http://www.ensim.com/index.shtml.
«Проект на ядре Linux» — http://www.solucorp.qc.ca/ miscprj/s_context.hc?prjstate=1&nodoc=0.
Журнал "LAN", #01, 2003 год // Издательство "Открытые Системы" (http://www.osp.ru/)
Постоянный адрес статьи: http://www.osp.ru/lan/2003/01/074.htm
архивирование файлов
tar -zxvf filename.tar.gz
(=tape archiver(ленточный архиватор)) Разархивирует файл *.tar.gz или *.tgz (такие файлы называют "tarball" или "тарбол").
tar -xvf filename.tar
Распаковывает файл *.tar (собранный, но не сжатый).
tar czvpf /var/backups/mybackup.tar.gz /home
cd /; tar xzvpf /var/backups/mybackup.tar.gz '*/myfile.rtf'
(как "root") Создает резервную копию (backup) каталога /home в сжатый файл. Вторая команда показывает, как восстанавливать файл из резервной копии.
gunzip filename.gz
Разархивирует сжатый файл *.gz или *.z. Используйте gzip (или zip или compress) для архивирования файла в этом формате.
zcat имя_файла.gz | more
(=zip cat) Выводит содержание сжатого файла. Другие программы для работы с сжатыми файлами, без их предварительного разархивирования: zless, zmore, zgrep, ...
bunzip2 имя_файла.bz2
(=big(большой) unzip) Разархивирование файлов (*.bz2) сжатых программой bzip2. Используется для больших файлов.
unzip имя_файла.zip
Разархивирование файлов (*.zip), сжатых программой PKZIP for DOS или совместимой.
zip имя_файла.zip имя_файла1 имя_файла2
Сжать два файла "имя_файла1" и "имя_файла2" в архив zip с именем "имя_файла.zip".
unarj e имя_файла.arj
Разархивировать файл *.arj.
lha e имя_файла.lha
Разархивировать файл lharc.
uudecode -o выходной_файл имя_файла
Декодировать файл, закодированный утилитой uuencode. Такие файлы обычно используются для передачи нетекстовых файлов в электронном письме (uuencode трансформирует любой файл в формат ASCII).
cat имя_файла | mimencode -o имя_файла.mime
cat имя_файла.mime |mimencode -u -o имя_файла
(2 команды.) Кодирует и декодирует файлы в стандартный формат Internet для передачи 7-битных данных, называмый "mime". В более старых дистрибутивах команда (mimencode) называлась mmencode. Обычно вам не требуется выполнять эту команду, потому что ваша почтовая программа выполняет кодирование/декодирование mime самостоятельно.
ar -x мой_архив.a файл1 файл2
(=archiver(архиватор)). Извлекает файлыфайл1 и файл2 из архива, называемого мой_архив.a. Программа архивирования ar обычно используется для поддержки библиотек.
ark &
(в X-терминале). Основанный на Qt архиватор с графическим интерфейсом. Возможно, это - всё, что вам нужно для работы со сжатыми файлами. Так же можно использовать gnozip.
Полная версия - LNAG на русском языке (24.02.03 - в процессе перевода).
Эта статья описывает разбиение диска
Денис Смирнов, 2.03.2003, Freesource.info
Эта статья описывает разбиение диска для увеличения производительности.
Я рекомендую по крайней мере на тестовых машинах использовать LVM, который позволяет гибко создавать, удалять и изменять размеры разделов без потери данных. При переходе к ядрам ветки 2.6.* можно будет изменять размеры файловых систем ext2 и ext3 без остановки сервера, а на reiserfs увеличение размера раздела ?в горячую? можно делать уже сейчас.
Разбиение дисков и инсталляция Linux на LVM (часть
Автор: Владимир Холманов, fmfm@symmetron.msk.ru
Опубликовано: 8.10.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу:http://new.softerra.ru/freeos/20792/
В этой серии из трёх статей рассматриваются некоторые варианты разбиения диска на разделы для инсталляции Linux и новые возможности при использовании LVM. LVM (Logical Volume Manager) сравнительно недавно появившаяся технология, которую часто связывают с «большими серверными инсталляциями». Цель этой публикации будет достигнута, если у читателя сложится мнение, что LVM уместен уже при наличии двух hard дисков.
Автор: Владимир Холманов, fmfm@symmetron.msk.ru
Опубликовано: 25.10.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу:http://www.softerra.ru/freeos/21241/
Автор: Владимир Холманов, fmfm@symmetron.msk.ru
Опубликовано: 1.11.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу:http://www.softerra.ru/freeos/21371/
Разделяйте ваши данные
Автор: Станислав Лапшанский, slapsh@slapsh.pp.ru
Опубликовано: 3.9.2002
© 2002, Издательский дом «КОМПЬЮТЕРРА» | http://www.computerra.ru/
Журнал «СОФТЕРРА» | http://www.softerra.ru/
Этот материал Вы всегда сможете найти по его постоянному адресу: http://www.softerra.ru/freeos/19959/
Статья является переводом текста Dru Lavigne, опубликованного по адресу: http://www.onlamp.com/pub/a/bsd/2001/02/21/FreeBSD_Basics.html.
Эта статья первая из цикла, в котором мы увидим как FreeBSD хранит на винчестере данные. Для хранения данных на жестком диске, он должен быть поделен на логические блоки, при этом каждый блок имеет свой уникальный адрес. Файловая система сохраняет данные в этих блоках, а так же хранит информацию о том, какие блоки диска содержат какие файлы.
Как все остальные UNIX-системы, FreeBSD для хранения сведений о местонахождении файлов на дисках, использует inode-таблицы (индексные таблицы). Однако перед тем, как будет создана первая индексная таблица, диск должен быть разбит на логические блоки. Этот процесс осуществляется при помощи нескольких утилит, которые применяются в следующем порядке:
Используя fdisk можно создать (и посмотреть структуру существующей) BIOS'овскую таблицу разделов, в которой можно определить до четырех «слайсов» (терминология FreeBSD отличается от общепринятой и раздел диска в ней называется slice — «кусок» — прим. переводчика). Утилита disklabel применяется для создания и просмотра содержимого UNIX'вых таблиц разделов, в каждой из которых может быть создано до восьми «партиций». (Таким образом в каждом из четырех дисковых разделов (слайсов), может быть создано по восемь UNIX-партиций. Всего 32 штуки. — прим. переводчика). Команда newfs предназначена для создания файловой системы на любой UNIX-партиции (поскольку только что созданная партиция обычно содержит только «мусор» — прим. переводчика). После этого каждая файловая система содержит индексные таблицы.
Заметьте, что ваша FreeBSD- система обязательно имеет обе таблицы, и BIOS'овскую и UNIX'овую. Это необходимо из-за того, что FreeBSD, являясь UNIX-системой понимает и использует UNIX'овую таблицу разделов, однако FreeBSD так же является системой, которая вынуждена работать на PC (персональном компьютере). Персональный компьютер обязательно имеет специальное программное обеспечение, так называемый BIOS, который необходим для правильной инициализации компьютера, определения параметров жестких дисков, а так же для поиска программного обеспечения, которое загружает операционную систему.
Итак одной из функций BIOS'а является просмотр содержимого первого сектора первого жесткого диска. Этот сектор имеет размер 512 байт. Помимо прочего в нем отведен 64-х байтный участок для хранения BIOS'овской таблицы разделов. Каждая запись этой таблицы занимает 16 байт, таким образом всего в таблице есть место только для четырех записей.
Как уже было упомянуто, BIOS'овская таблица разделов может быть просмотрена и изменена программой fdisk. Когда вы, используя fdisk, изменяете BIOS'овскую таблицу разделов, вы, на самом деле «нарезаете» ваш физический диск на максимум четыре логических. Пользователи FreeBSD предпочитают назвать эти логические диски слайсами, для того, что бы не перепутать их с «партициями», которые описываются в UNIX'овой таблице разделов.
Возможно вы уже хорошо знакомы с программой fdisk, поставляемой в составе DOS. Я сравню ее с утилитой fdisk из FreeBSD, для того что бы вы смогли увидеть схожесть этих двух программ. Я покажу результаты своей работы на одной из моих персоналок. Я загрузил ее с загрузочного DOS-диска, а затем, из командной строки, запустил утилиту fdisk: Microsoft Windows 95 Fixed Disk Setup Program (C)Copyright Microsoft Corp/ 1983 - 1995
FDISK Options
Current fixed disk drive: 1
Choose one of the following:
1. Create DOS partition or Logical DOS Drive 2. Set active partition 3. Delete partition or Logical DOS Drive 4. Display partition information
Enter choice: [4]
Мы оказались в главном меню программы fdisk для DOS. Поскольку я не хочу менять таблицу разделов, я выберу 4 пункт, для того что бы просто посмотреть ее содержимое. Display Partition Information
Current fixed disk drive: 1
Partition Status Type Volume Label Mbytes System Usage C: 1 A PRI DOS 204 FAT16 3% 2 Non-DOS 3193 52% 3 EXT DOS 2753 45%
Total disk space is 6150 Mbytes (1 Mbyte = 1048576 bytes)
The Extended DOS Partition contains Logical DOS Drives. Do you want to display the logical drive information (Y/N)......?[Y]
Обратите внимание, что я разбил мой диск на три слайса, которые в DOS называются партиции (partition). Первый слайс имеет признак «A» что означает, что в нем записан загрузочный код, необходимый для правильной загрузки операционной системы. Этот раздел имеет объем 204 Мб и отформатирован в системе FAT16.
Второй слайс, объемом 3139 Мб содержит мою FreeBSD. DOS-версия утилиты fdisk не в состоянии правильно определить тип файловой системы на этом разделе, поэтому она просто называет ее «non-DOS» (не-DOS).
Третий слайс это 2753 мегабайтный дополнительный раздел (extended partition). Заметьте, что для того что бы поглядеть структуру дополнительного раздела, вам придется войти в другой экран программы fdisk. Дополнительный раздел был придуман для того, что бы вы могли разбить ваш жесткий диск более чем на четыре раздела. Дополнительный раздел, это просто ссылка на область диска, которая содержит еще одну таблицу разделов, в которой описываются логические разделы находящиеся в дополнительном разделе. К сожалению эти логические разделы действительно «логические» — большинство операционных систем не могут быть установлены на логический раздел, поскольку он не может содержать загрузочного кода. Я нажал «Y» для того что бы попасть на экран, который отображает содержимое дополнительного раздела. Display Logical DOS Drive Information
Drv Volume Label Mbytes System Usage D: 1396 FAT16 51% E: 361 FAT16 13%
Total Extended DOS Partition size is 2753 Mbytes (1 Mbyte = 1048576 bytes)
Давайте резюмируем информацию, которую мы с так тщательно добывали при помощи DOS-овского fdisk'а. Итак этот компьютер имеет жесткий диск объемом 6150 Мб. Он разбит на разделы следующим образом:
C: | Основной | 204 Мб | FAT16 |
D: | Логический | 1,396 Мб | FAT16 |
E: | Логический | 361 Мб | FAT16 |
Нет | Неизвестно | 3,193 Мб | Неизвестно |
Основные разделы именуются в первую очередь, начиная с буквы «C», поскольку буквы «A» и «B» зарезервированы для дисководов гибких дисков. Когда все основные разделы поименованы, именуются логические диски. Дополнительный раздел, а так же разделы неизвестных типов не именуются.
Теперь давайте сравним fdisk'а для DOS с выводом fdisk для FreeBSD. Если вы просто напечатаете fdisk в приглашении командного интерпретатора, то он выведет вам содержимое BIOS'овской таблицы разделов. Однако если вы попытаетесь сделать это от имени обычного пользователя, вы получите только такое сообщение: fdisk fdisk: can't open device /dev/ad0 fdisk: cannot open disk /dev/ad0: Permission denied
Только суперпользователь имеет разрешение на доступ к устройству, которым представлен мой первый IDE жесткий диск. Это хорошая идея, поскольку fdisk дает возможность изменять разделы определенные на жестком диске. Если вы измените информацию о разделе, вы потеряете на нем все данные. Однако не переживайте, суперпользователь не изменит данные о разделах, если просто введет команду fdisk без параметров, для того что бы просмотреть информацию. Для того что бы что-нибудь изменить, суперпользователь должен указать устройство и ключи в командной строке программы fdisk. Я стал суперпользователем и попробовал опять выполнить команду fdisk: fdisk
******* Working on device /dev/ad0 ******* parameters extracted from in-core disklabel are: cylinders=784 heads=255 sectors/track=63 (16065 blks/cyl)
parameters to be used for BIOS calculations are: cylinders=784 heads=255 sectors/track=63 (16065 blks/cyl)
Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 6,(Primary "big" DOS (> 32MB)) start 63, size 417627 (203 Meg), flag 80 (active) beg: cyl 0/ sector 1/ head 1; end: cyl 25/ sector 63/ head 254 The data for partition 2 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 417690, size 6538455 (3192 Meg), flag 0 beg: cyl 26/ sector 1/ head 0; end: cyl 432/ sector 63/ head 254 The data for partition 3 is: sysid 5,(Extended DOS) start 6956145, size 5638815 (2753 Meg), flag 0 beg: cyl 433/ sector 1/ head 0; end: cyl 783/ sector 63/ head 254 The data for partition 4 is: >UNUSED<
Если вы внимательно поглядите на этот вывод, то заметите, что fdisk для FreeBSD выдает ту же самую информацию что и fdisk для DOS и еще большое количество разнообразных подробностей относительно физического разбиения диска. Вся эта информация всегда содержится в BIOS'овской таблице разделов, однако fdisk для DOS выдает лишь малую ее часть.
Жесткий диск разбивается на логические блоки, которые называются цилиндрами и секторами. Мой FreeBSD-раздел (номер 2) начинается с первого сектора 26 цилиндра, а заканчивается в 63 секторе 432 цилиндра. Поскольку цилиндр состоит из 63 секторов, мы начали с начала 26 цилиндра и закончили концом 432-го. Итого FreeBSD-раздел содержит 407 цилиндров. Мы еще увидим информацию о цилиндрах, когда будем рассматривать содержимое UNIX'овой таблицы разделов. Так же вы можете посмотреть краткую информацию о таблице разделов при помощи команды fdisk, выполнив ее с ключом -s: fdisk -s
/dev/ad0: 784 cyl 255 hd 63 sec Part Start Size Type Flags 1: 63 417627 0x06 0x80 2: 417690 6538455 0xa5 0x00 3: 6956145 5638815 0x05 0x00
Этот вывод опять показывает нам информацию о всех трех существующих дисковых разделах. Так же там можно увидеть начальный адрес каждого из слайсов, а так же их размер, указанный в секторах. Типы файловых систем слайсов указаны в шестнадцатеричной системе счисления, на что указывает префикс 0x перед каждым числом. Шестнадцатеричное число a5 эквивалентно десятичным 165, которое является «магическим числом» определяющим файловую систему FreeBSD. Шестнадцатеричное число 06 равно десятичным шести и определяет файловую систему FAT16. Легко догадаться что шестнадцатеричное 05 в десятичной системе рано пяти. Номер пять обозначает дополнительный раздел DOS. Только один раздел может иметь флаг 0x80, поскольку он указывает на «активность» слайса, а BIOS'овская таблица разделов имеет только один загрузочный слайс.
Давайте резюмируем наши сведения о BIOS'овской таблице разделов. Итак она используется BIOS'ом персонального компьютера для определения физической геометрии жесткого диска, который может быть разбит на логические диски (до четырех). Обычно пользователи разбивают жесткий диск на несколько слайсов тогда, когда они хотят использовать на своем компьютере несколько операционных систем. Если слайс содержит к примеру операционную систему фирмы Microsoft, то в начале он должен быть отформатирован в соответствующей файловой системе, которая должна быть понятна этой операционной системе. Процесс форматирования создаст на этом слайсе таблицу, которая будет использоваться файловой системой для отслеживания местонахождения данных на слайсе.
Ценным качеством, говорящим в пользу разбиения диска на слайсы, является возможность переформатирования слайса (при этом будут уничтожены все таблицы размещения данных на разделе, что означает, что найти там ваши данные будет почти невозможно), без затрагивания данных на других дисковых разделах. Однако слайс предназначенный для операционной системы Microsoft, может содержать только одну файловую систему. Таким образом, вы не можете иметь несколько файловых систем, на слайсе с операционной системой Microsoft.
Если слайс содержит операционную систему FreeBSD, то на него будет записана UNIX'овая таблица разделов. Слайс FreeBSD может содержать до восьми разделов и каждый из них может иметь свою файловую систему или быть разделом свопинга.
Если вы запустите утилиту disklabel без ключей, вы сможете безопасно посмотреть содержимое UNIX'овой таблицы разделов. Однако как и в случае с fdisk'ом без прав суперпользователя не обойтись, поскольку только он имеет право на доступ к дисковому устройству. Моя персоналка работает под управлением FreeBSD 4.2, IDE жесткий диск имеет в ней имя ad. Жесткие диски нумеруются с нуля, и поскольку у меня система стоит на первом диске, то укажем устройство ad0: disklabel ad0
# /dev/ad0c: type: ESDI disk: ad0s2 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 255 sectors/cylinder: 16065 cylinders: 407 sectors/unit: 6538455 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0
8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 102400 0 4.2BSD 0 0 0 # (Cyl. 0 - 6*) b: 270976 102400 swap # (Cyl. 6*- 23*) c: 6538455 0 unused 0 0 # (Cyl. 0 - 406) e: 40960 373376 4.2BSD 0 0 0 # (Cyl. 23*- 25*) f: 6124119 414336 4.2BSD 0 0 0 # (Cyl. 25*- 406*)
UNIX'овая таблица разделов разительно отличается от BIOS'овской. Все эти разделы живут в одном FreeBSD-слайсе, который BIOS видит как раздел номер 2. Обратите внимание, что один этот слайс обозначен пятью буквами, однако буква файловая системы закрепленная за «c» обозначена как «неиспользуемая» (unused). По внутрисистемному соглашению буква «c» всегда означает весь слайс целиком, а реальные файловые системы закрепляются за буквами «a-b» и «d-e». Этот FreeBSD-слайс содержит в себе три файловые системы, обозначенные буквами «a», «e» и «f». Буквой «b» обозначен раздел свопинга.
Каждая файловая система определяется своей группой цилиндров, которая представляет из себя простой непрерывный участок сгруппированных вместе цилиндров. Каждая файловая система отвечает за данные только той группы цилиндров, которые ей принадлежат. Итак, файловая система «a» находится на пространстве от нулевого до шестого цилиндра, файловая система «e» располагается на протяжении 23-25 цилиндров и, наконец, файловая система «f» находится на 25-406 цилиндрах. Обратите внимание, что весь слайс (обозначенный буквой «c») размещается на цилиндрах 0-406, что в сумме дает объем в 407 цилиндров, которые и показывает нам утилита fdisk для FreeBSD.
Из верхних строк вывода команды disklabel мы можем сделать вывод о том, каким образом диск разбит на логические блоки: цилиндры разбиты на сектора и треки, каждый трек состоит за 63 секторов, а каждый сектор в свою очередь имеет размер 512 байт. Если вы незнакомы с секторами и треками, то хорошая иллюстрация есть здесь.
Наконец, немного математики и мы сможем подсчитать насколько велик наш слайс в мегабайтах. Итак наш слайс состоит из 6538455 секторов, при этом размер каждого сектора — 512 байт. Если мы умножим количество секторов на количество байт в секторе, то мы получим объем слайса в байтах (ох-ох-ох… это несомненно стоит объяснять подробно — прим. переводчика). Если мы разделим полученное число на 1024, то получим размер слайса в килобайтах. А если мы еще раз разделим результат на 1024, то получим искомый размер слайса в мегабайтах: 6,538,455 x 512 = 3,347,688,960 байт 3,347,688,960 / 1,024 = 3,269,227 килобайт 3,269,227 / 1,024 = 3,192 мегабайт
что полностью совпадает с данными программы fdisk.
Утилита disklabel может использоваться для создания UNIX'овых разделов, однако не может на самом деле создавать файловые системы. Вместо этого эта утилита создает специальные дисковые метки, которые читает программа newfs. Эта утилита называется созвучно своей функции — созданию файловых систем (newfs — new file system — новая файловая система — прим переводчика), она-то и создает файловую систему и ее индексные таблицы. Мы поподробнее остановимся на утилите newfs и индексных таблицах в следующей статье цикла.
Телефон редакции: (095) 232-2261
E-mail редакции: inform@softerra.ru
По вопросам размещения рекламы обращаться к Алене Шагиной по телефону +7 (095) 232-2263 или электронной почте mailto:reclama@computerra.ru
Разделы на диске и процесс загрузки
Жесткие диски - это блочные устройства и минимальной адресуемой единицей дискового пространства является сектор размером 512 байт. Адрес сектора задается путем указания номера цилиндра, номера считывающей головки (или дорожки) и порядкового номера сектора на дорожке. Поэтому диски часто характеризуются совокупностью трех показателей, называемых диска: число цилиндров/число дорожек в цилиндре/число секторов на дорожке (или C/H/S от первых букв соответствующих английских терминов: - cylinder, - head, - sector). Диск с геометрией C/H/S имеет емкость CXHXSX512 байт.
Физические диски в компьютерах на платформе Intel принято разбивать на разделы. Повелось это из-за того, что первые версии MS-DOS не могли обеспечить доступ к дискам большой емкости; тогда и придумали разбиение дисков на разделы. Для этого в нулевой сектор первой дорожки на нулевом цилиндре стали записывать таблицу разбиения диска на разделы (partition table). Каждый раздел может трактоваться как отдельный физический диск. В частности, в разные разделы могут быть установлены разные операционные системы. Таблица разделов содержит 4 записи по 16 байт для 4 разделов, которые называют первичными. Каждая запись имеет следующую структуру:
struct partition { char active; /* 0x80: раздел активный (загрузочный), 0: не активный */ char begin[3]; /* геометрия первого сектора */ char type; /* тип раздела (например, 83 - LINUX_NATIVE) */ char end[3]; /* геометрия последнего сектора */ int start; /* номер начального сектора; нумерация начинается с 0 */ int length; /* число секторов в разделе */ };
DOS использует поля begin и end таблицы разбиения диска и функции прерывания 13 BIOS (Int 13h) для доступа к диску и поэтому не может использовать диски емкостью более 8,4 Гбайт, а разделы из-за ограничений файловой системы FAT16 не могут быть более 2,1 Гбайт. Linux использует только поля start и length таблицы и поддерживает разделы, содержащие до 2 в степени 32 секторов, поэтому размер раздела может достигать 2 Тбайт.
Поскольку в главной загрузочной записи (MBR) только четыре строки для задания разделов, то число первичных разделов на диске ограничено: их может быть не более четырех. Когда стало ясно, что и этого мало, были изобретены логические разделы. Для этого один из первичных разделов объявляется и в нем создаются . Расширенные разделы сами по себе не используются и могут лишь хранить логические разделы. Первый сектор расширенного раздела хранит таблицу разделов с четырьмя входами: один используется для логического раздела, другой для еще одного расширенного раздела, а два не используются. Каждый расширенный раздел имеет свою таблицу разбиения, в которой, как и в первичном расширенном разделе, заняты только две строки, задающие один логический и один расширенный раздел. Таким образом, образуется цепочка из таблиц разделов, где первая описывает три основных раздела, а каждая следующая - один логический раздел и местоположение следующей таблицы.
Число логических разделов в принципе не ограничено, поскольку каждый логический раздел может содержать таблицу разделов и вложенные логические разделы. Однако реально ограничения все же есть; так, Linux может работать не более чем с 15 разделами на SCSI-дисках и не более чем с 63 разделами на IDE-дисках. Расширенный раздел как на физическом диске, так и в расширенном разделе вложенного расширенного раздела (предыдущего уровня) может быть только один: ни одна из существующих программ разбиения дисков не умеет создавать более одного расширенного раздела.
В Linux физический диск доступен по имени устройства: /dev/hda, /dev/hdb, /dev/sda и т.п. Первичные разделы обозначаются дополнительной цифрой в имени устройства: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4; логические же разделы доступны по именам /dev/hda5, /dev/hda6 и т.д. Имена /dev/hda3 и /dev/hda4 могут быть пропущены, если третий и четвертый первичные разделы не были созданы, тогда сразу после /dev/hda2 пойдет /dev/hda5 (логический раздел в расширенном разделе /dev/hda2), а далее нумерация идет последовательно.
В Windows логические разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. Если, скажем, есть один жесткий диск с двумя простыми первичными разделами (C: и D:) и одним расширенным разделом, в котором созданы два логических раздела, то эти логические разделы будут поименованы E: и F:. Впрочем, в Windows NT и
Windows 2000 с помощью диспетчера дисков разделам можно присвоить другие буквенные имена.
"Раздвижка", "сдвижка", "прокрутка"
Esc[nL | вставить n пустых строк (те, что были - раздвинуть) |
Esc[nM | удалить n строк (те, что остались - "схлопнуть") |
Esc[nP | удалить n знаков в строке (те, что остались - "схлопнуть") |
Esc[n@ | вставить n знаков в строку (те, что были - раздвинуть) |
Esc[nS | "прокрутить" содержимое экрана на n строк вверх |
Esc[nT | "прокрутить" содержимое экрана на n строк вниз |
Различные задержки (таймауты)
repeatdelay = число
задержка (в миллисекундах) между нажатием клавиши и началом автоповтора;
repeatinterval = число
интервал (в миллисекундах) между автоповторами;
slowkeysdelay = число
в режиме slowkeys клавиша считается нажатой, если она удерживается некоторый промежуток времени, чтобы избежать срабатывания при случайном "задевании" клавиши. Этот параметр и определяет указанную задержку.
debouncedelay = число
в режиме bouncekeys клавиша после нажатия/отпускания некоторое время не реагирует на повторные нажатия/отпускания, чтобы избежать ложных срабатываний при неаккуратном нажатии клавиши. Этот параметр и определяет указанную задержку.
accessxtimeout = число (или axtimeout = число)
промежуток времени (в секундах) после которого режим AccessX автоматически отключается. Имеет смысл только если установлен соответствующий флаг
(controls += ... accessxtimeout ...);
Readline: советы и приемы эффективной работы
Библиотека readline используется bash и многими другими программами для чтения строк с терминала, позволяя пользователю исправлять введенные строки с помощью стандартных клавиш редактирования Emacs.
set show-all-if-ambiguous on
Если данная команда есть в вашем /etc/inputrc или ~/.inputrc, вам больше не нужно жать дважды клавишу <Tab> чтобы вывести список всех возможных вариантов автозаполнения. Одного нажатия <Tab> будет достаточно. set visible-stats on
Добавление данной команды в ваш /etc/inputrc или ~/.inputrc будет результатом добавления символа типа файла в конце имени каждого файла, возвращенного при автозаполнении, точно так же как при использовании ls -F.
Реальный и виртуальный модификаторы
Обратите внимание, что с каждым скан-кодом связаны две разные переменные (modmap и vmodmap), одна для реальных модификаторов, другая - для виртуальных.
Набор реальных модификаторов служит для эмуляции "традиционного" набора модификаторов (в соответствии с core protocol), а набор виртуальных модификаторов может служить аргументами для "действий", связанных с этой клавишей.
Надо заметить, что изменения набора виртуальных модификаторов (base, locked и latched) делается с помощью соответствующих "действий". Естественно, одним из аргуметов этого "действия" должен быть модификатор (или несколько модификаторов), которые нужно установить/сбросить в соответствующих "переменных состояния". Так вот, при описании "действия", модификаторы можно указать явно, а можно просто сослаться на vmodmap (то есть - "установить витруальные модификаторы, привязанные к этой клавише").
А вот изменение модификатора в "эмулируемом наборе модификаторов" происходит автоматически при нажатии/отпускании клавиши. Естественно, устанавливаются/сбрасываются именно те модификаторы, которые указаны в наборе реальных модификаторов (modmap).
Кроме того, эти два набора служат для установления соответствия между реальными и виртуальными модификаторами. Надо заметить, что виртуальный модификатор не имеет никакого смысла, если не связан с каким-нибудь реальным модификатором.
RedHat и (старые версии XFree)
В этом случае будет работать "экспериментальный" файл .Xmodmap ("mu" вместо "lcaron" и т.д.), а файл Compose из ../IS08859-2 нужно скопировать в директорию ISO8859-1 для того, чтобы заработали dead keys. Файл XF86Config только один (в /etc/X11), а секция FontPath надо сделать такой же, как в описаном выше случае SuSE 7.0.
Регистрация (Login)
После вашего ответа на приглашение getty зарегистрироваться, getty выполняет (exec) программу login. (В общем-то, вы можете заставить getty выполнить любую программу по вашему выбору, но обычно это /bin/login); т.е. getty заменяет себя на login. Хотя это все тот же самый процесс.
Помните, этот процесс был создан init'ом, принадлежащим суперпользователю. Поэтому этот процес, теперь выполняющий login, также принадлежит суперпользователю.
Первое, что делает login - запрашивает ваш пароль. После того, как вы его введете, login проверяет его правильность. Убедившись, что это так, login переходит к выполнению следующих задач:
Заменяет идентификатор владельца процесса на ваш. Заменяет идентификатор группы процесса на вашу группу. Помещает запись в базу данных пользовательских счетов (файл "utmp"), показывая, что вы зарегистрировались. Технически эта база данных сегодня не нужна, но все еще используется старыми программами, такими как who, чтобы сообщать об имени и терминалах зарегистрированных пользователей. Заменяет дополнительные группы процесса на все группы, к которым вы принадлежите. Устанавливает ваш домашний каталог текущим рабочим каталогом процесса. Делает вас владельцем устройства терминала и соответственно устанавливает его атрибуты доступа (permissions).
Следующее, что делает login, - запускает (exec) вашу оболочку shell (которая, в общем-то, может быть любой программой, но обычно является командной оболочкой, например, /bin/bash). Т.е. он заменяет себя на программу оболочки shell.
Чтобы получить всю необходимую информацию, такую, как ваш пароль, uid и программу оболочки, login ищет ваше имя в файле /etc/passwd.
Регулярные выражения
Использование регулярных выражений в командах интерпретатора очень опасно (но, в тоже время, это очень мощный инструмент - Прим.пер), особенно в работе с файлами, названия которых начинаются с точки. Возможно суперпользователь root должен использовать командный интерпретатор с ограниченной (а не расширенной) поддержкой регулярных выражений (для офисных дистрибутивов, или инсталляций "из коробки" -- да, но только не для опытных администраторов, для которых регулярные выражения -- важнейший инструмент! - Прим. пер.). Мы рекомендуем esh.
Reiserfs
notail ? отключение ускорения доступа к маленьким файлом и упаковки ?хвостов файлов?.
Рекомендации
Следующие команды или символические ссылки должны быть размещены в /sbin, если только соответствующие пакеты установлены в системе:
fastboot | Команда перезагрузки системы без проверки дисков (optional) |
fasthalt | Команда остановки системы без проверки дисков (optional) |
fdisk | Программа переразбиения диска (optional) |
fsck | Утилита для проверки и восстановления файловых систем (optional) |
fsck.* | Утилиты для проверки и восстановления отдельных типов файловых систем (optional) |
getty | Программа getty (optional) |
halt | Команда остановки системы (optional) |
ifconfig | Утилита конфигурирования сетевых интерфейсов (optional) |
init | Первоначальный процесс (optional) |
mkfs | Команда создания файловой системы (optional) |
mkfs.* | Команда создания файловой системы конкретного типа (optional) |
mkswap | Команда создания файла или раздела подкачки (swap-раздела) (optional) |
reboot | Команда перезагрузки системы (optional) |
route | Утилита определения таблицы статической IP-маршрутизации (optional) |
swapon | Утилита подключения механизма свопинга (optional) |
swapoff | Утилита отключения свопинга (optional) |
update | Демон периодической очистки системных буферов (optional) |
Таблица 3.14.3.2
[15] Когда-то исполняемые файлы, размещаемые теперь в /sbin, помещались в /etc. Программы, которые выполняются после того, когда смонтирован каталог /usr (если монтирование прошло без проблем) обычно размещаются в /usr/sbin. Локально устанавливаемые программы для системного администрирования должны быть размещены в /usr/local/sbin. [примечание 16]
[16] Принять решение о том, какие программы разместить в каталогах "sbin", довольно просто: если обычный пользователь (не системный администратор) когда-либо запускает программу, она должна размещаться в одном из каталогов "bin". Обычные пользователи не должны указывать каталоги sbin в списке путей, просматриваемых по умолчанию (в своей переменной PATH).
Такие, к примеру, файлы, как chfn, которые пользователи запускают очень редко и только в особых случаях, должны, тем не менее, размещаться в /usr/bin. Команда ping, хотя она абсолютно необходима суперпользователю для решения задач сетевой диагностики и восстановления сети, часто используется и рядовыми пользователями, и по этой причине должна размещаться в /bin.
Мы рекомендуем предоставить всем пользователям право на чтение и выполнение для всех файлов, расположенных в /sbin, кроме, может быть тех программ, для которых установлены биты setuid и setgid. Разделение каталогов /bin и /sbin делается не из соображений безопасности и не для того, чтобы лишить пользователей возможности видеть системные утилиты. Целью такого деления является установление явного различия между исполняемыми файлами, которые используются всеми, и теми утилитами, которые в основном используются для решения административных задач. С точки зрения безопасности нет никаких преимуществ в том, чтобы сделать /sbin недоступным для пользователей.
Previous: /root : Домашний каталог пользователя root (optional)
Next: /tmp : Временные файлы
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Следующие каталоги или символические ссылки на каталоги должны иметься в /, если соответствующие подсистемы установлены:
"/" home lib<qual> root |
"Корневой каталог" Домашние каталоги пользователей (optional) Основные разделяемые библиотеки для альтернативных форматов (optional) Домашний каталог пользователя root (optional) |
Дерево 3.3.1
Каждый из перечисленных выше каталогов рассматривается в отдельной секции настоящего документа.
Previous: /: Требования
Next: /bin : Основные исполняемые файлы (доступные всем пользователям)
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Следующие программы или символические ссылки на программы должны находиться в каталоге /bin если только соответствующие пакеты установлены в системе:
csh | оболочка C-shell (optional) |
ed | редактор `ed' (optional) |
tar | утилита архивации tar (optional) |
cpio | утилита архивации cpio (optional) |
gzip | утилита сжатия (компрессии), разработанная в рамках проекта GNU (optional) |
gunzip | утилита декомпрессии, разработанная в рамках проекта GNU (optional) |
zcat | утилита декомпрессии, разработанная в рамках проекта GNU (optional) |
netstat | утилита сетевой статистики (optional) |
ping | утилита тестирования сети с помощью протокола ICMP (optional) |
Таблица 3.4.3.2
Если файлы gunzip и zcat существуют, они должны быть символическими или жесткими ссылками на gzip. /bin/csh может быть символической ссылкой либо на /bin/tcsh, либо на /usr/bin/tcsh.
Если может потребоваться создавать файлы устройств в /dev вручную, каталог /dev должен содержать команду MAKEDEV, которая может создать файл устройства в случае необходимости. Он может также содержать MAKEDEV.local для любых локальных устройств.
Если требуется, MAKEDEV должен иметь возможность создания любого устройства, которое может быть установлено в системе, а не только тех устройств, которые устанавливаются при какой-либо конкретной реализации.
Previous: /boot : Статические файлы для системного загрузчика
Next: /etc : Специфичная для данного хоста конфигурационная информация
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Следующие каталоги либо символические ссылки на них должны быть расположены в /etc, если соответствующие пакеты установлены в системе:
"/etc" X11 sgml |
"Конфигурационная информация для данного хоста" Конфигурация системы X Window (optional) Конфигурация для SGML и XML (optional) |
Дерево 3.7.3.2
Следующие файлы либо символические ссылки на них должны быть расположены в /etc, если соответствующие пакеты установлены в системе: [примечание 5]
csh.login | Общесистемный инициализационный файл для оболочки C-shell (optional) |
exports | Список контроля доступа для сетевой файловой системы NFS (optional) |
fstab | Постоянная информация для монтирования файловых систем (optional) |
ftpusers | Список контроля доступа для демона FTP (optional) |
gateways | Файл, содержащий список шлюзов для демона routed (optional) |
gettydefs | Установки терминала, используемые демоном getty (optional) |
group | Файл, определяющий списки групп пользователей в системе (optional) |
host.conf | Файл конфигурации для системы разрешения имен (optional) |
hosts | Постоянная информация об именах хостов (optional) |
hosts.allow | Список хостов, с которых разрешен доступ в систему (optional) |
hosts.deny | Список хостов, с которых запрещен доступ в систему (optional) |
hosts.equiv | Список доверенных хостов для rlogin, rsh, rcp (optional) |
hosts.lpd | Список доверенных (разрешенных) имен хостов для демона печати lpd (optional) |
inetd.conf | Конфигурационный файл для демона inetd (optional) |
inittab | Конфигурационный файл для init (optional) |
issue | Сообщение, выдаваемое системой до регистрации пользователя (optional) |
ld.so.conf | Список дополнительных каталогов для поиска разделяемых библиотек (optional) |
motd | Сообщение, выдаваемое системой после регистрации пользователя (optional) |
mtab | Динамически изменяющаяся информация о смонтированных файловых системах (optional) |
mtools.conf | Конфигурационный файл для mtools (optional) |
networks | Статическая информация о сетевых именах (optional) |
passwd | Файл паролей (optional) |
printcap | База данных с настройками принтеров для lpd (optional) |
profile | Общесистемный файл инициализации для оболочки, запускаемой при входе пользователя в систему (optional) |
protocols | Перечень IP-протоколов (optional) |
resolv.conf | Конфигурационный файл для системы разрешения имен (optional) |
rpc | Перечень протоколов удаленного вызова процедур (RPC) (optional) |
securetty | Файл со списком устройств, с которых может заходить пользователь root (optional) |
services | Имена портов для сетевых сервисов (optional) |
shells | Список путей доступа для имеющихся в системе оболочек (optional) |
syslog.conf | Конфигурационный файл для демона syslogd (optional) |
Таблица 3.7.3.1
Файл mtab не соответствует неизменяемой природе файлов, размещенных в /etc: он помещен в данный каталог в виде исключения по историческим причинам.[примечание 6]
Следующие каталоги или символические ссылки на каталоги должны находиться в /lib, если соответствующая подсистема установлена:
"/lib" modules |
"Основные разделяемые библиотеки и модули ядра" Загружаемые модули ядра (optional) |
Дерево 3.9.3.1
[10]
Разделяемые библиотеки, которые необходимы только исполняемым файлам, расположенным в /usr (таким как бинарные файлы системы X Window) НЕ должны располагаться в /lib. Только те разделяемые библиотеки, которые необходимы для запуска программ из /bin и /sbin могут располагаться здесь. В частности, библиотека libm.so.* может быть расположена в /usr/lib, если она не требуется никаким программам из /bin или /sbin.
[11] Обычное местоположение этого бинарного файла - /usr/lib/gcc-lib/<target>/<version>/cpp. /lib/cpp может быть либо прямой ссылкой на этот файл, либо ссылкой на любой другой указатель этого файла, существующий в файловой системе. (Например, часто используется /usr/bin/cpp).
Previous: /home : Домашние каталоги пользователей (optional)
Next: /lib<qual> : Основные разделяемые библиотеки альтернативных форматов (optional)
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Следующие файлы или символические ссылки на файлы должны быть в /usr/share/dict, если соответствующие подсистемы установлены:
words | Список слов английского языка (optional) |
Таблица 4.11.4.2.1
В системах, где необходим как американский, так и британский английский, можно сделать words ссылкой на /usr/share/dict/american-english или /usr/share/dict/british-english.
Списки слов для других языков могут быть добавлены, используя английское название соответствующего языка, например, /usr/share/dict/french, /usr/share/dict/danish, и так далее. В названиях должен, по возможности, использоваться набор символов ISO 8859, соответствующий данному языку; если возможно, надо использовать набор символов Latin1 (ISO 8859-1) (зачастую это невозможно).
Другие списки слов тоже могут включаться в этот каталог, если они присутствуют.
Следующие каталоги или символические ссылки на каталоги должны быть в /usr/share/<mandir>/<locale>, если только она не пуста.[примечание 28]
"<mandir>/<locale>" man1 man2 man3 man4 man5 man6 man7 man8 |
"Иерархия страниц интерактивного руководства" Пользовательские программы (optional) Системные вызовы (optional) Библиотечные вызовы (optional) Специальные файлы (optional) Форматы файлов (optional) Игры (optional) Разное (optional) Системное администрирование (optional) |
Дерево 4.11.5.2.3
Компонент <section> задает секцию руководства.
Некоторые дополнения должны быть сделаны в структуре каталога /usr/share/man для поддержки страниц руководства, написанных на разных (или нескольких) языках. При внесении этих изменений необходимо иметь в виду место расположения и ссылки на эти страницы. Кроме того, приходится учитывать такие особенности языка как различия, обусловленные географическими факторами и различными кодировками.
Способ именования специфичных для языка подкаталогов /usr/share/man основан на Приложении E стандарта POSIX 1003.1, которое задает формат строки, идентифицирующей локаль, -- это общепринятый метод определения особенностей, определяемых культурой той или иной страны. Строка <locale> имеет следующий формат:
<language>[_<territory>][.<character-set>][,<version>]
Поле <language> должно браться из стандарта ISO 639 (коды для представления названий языков). Оно должно состоять из двух символов и записываться только в нижнем регистре.
Поле <territory> представляет собой, если это возможно, двух-буквенный код из ISO 3166 (спецификация представления названий стран). (a specification of representations of countries). (Большинство людей знакомы с двухбуквенными кодами, используемыми для обозначения стран в почтовых адресах. [примечание 29]). Это поле должно состоять из двух символов, записываемых только в верхнем регистре (заглавными буквами),
Следующие файлы или символические ссылки на файлы должны иметься в /usr/share/misc, если соответствующие подсистемы установлены.
ascii | таблица набора символов ASCII (ASCII character set table) (optional) |
magic | Список магических чисел (list of magic numbers) для команды file, используемый по умолчанию (optional) |
termcap | База данных с параметрами терминалов (optional) |
termcap.db | База данных с параметрами терминалов (optional) |
Таблица 4.11.6.1.3
Другие (специфические для отдельных приложений) файлы тоже могут размещаться здесь [примечание 30], но разработчики могут при желании разместить их также в /usr/lib.
Следующие каталоги или символические ссылки на каталоги должны быть в /usr/share/sgml, если соответствующие подсистемы установлены:
"/usr/share/sgml" docbook tei html mathml |
"данные для SGML и XML" docbook DTD (optional) tei DTD (optional) html DTD (optional) mathml DTD (optional) |
Дерево 4.11.7.2.4
Другие файлы, которые не относятся к данному DTD, могут располагаться в их собственных подкаталогах.
[25] Многие их этих данных когда-то размещались в /usr (man, doc) или /usr/lib (dict, terminfo, zoneinfo).
[26] Очевидно, что файлы интерактивного руководства не нужны в корневой файловой системе /, потому что они не требуются во время загрузки системы и не являются необходимыми в чрезвычайных обстоятельствах. [примечание 27]
[27] Действительно.
[28] Например, если /usr/local/man не содержит файлов руководства в секции 4 (Устройства), то /usr/local/man/man4 может не создаваться.
[29] Главным исключением из этого правила является Великобритания (the United Kingdom), которая в ISO 3166 обозначается как `GB', а в большинстве почтовых адресов как `UK'.
[30] Вот некоторые из таких файлов:
{ airport, birthtoken, eqnchar, getopt, gprof.callg, gprof.flat, inter.phone, ipfw.samp.filters, ipfw.samp.scripts, keycap.pcvt, mail.help, mail.tildehelp, man.template, map3270, mdoc.template, more.help, na.phone, nslookup.help, operator, scsi_modes, sendmail.hf, style, units.lib, vgrindefs, vgrindefs.db, zipcodes }
Previous: /usr/sbin : Не обязательные стандартные команды
Next: /usr/src : Исходные коды (optional)
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Рекомендация
Следующие файлы или символические ссылки должны находиться в /etc/X11, если только соответствующая система установлена:
Xconfig | Конфигурационный файл для ранних версий XFree86 (optional) |
XF86Config | Конфигурационный файл для XFree86 версий 3 и 4 (optional) |
Xmodmap | Глобальный файл модификации клавиатуры в X11 (optional) |
Таблица 3.7.5.2.2
Среди подкаталогов в /etc/X11 могут находиться отдельные подкаталоги с конфигурационной информацией для xdm и других программ (например, для оконных менеджеров), которые в такой информации нуждаются. [примечание 7]
Рекурсивный глоббинг
zsh позволяет производить рекурсивное раскрытие имен файлов. Для этого используются формы **/ и ***/ Первая форма отличается от второй лишь тем, что не следует по символьным ссылкам. Так, например ls **/foo произведет поиск файлов с именем foo во всех подкаталогах. Эти формы не могут комбинироваться с другими формами в одном шаблоне. При одновременном использовании данных форм с другими, оператор * приобретает свое обычное значение.
???
Кроме вышеперечисленных настроек. zsh также позволяет использовать приблизительное соответствие, пытаясь найти файлы, в именах которых (по его мнению :-) могли бы быть сделаны ошибки.
Repeat
Логический флаг, который определяет - нужен ли "автоповтор" для данной клавиши. Так же, как и для флага locks, справа от присваивания могут быть слова - true, yes, on (нужен автоповтор) или - false, no, off (автоповтор не нужен).
Кроме того, там же может стоять слово default. Дело в том, что автоповтор, обычно, выполняет само "железо" клавиатуры. Поэтому, XKB не надо заботиться о повторении нажатия клавши. Чаще всего, ему приходится наоборот - "подавлять" автоповтор для некоторых клавиш. Так вот, значение "default" означает, что автоповтор надо "оставить на совести" "железа" и не пытаться что-либо менять.
По умолчанию большинство клавиш отрабатывают автоповтор и значения repeat
для них - default. А для клавиш-модификаторов - Control, Shift, Alt, CapsLock, NumLock и т.п., автоповтор подавляется, и repeat для них - false.
Repeat и locking
Устанавливают значения для флагов "автоповтор" и "залипание". Справа от присваивания должно быть логическое значение - True или False.
Например,
repeat = True; locking = False;
Решение первое
Первое состоит в том, чтобы "размазать" права владельца на группу. Обычно, владелец отличается тем, что имеет право записи (модификации файла). Соответственно, "группе допущенных" можно дать права только для чтения (и/или исполнения) файла, а "всем остальным" вообще не давать никаких прав.
Так вот. Если для изменения файла можно использовать только одну определенную программу, то надо сделать эту программу (или ее копию) "суидной", то есть такой, которая при выполнении меняет свой "эффективный userID" на ID владельца. Естественно, владельцем такой программы должен быть тот же юзер, что и владелец файла, который мы хотим модифицировать, а права на запуск этого файла надо дать только той группе, которой мы хотим дать права на модификацию. Кстати, "владелец" файла может быть и фиктивным юзером, то есть зарегистрированным в системе только для этой цели и не соответствовать никакому реальному человеку.
Таким образом, нужно создать две разные группы, в первую (writers) внести только тех юзеров, которые имеют право изменять файл, а во вторую (readers) тех, кто может только читать файл (ну и всех из writers, пожалуй, тоже).
Сам файл должен быть открыт для записи только владельцу (это может быть кто-нибудь из группы writers или вообще фиктивный юзер), для чтения - "группе допущенных" и это должна быть группа readers, и, наконец, для "всех остальных" можно смело убирать любые права. Ну, а та программа, которая предназначена для модификации, должна иметь того же владельца, что и исходный файл, группу - writers, быть "суидной" и права на запуск должны быть только у группы и владельца (хотя, если он фиктивный, то ему не обязательно).
Решение второе
Второе решение заключается в том, что файл надо "спрятать" в директорию, с соответствующими правами доступа.
Пусть у нас так же существуют две группы readers и writers, причем все члены группы writers входят также и в readers (но не наоборот :-).
Тогда директория, в которую прячется файл должна иметь группу readers (кто владелец в общем-то - не важно). Причем для группы доступ в директорию открыт, а для "всех остальных" закрыт. Это означает, что в директорию смогут войти только "читатели" и "писатели" (поскольку они входят в группу "читателей").
А сам файл должен иметь группу writers, причем этой группе файл должен быть открыт для записи. А право "только чтение" можно дать категории "все остальные", все равно это будут только те, кто входит в readers, но не попал в writers. Посторонние просто не попадут в эту директорию и даже не увидят, что такой файл существует.
Что можно сказать о втором круге проблем (невозможность самим владельцам файлов определять круг допущенных к файлу)?
Здесь все несколько хуже. Проблема даже не в том, что рядовой юзер не может сам менять состав групп. Эту то проблему можно решить достаточно просто. Можно было бы для каждого юзера завести отдельную группу (кстати, программа для добавления юзера adduser, так и предлагает делать) и написать специальную программу (естественно, "суидную"), которая исполнялась бы с правами root'а и позволяла юзеру менять состав группы, но не любой, а только его личной.
Однако, не торопитесь это делать. Проблема в том, что отдельный юзер может быть полноправным членом только 16-и групп. И если у юзера vasia окажется слишком много друзей, которые захотят включить его в свои группы, то реально он сможет "дружить" только с шестнадцатью, чьи группы будут первыми в списке групп.
Кроме того, это не решает проблему, если владелец файла захочет дать разные права нескольким разным группам.
Ресурсы
Домашняя страница LVM
Документ LVM HOWTO
Copyright (c) 2002, Vinayak Hegde. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев, Игорь Яровинский, Юрий Прушинский
Со всеми предложениями, идеями и комментариями обращайтесь к Александру Куприну (lgrus@lrn.ru). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.
Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg84/vinayak.html
Архивы выпусков можно взять здесь: http://gazette.linux.ru.net/archive/
Ресурсы Internet
Более подробную информацию о «виртуальных машинах» на базе мэйнфреймов IBM можно найти на http://www.vm.ibm.com/.
Рекламный ролик IBM «ConsultingTimes.com» можно загрузить с сайта по адресу: http://www.consultingtimes.com/media/heist60.mpeg, а ценовое сравнение решений для Microsoft Exchаnge с http://consultingtimes.com/Serverheist.html.
С анонсом Virtuozzo 2.0 можно ознакомиться на http://www.newsforge.com/article.pl?sid=02/01/11/1529244&mode=thread.
Стратегия увеличения доходов для поставщиков хостинга описывается на http://techupdate.zdnet.com/techupdate/stories/main/ 0,14179,2815405,00.html.
Информацию по пакету автоматизации хостинга HSPcomplete можно найти на http://www.sw-soft.com/en/products/hspcomplete/.
Технология Private Server объясняется на http://www.ensim.com/solutions/ps.shtml.
Как одновременно можно работать с Linux и Windows рассказывается на http://www.newsforge.com/article.pl?sid=01/11/29/0414233&mode=thread.
Описание сервера GSX дается на http://www.vmware.com/products/server/gsx _features.html.
Анонс vserver опубликован на http://lwn.net/2001/1018/a/virtual-servers.php3.
Загрузить vserver можно с http://www.solucorp.qc.ca/miscprj/s_context.hc?s1=9&s2=0&s3=0&s4=0&prjstate=1&nodoc=0.
Режим отображения (колличество строк и символов на экране)
Как я уже упоминал выше, видео-контроллер может строить изображение на экране с разной "плотностью символов". В стандартном режиме изображение состоит и 25 строк по 80 знаков в каждой. Такой режим называется (в тех терминах, которые понимает vidcontrol) VGA_80x25. В зависимости от типа видеокарты, вы можете получить также режимы - 40x25, 80x30, 80x43, 80x50 и 80x60.
Для переключения режимов можно воспользоваться опять же программой vidcontrol.
Важно отметить, что хотя режим отображения обеспечивается не столько программой syscons, сколько "железкой" - видео-контроллером, syscons позволяет иметь разный "режим отображения" на разных "виртуальных терминалах".
То есть, изменение режима влияет только на текущий терминал, а когда вы будете переключаться между разными "виртуальными терминалами", syscons будет каждый раз перепрограммировать видео-контроллер, чтобы восстановить на каждом терминале тот режим, который вы ему задали.
И еще надо заметить, что если вы переключите терминал в режим с большим количеством строк (например) это еще не означает, что все программы (редакторы, "коммандеры" и т.п.) будут использовать эту возможность. Для того, чтобы все программы "осознали", что появилось дополнительное пространство на экране, необходимо правильно установить значение "переменной окружения" TERM (тип терминала).
Если для стандартного режима тип терминала должен быть cons25 или cons25r (r - русифицированный, он же pc3r), то для других режимов надо выбрать - cons30 (cons30r), cons43 (cons43r) и т.п.
Некоторые программы (например, Midnight Commander) сами могут определять размер экрана (и то, только при старте), но если правильно выставить переменную TERM, это гарантирует вам, что все программы вас правильно поймут.
Режимы mapping
Имеется возможность выбрать одну из двух стратегий mapping:
1. Linear (линейный) mapping напрямую соединяет диапазон LE с областью последовательных PE.
2. Striped mapping имеет дело не только со связыванием LE и PE, но и с чередующимися между физическими разделами chunks. Считается, что такая стратегия позволяет увеличить производительность logical volume. Разумеется, чередующиеся chunks должны находится на разных scsi или разных ide-master дисках. При этом администрирование логики усложняется, гибкость инсталляции во многом теряется, а отказ любого диска создаст проблему всему логическому тому. Планируя переход от схемы 3 раздела на одном диске на четыре симметричных на двух со striped логикой, запаситесь tmp диском или выполните backup на внешние носители.
Raid tools поддерживают как массивы с избыточностью (жёсткие конструкции повышенной надежности, например, raid1 и raid4/5), так и массивы без избыточности. Об LVM можно сказать, что технологии псевдо-raid выделены в отдельный класс и для них созданы утилиты, по максимуму использующие повышенную гибкость таких конструкций. И ещё. Складывается впечатление, что не следует смешивать linear и striped в одной VG (реализация LVM позволяет иметь на одной машине несколько VG). Если решите использовать обе стратегии, создайте для них изолированные группы.
RHL runlevels:
0: halt 1: single user 2: multiuser 3: multiuser + NFS (режим по умолчанию) 4: 5: X11 (xdm, gdm или kdm) 6: reboot
Ротация журналов
Автор: Станислав Лапшанский, slapsh@kos-obl.kmtn.ru
Опубликовано: 20.02.2002
Оригинал: http://www.softerra.ru/freeos/16169/
Статья является переводом текста Майкла Лукаса (Michael Lucas).
Файлы журналов растут. Собственно говоря для этого они и предназначены. Как системный администратор, вы должны иметь способ контролировать их рост. Для этого FreeBSD имеет стандартное средство - newsyslog.
Newsyslog позволяет вам осуществлять ротацию файлов журналов. Самые старые файлы удаляются, устаревшие последовательно переименовываются и, наконец, текущий лог замещается заново созданным. Утилита newsyslog может сжимать файлы журналов, перезапускать демонов и осуществлять всю необходимую поддержку выполнения рутинных операций по перетасовке файлов.
По умолчанию система настроена на запуск newsyslog один раз в час, это делается при помощи демона cron. Newsyslog читает конфигурационный файл /etc/newsyslog.conf и проверяет каждый указанный там файл журнала. При совпадении указанного условия производится ротация соответствующего журнала.
В файле /etc/newsyslog.conf каждая строка содержит конфигурацию ротации для одного файла журнала. В начале каждой строки указывается полное имя файла журнала, например /var/log/httpd-error.log.
Далее идет необязательное поле, которое, кстати не используется в поставляемом вместе с системой newsyslog.conf, это список из владельца и группы файла, разделенных двоеточием. Вот так: "root:wheel". Newsyslog может изменять владельца и группу и старых файлов журналов. По умолчанию владельцем устаревших журналов является пользователь root, группы wheel. Эту возможность вы можете с успехом применять на многопользовательских машинах.
Вы можете указать изменение только владельца, или только группы. В этом случае вы должны будете использовать двоеточие с пустым местом там, где должен находиться неизменяемый параметр. Например ":www" сменит группу на "www", а "user827:" заменит владельца на "user827".
Третье поле содержит режим доступа к устаревшим файлам журналов в стандартном трехциферном Unix-формате.
Далее идет счетчик, указывающий newsyslog на количество хранимых устаревших журналов. Newsyslog начинает отсчет файлов с нуля. В то время как большинство программ начинают считать с нуля, newsyslog включает 0 «по умолчанию» и считает файлы не учитывая нулевой. По умолчанию для журнала /var/log/massages счетчик равен пяти, при этом /var/log содержит следующие файлы: messages messages.0.gz messages.1.gz messages.2.gz messages.3.gz messages.4.gz messages.5.gz
Те из вас, кто может сосчитать количество файлов, видят, что их шесть, а не пять, плюс еще и текущий файл журнала. Как правило, иметь большее количество журналов лучше, чем испытывать в них недостаток. В то же время, если вы испытываете недостаток свободного пространства на винчестере, то иногда вы будете испытывать искушение удалить один-два излишних журнала. Похожая ситуация возникает на некоторых веб-серверах, на которых размещены до нескольких сотен сайтов - несколько удаленных журналов каждого сайта в сумме могут составить достаточно большой объем свободного места.
Следующие два поля конфигурационной записи указывают newsyslog размер и время при наступлении которых указанный файл необходимо подвергнуть ротации. Можно осуществлять ротацию по достижении определенного объема файла, или при наступлении определенного времени, или в обоих случаях. Если указаны оба условия, то ротация будет происходить при выполнении любого из них.
Если размер или время не важны, например, если вы хотите проводить ротацию строго один раз в день, независимо от размера файла, то вместо указания размера необходимо поставить звездочку "*".
Пятое поле используется для указания размера в килобайтах. Когда newsyslog запускается он сравнивает размер файла с указанным, если файл больше, то производится его ротация.
Пока все просто, правда?
Шестое поле, указывающее время, заставляет плакать новичков в системном администрировании. Поле времени может содержать данные четырех типов: «звездочку», число или два различных формата даты.
Если вы не хотите производить ротацию журналов в определенное время, просто поставьте в это поле «звездочку».
Если в поле будет число, то newsyslog будет проводить ротацию по прошествии указанного количества часов. Например, если вы хотите, что бы ротация проводилась каждые 24 часа, и вам не важно в какое именно время, то просто поставьте в это поле число «24».
Если поле начинается символом «@», то считается что время представлено в формате ISO-8601, этот стандарт используется newsyslog в большинстве Unix-подобных операционных систем. Этот формат использовался первой версией newsyslog разработанной в MIT (Массачусетский Технологический Институт - прим. переводчика). На первый взгляд этот формат не совсем понятен. Но, поскольку это стандарт, FreeBSD его поддерживает.
Полная запись даты в формате ISO-8601 состоит из 16 цифр с буквой «T» в середине. Первые четыре цифры означают год, следующие две - месяц, и еще две - день месяца. Буква «T» идет после даты, отделяя ее от времени, как десятичная точка в вещественных числах отделяет дробную часть от целой. После буквы «T» идут две цифры часа, затем две цифры минут и наконец две цифры секунд. Например дата 2 февраля 2002 года, 21:15:08, в формате ISO-8601будет выглядеть следующим образом: 20020202T211508
Вы обязательно должны ставить букву «T» в ISO-8601-дате.
Указание полных дат в формате ISO-8601 просто и очевидно. Путаница начинается, когда вы не пишете полную дату. Вы можете указать поля даты только рядом с буквой «T», оставив остальное место незаполненным. Все неуказанные поля не будут учитываться при сравнении.
Например T23 значит - любой день в году, 23:00. Если вы напишете в newsyslog.conf @T23, то ротация этого журнала будет проводиться каждый день, ровно в 23:00. Запись 4T00 значит полночь 4 числа каждого месяца, таким образом @4T00 будет запускать ротацию в это время.
Так же как при работе с crontab вам следует уточнить часы ротации. Указание даты типа @7T будет запускать ротацию один раз в час, каждый час седьмого числа каждого месяца. Таким образом такая дата будет запускать ротацию раз в час на протяжении целого дня. Это может быть полезно для отладки, но вряд ли пригодится в реальной жизни.
Эта система имеет одну серьезную проблему - она не дает простого способа задавать ежедневно выполняемые задачи. Желание запустить ротацию журнала по понедельникам, не является чем-то необычным. Запустить ротацию журнала в последний день месяца таким образов вообще не удастся. Тут на помощь приходит второй формат времени.
Если запись времени начинается со знака доллара "$", то считается, что время задается в специфическом FreeBSD-формате «месяц-неделя-день». Это очень похоже на cron и позволяет вам установить конкретные дни недели для выполнения задачи.
Этот формат использует три буквенных идентификатора: M (день месяца), W (день недели), H (час дня). После каждого из них идет число, указывающее точное время запуска. Часы находятся в интервале от 0 до 23, дни недели от 0 (воскресенье), до 6 (суббота). Дни месяца: от 1 и до количества дней в конкретном месяце.
Например для запуска ротации каждое воскресение в 8 утра вам следует задать время как $W0H8. Если вы захотите ротировать журналы в полдень 5 числа каждого месяца, то напишите $M5H12.
Одна интересная функция этой системы позволяет вам автоматически задавать ротацию на последний день месяца используя специальный «день месяца» - «L» (от last - последний. Прим. переводчика). Без этого знака было бы очень трудно задать ротацию журнала в последний день месяца без написания скрипта, который бы вставлял количество дней в конкретном месяце. Если вы хотите запустить ротацию вашего журнала аккаунтов за два часа до начала нового месяца, вы должны использовать запись $MLH22.
После того, как вам удалось точно указать время ротации, перейдем к полю флагов. Это поле необязательно для большинства журналов, однако для некоторых оно жизненно важно. Newsyslog вставляет сообщение «logfile turned over» в каждый вновь созданный файл журнала. Если журнал ведется в двоичном виде (как например /var/log/wtmp), то добавление такого сообщения обязательно его испортит. Флаг «B» запрещает newsyslog'у вставлять это сообщение.
Большинство журналов ведется в текстовом формате. Сжатие таких файлов сохранит много пространства на вашем диске. Флаг «Z» укажет newsyslog, что старые журналы следует сжать gzip'ом.
Одновременно допускается использовать только один из этих флагов.
Следующее поле задает путь к «pid-файлу» процесса пишущего журнал. Использование pid-файлов является простым способом записи поля ID процесса в системе, так что бы другие программы могли его легко прочитать. Большинство программ хранят свои pid-файлы в каталоге /var/run - поглядите них у себя на машине. Если в этом поле вы укажете полный путь к pid-файлу, то newsyslog будет посылать сигнал этому процессу когда будет производиться ротация. Например веб-сервер Apache должен быть оповещен при ротации его журналов. Записав в этом поле полный путь к его pid-файлу вы заставите newsyslog посылать процессу Apache сигнал kill -1, что бы он запустил свою часть обработки ротации журналов.
Большинство программ поддерживают ротацию журналов сигналом kill -1 или SIGHUP. Некоторые программы требуют специального сигнала, когда их файлы ротируют. Если вы используйте программу такого типа, то укажите номер необходимого сигнала в последнем поле.
Давайте соберем все сказанное вместе, в самом худшем случае, в примере, в который трудно поверить. Итак у вас есть журнал базы данных, который вы хотите ротировать в 23 часа в последний день каждого месяца. В документации базы данных сказано, что вы должны послать процессу базы сигнал прерывания (SIGINT или сигнал номер 2) после ротации. Вы хотите, что бы архивные журналы принадлежали пользователю "dbadmin" и читать их мог только он. Более того, журналы - двоичные файлы и должны быть не тронуты newsyslog'ом. Ваш newsyslog.conf должен выглядеть следующим образом: /var/log/database dbadmin: 600 30 * $MLH23 B /var/run/db.pid 2
Это крайний случай, в большинстве реальных ситуаций вам следует только собрать имя файла и условие ротации. Всего-то.
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
RPM
Командный интерфейс: rpm
Графический интерфейс: glint (где же он в RedHat 6.0?), ему не нужен был gnome и он умел выдавать список Неустановленных пакетов.
Графический интерфейс: gnorpm. Позволяет манипулировать установленными пакетами (поиск, проверка, удаление, upgrade) и качать новые, пользуясь базой данных на сервере RedHat или http://rpmfind.net/ (40 тысяч пакетов / 55 GB).
RTFM -- Читайте руководство[*
И никогда не используйте новые ключи в первый раз с правами пользователя root.
Рубрика для невезучих
Пользователи Linux, количество которых неуклонно возрастает, время от времени могут оказываться лицом к лицу с неприятнейшей проблемой: компьютер не загружается. При этом, возможно, пользователь даже видит начало загрузки или может убедиться в том, что таблица разбиения диска цела. Грустно констатировать, что ваши данные — вероятно — целы, но как до них добраться? Есть ли у вас дискеты для аварийной загрузки? Надо было подумать заранее. Ставили RedHat c компакта? Вам еще повезло.
Инсталляционный диск (автор лишний раз убедился в этом для версии Redhat 5.2) умеет монтировать систему с целью ее модернизации. Посмотрим, как он это делает. Загрузитесь с инсталляционного компакт-диска и доберитесь до предложения выбрать "Install" или "Upgrade". В этот момент, используя стандартные комбинации типа Alt-F3, Alt-F4, можно изучить диагностику, которую генерирует программа инсталляции. Еще интереснее использовать комбинацию Alt-F2. На экране увидите приглашение ... bash. Если вернуться назад (Alt-F1) и выбрать "Upgrade", диск будет смонтирован под именем /mnt. Обратите внимание на диагностику (Alt-F4). Если предыдущий сеанс был завершен аварийно, то, естественно, нет полной уверенности в корректности файловой системы, о чем свидетельствует диагностическое сообщение: "EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended". Понятно, что в таком случае подобное монтирование может оказаться нежелательным.
Если в этот момент выполнить команду mount (Alt-F2), окажется, что устройством для /mnt служит некий файл из /tmp (скажем, /tmp/hda4). Просмотр /tmp не позволяет найти такой файл (что не мешает выполнить, к примеру, umount /mnt). Вновь посмотрев на диагностику (Alt-F3), вы обнаружите, что этот файл был создан для монтирования и позднее удален. "Красная Шапочка" в момент инсталляции ведет себя как "Рыжая лиса" или "Серый волк", заметая за собой следы и убирая свидетелей. Если необходимо выполнить проверку файловой системы, то можно не выбирать "Upgrade", а проделать все самостоятельно (подставив вместо hda4 собственное значение):
cd /tmp mknod hda4 b 3 4 e2fsck hda4 mount hda4 /mnt
После последней операции hda4 исчезнет.
После того, как диск смонтирован, появляется возможность выполнить любые необходимые для восстановления (или сохранения) команды.
Rulin
Русификация linux
Источник: http://nix.h1.ru
Автор: SHuRuP
email: mailto:shurup@xakep.ru?subject=nix
www: http://nix.h1.ru/
icq: 76011665
В этой статье будет рассмотрена русификация linux на примере Linux Mandrake v8.0 - KDE с кодировкой windows-cp1251 (именно с ней, а не любимой всеми koi8-r, многие могут поспорить, но и у этого варианта есть свои плюсы и минусы).
Во время установки при выборе языка лучше нажать на дополнительно и выбрать обе русские кодировки (koi8-r & windows-cp1251) - могут пригодиться в будущем. После установки ищем /etc/profile и в конце файла дописываем приблизительно следующее:
export LANG=ru_RU.CP1251
export LC_CTYPE=ru_RU.CP1251
export LC_ALL=ru_RU.CP1251
Проверить это можно, перезагрузившись и набрав locale в консоле, - всюду должно стоять *=ru_RU.CP1251.
Теперь KDE Control Center -> Look'N'Feel -> Fonts, здесь необходимо проставить всюду шрифты с кодировкой win-1251 (например: helvetica). Если шрифтов нет, то бегом на http://yahoo.com искать что-нибудь вроде: 'fonts+free+windows-cp1251'. После скачивания надо распаковать например в /usr/X11R6/lib/X11/fonts/windows-1251, после этого:
cd /usr/X11R6/lib/X11/fonts/windows-1251
ttmkfdir > fonts.dir
ttmkfdir > fonts.scale
Когда будут созданы файлы (в виде списка всех шрифтов в каталоге), в /etc/X11/fs/config добавьте в список каталогов со шрифтами /usr/X11R6/lib/X11/fonts/windows-1251. Результат будет сразу после перезапуска сервера шрифтов (/etc/rc.d/init.d/xfs restart).
После этого KDE Control Center -> Personalization -> Keybord layout, там надо добавить русский язык, затем зайти на закладку 'Shortcut' и выбрать, как менять раскладку клавиатуры (лучше не выбирать + и +, так как могут быть баги; мой совет - +, или с другой буквой).
Для просмотра русских названий файлов и каталогов для дисков vfat строки с монтированием таких разделов в /etc/fstab должны выглядить приблизительно так:
/dev/hda5 /mnt/win_c vfat quiet,codepage=866,iocharset=cp1251,umask=000 0 0
Ключевым здесь, естественно, является iocharset=cp1251. Конечно, необходимо, чтобы ядро было скомпилировано с поддержкой этих кодировок (866, cp1251).
Поддержку проверки русского синтаксиса скачать можно здесь. Данный spellchecker можно скомпилить в windows-cp1251.
Чтобы шрифты выглядили красиво, нужно настроить антиалиасинг. Если его тупо включить в KDE Control Center, то шрифты маленьких размеров смотряться не очень, поэтому неплохо поэкспериментировать с файлом /etc/X11/XftConfig, вставив что-то типа:
match any size < 13 edit antialias=false;
Это заставит все шрифты, у которых размер менее 13, рисовать без антиалиасинга.
Вот основная часть и закончена, теперь осталось во всех программах прописать русские шрифты с кодировкой win-1251 и дело в шляпе.
Хочу предупредить, что абсолютного эффекта ожидать не надо, потому что локализация Linux Mandrake еще сделана не идеально, например, консоль мне под win-1251 так и не удалось настроить, хотя это не так существенно. Зато многие вещи стали намного удобней, например, набирать текст в gedit на 'родной' для большинства кодировке - это значительно лучше аналогичного его написания в кои8; в kvirc'е также это дает преимущества, т.к. не на всех серверах существует перекодировка в koi8-r; в sylpheed опять же отправление почты в win-1251 основной части интернетчиков удобней; и примеров таких можно привести еще много. Но выбор всегда за Вами.
P.S. Выражаю благодарность Александру Ильину (a_ilyin@yahoo.com) за помощь в написании этой статьи.
js=0
js=1
js=2
js=3
HotLOG(995,js)
Русификация дисплея
Начнем с последних строчек:
font8x16=cp866b-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8
Они определяют аргументы для утилиты vidcontrol, которая должна будет загрузить в видео-контроллер новый набор шрифтов (подробнее в
описании vidcontrol). Почему рекомендуют шрифты cp866, хотя русификация FreeBSD подразумевает кодировку koi8-r, немного позднее.
Напомню, что для стандартного режима
"режима отображения" (25 строк) необходим только шрифт с матрицей 8x16. Остальные два понадобятся только в том случае, если вы будете использовать другие режимы (30, 43, 50 строк).
Кстати, если вы заглянете в /usr/share/syscons/fonts, то обнаружите, что шрифты в кодировке cp866 для матрицы 8x16 имеют три варианта - cp866, cp866b и cp866c (такой же набор имеется и для кодировки koi8-r). Причем, cp866 и cp866c немного отличается набором символов - в cp866c часть символов "псевдографики" заменена "экзотическими" буквами. А вот cp866b сильно отличается внешним видом символов, причем и программа инсталляции и большинство руководств по русификации усиленно навязывают именно его. (Мне, например, он не нравится, но это дело вкуса).
Строчка - "scrnmap=koi8-r2cp866" опять же задает аргумент для vidcontrol, но уже не для установки шрифтов, а для загрузки в syscons таблицы перекодировки
(screenmap). Поскольку, шрифты рекомендуется поставить для кодировки cp866, то для того, чтобы тексты в кодировке koi8-r отображались правильно, необходима эта таблица - "из koi8-r в cp866".
Русификация для других кодировок
Рассмотренные рекомендации подразумевают, что вы будете использовать русскую кодировку koi8-r.
Как вы наверное знаете, существует по крайней мере еще две не менее популярные кодировки для русских букв cp866 и cp1251.
Можно ли заставить syscons (и дисплей, и клавиатуру) правильно работать с такими кодировками? Конечно, можно.
Как вы уже поняли, для дисплея необходимо загрузить соответствующие шрифты или screenmap, а для клавиатуры - таблицу "раскладки клавиатуры".
Кстати, для cp866 в системе уже есть все необходимое. То, что есть шрифты cp866 вы уже знаете (только надо убрать дополнительную перекодировку через screenmap), подходящая "раскладка клавиатуры" - ru.cp866, также имеется в /usr/share/syscons/keymaps.
А вот если вы хотите cp1251, то кое-что придется изготовить самостоятельно (или попросить у тех, кто уже сделал). Надо составить "раскладку клавиатуры" (назвать ее, например - ru.cp1251), а для дисплея проще всего делать не новые шрифты, а screenmap. Если у вас используются шрифты cp866, то надо просто изготовить табличку из 256 байт, которая будет транслировать коды из cp1251 в cp866 (пусть она называется - cp1251-cp866) и "подсунуть" ее syscons.
Если вы хотите во время работы переключаться между различными кодировками, надо сделать три командных файла и запускать их в нужный момент.
Например, если не трогать шрифты (пусть это будут шрифты для cp866) и "перенастройку" дисплея делать с помощью screenmap, то эти файлы могут выглядеть так:
для cp866
kbdcontrol -l ru.cp866 vidcontrol -L
для koi8-r
kbdcontrol -l ru.koi8-r vidcontrol -l koi8-r2cp866
для cp1251
kbdcontrol -l ru.cp1251 vidcontrol -l cp1251-cp866
Напомню только, что и шрифты, и "таблица перекодировки", и "раскладка клавиатуры" действуют на все виртуальные терминалы. Поэтому установить для разных терминалов разные "типы русификации" не получится.
И, наконец, надо заметить, что русификация драйвера терминала, хотя и важная часть русификации всей системы, но не единственная.
Если вы хотите, чтобы все программы нормально понимали русский язык в кодировках отличных от koi8-r, вам придется еще менять переменную окружения LANG (а возможно и некоторые другие). А для cp1251 еще и изготовить "locale" (набор таблиц, описывающих особенности национального языка). Кроме того, некоторые программы (например, чтения/писания почты) возможно придется "отконфигурировать" индивидуально.
Но, для того, чтобы "по быстрому" просмотреть или подправить какой-нибудь документ в "нестандартной" кодировке, скорее всего "сойдет" и описанное решение.
Иван Паскаль pascal@tsu.ru
Русификация клавиатуры
Первая строчка - "keymap=ru.koi8-r" служит аргументом для утилиты kbdcontrol, которая при старте системы загрузит в syscons "раскладку клавиатуры" ru.koi8-r.
Это раскладка с "альтернативной клавиатурой", в которой "буквенные" клавиши генерируют коды русских букв в соответствии с кодировкой koi8-r.
Естественно, в этой раскладке предусмотрен модификатор для переключения между основной и "альтернативной" клавиатурами. Он "подвешивается" на клавишу [CapsLock]. Если вам это не нравится, вы можете подправить сам файл "раскладки клавиатуры" (смотри пример Переключатель "альтернативной клавиатуры" (Рус/Лат).).
Кстати, если пересобрать ядро с "option RUKEYMAP", то эта раскладка будет "встроена" в syscons "по умолчанию". В этом случае, ее можно не загружать при старте системы.
А вот следующая строчка
keychange="61 ^[[K"
имеет к русификации косвенное отношение.
Дело в том, что загружая новые шрифты, мы меняем свойства терминала. По крайней мере, символы псевдографики перемещаются другой диапазон кодов. Следовательно, описание терминала cons25 в termcap уже не будет полностью соответствовать реальным свойствам syscons. Поэтому, для русифицированного syscons в том же termcap предусмотрено другое описание и, соответственно, другой тип терминала - cons25r. Именно поэтому, те же инструкции по русификации рекомендуют подправить файл /etc/ttys (исправить все cons25 на cons25r) чтобы на каждом виртуальном терминале при старте очередной сессии переменная окружения TERM
(которая и сообщает программам тип терминала) по умолчанию получала значение cons25r.
Но описание терминала cons25r отличается от cons25 не только символами псевдографики. Согласно этому описанию, клавиша fkey61 (кнопка [Delete]) должна при нажатии выдавать последовательность кодов "Esc [ K", а не код 177, как это делает syscons (и как указано в описании терминала cons25).
Поэтому, нам рекомендуется "подрегулировать" сам syscons, чтобы его поведение соответствовало описанию в termcap. (Почему нельзя исправить termcap и оставить syscons в покое, я не знаю).
Итак, эта строчка служит только для "подгонки" syscons к его новому описанию в termcap. Она представляет из себя аргумент для программы kbdcontrol, которая заменит для клавиши fkey61 ([Delete]) выдаваемый код.
Русификация syscons
Рассмотрим подробнее в чем заключается процесс русификации syscons. Еще раз напомню, что все основные настройки syscons делаются автоматически при старте системы. Вам необходимо только правильно указать параметры в файле /etc/rc.conf.
Итак, инструкция (FreeBSD Handbook) предлагает добавить в rc.conf строчки:
keymap=ru.koi8-r keychange="61 ^[[K" scrnmap=koi8-r2cp866 font8x16=cp866b-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8
Русификация дисплея
Зачем так сложно?
Русификация клавиатуры.
Русификация для других кодировок
Руссификация
Документация
Linux Cyrillic HOWTO KOI8-R References (Russian Net Character Set) (Чернов)
С чего лучше начать
Обычно знакомство со всем новым начинается с того, как это новое создать и удалить. В случае с LVM классическое знакомство может запутать. Прежде чем приступить к чтению man pages и howto, уясните, какое значение в логике имеет «включить» и «выключить».
Создав все объекты для логики (последовательно, PV, VG, LV) и перезагрузив машину, можно испытать чувство дискомфорта, обнаружив, что всё недавно созданное вдруг стало недоступным. Одна из интересных и пугающих особенностей LVM в том, что логику перед началом работы необходимо активизировать. Файловые системы на логических томах могут находиться в трёх состояниях.
файловая система смонтирована на активном логическом томе. файловая система размонтирована на активном логическом томе. файловая система размонтирована на неактивном логическом томе.
Те или иные административные работы с логикой могут требовать одного из трёх перечисленных статусов.
Процесс перевода логики из неактивного состояния в активный и обратно несимметричен (обычно выполняется автоматически при загрузке и остановке). Для активизации группы логических томов требуется две команды, обратный процесс выполняется одной. Активизации VG достигается последовательностью:
# vgscan
# vgchange -a y LIN
Первая команда самая загадочная. Она сканирует дескрипторы дисков и дисковых разделов, загружает драйверы для логики (в файловой системе /proc появляется подкаталог lvm), переписывает несколько текстовых и индексных файлов в подкаталоге /etc и возвращает код возврата «1» в случае успеха. В автоматических сценариях код возврата «1» обычно является условием для запуска второй команды. Аргумент «y» (иначе Yes) во второй команде – указание активизировать VG по имени «LIN» («n», иначе «No», снимет флаг активности с группы при условии, что все находящиеся на логических томах файловые системы размонтированы).
С чего начать
Создайте собственный файл .Xmodmap в соответствии с инструкциями ниже.
В файл .bash_profile, находящийся в Вашей личной директории ~/ нужно добавить строки: export LANG=language export LC_ALL=language
где "language" соответствует языку, который Вы собираетесь использовать. Соответствующее значение для каждого языка можно найти в файле locale.alias в /usr/X11R6/lib/X11/locale. В консоли выполниете команду "exit" и снова войдите в систему для того, чтобы bash перечитал ~/.bash_profile.
Установите шрифты (для чешского или словацкого языка лучше подойдут шрифты ISO8859-2 Type 1) и укажите путь к ним в Вашем файле XF86Config. Запустите Х сервер.
Обратите внимание, что текстовый редактор из KDE 2.0 иногда не выводит шрифты ISO8859-2 даже если Вы указали путь к ним. Создается впечатление, что команда "Latin2" просто не работает. Установите другой базовый текстовый редактор, в котором можно ВЫБИРАТЬ шрифты (подойдет kedit от старого KDE). Вызвав с помощью меню соответствующий диалог выберите кодировку ISO8859-2.
В окне терминала выполните команду "xmodmap ~/.Xmodmap" для того, чтобы система перечитала настройки Xmodmap.
Переключайте клавиатуру в свое удовольствие.
Настройка международной клавиатуры с помощью XKB не рассматривается подробно, но упоминается, как относящаяся к проблемам интернализации. XKB и XMODMAP независимы друг от друга, поэтому Вы можете отредактировать файл /etc/X11/XF86Config так, как это описано в Danish-HOWTO или выполнить команду в окне X терминала (для Словацкой клавиатуры): setxkbmap -model pc102 -symbols 'czsk(us_sk_qwertz)' setxkbmap cs -option grp:shift_toggle
Параметр "grp:shift_toggle" определяет способ изменения раскладки.
Можно также написать
Option "XkbOptions" "grp:ctrl_shift_toggle"
в файле XF86Config, в этом случае переключение будет осуществлятся одновременным нажатием клавиш Ctrl и Shift.
Сведения о других языках ищите в файле symbols.dir в каталоге /usr/X11R6/lib/X11/xkb. Имейте в виду, что некоторые символы имеются только в исходном коде, а не в двоичных файлах.
Как видите, не все так просто. И все покажется еще сложнее, когда Вы обнаружите, что многие клавиатурные раскладки не входят в стандартную откомпилированную поставку XFree86, хотя их и можно найти в исходных текстах. Утилита kikbd изъята из KDE 2.0, а документация явно недостаточна. Хотелось бы просто запустить KDE, изменить настройки международной клавиатуры и немедленно начать набирать тексты на выбранном языке (это возможно для немецкого и некоторых других языков, но в восточно-европейских клавиатурах есть буквы, которые не работают).
Более того, Вы не обнаружите Хорватской или Македонской клавиатур в выводе комманды "kcmshell Personaization/kcmlayout" из KDE 2.0. Зато там есть Чехословацкая клавиатура, хотя самой страны Чехословакии больше нет, а пользователям трудно понять, как указать в настройках чешский или словацкий языки по отдельности.
Некоторые оконные менеджеры заменяют установки .Xmodmap своими. Когда установки .Xmodmap не срабатывают, правильным будет заставить систему перечитать их из Вашего личного каталога. Запустите в X-терминале команду:
xmodmap ~/.Xmodmap
После установки словацкой клавиатуры в KDE, указав в файле .Xmodmap стандартные определения кодов ISO8859-2, я так и не смог набирать словацкие или чешские тексты. Но про то, как решить эту проблему я все объяснил в HOWTO, опубликованном в Linux Gazette ранее. В последних версиях XFree86 больше нет нужды прибегать к этому эксперементальному способу.
С чего же начинать? С обхода владений!
Итак, вы - довольный и счастливый обладатель рабочего места.
С чего же начинать рабочую деятельность? Начинайте с детального анализа ваших владений.
С какими правами файл "рождается"
На самом деле вопрос поставлен не совсем корректно.
Дело в том, что новый файл появляется в результате работы какой-либо программы. В то же время, в Юниксе существуют системные функции, которые позволяют менять владельца файла, группу и права доступа. Естественно, программа порождающая файл может вызывать эти функции и таким образом создать файл с любыми атрибутами.
Поэтому, правильный ответ - "это зависит от программы, которая этот файл создает".
Однако, большинство программ этими функциями не пользуются, поэтому можно сказать, что "в большинстве случаев" атрибуты создаваемых файлов все таки подчиняются нескольким простым правилам.
Итак. Какие же у только что созданного файла будут владелец, группа и права доступа?
Владелец
Группа
Права доступа