В определенных кругах сисадмин не
Курс молодого сисадмина III.
Первые шаги
В определенных кругах сисадмин не будет считаться полноценным специалистом, пока не преодолеет один из первых барьеров профессиональной карьеры. Этот барьер его первая локальная сеть. Это событие во многом схоже с таким важным событием на личном фронте, как первый сексуальный опыт. Спросите любого молодого человека старше четырнадцати лет естественно, он вам скажет, что уже давно сбился со счета :) Точно такой же ответ получит человек, задавший начинающему сисадмину вопрос об опыте прокладки локальной сети: LКонечно, а как же, по 3-4 сети в день прокладываю!¦
Это понятно: молодым и амбициозным начинающим специалистам очень трудно признать себя некомпетентными в какой-либо области. И это было бы смешно, если бы не было так грустно: когда приходит время продемонстрировать свои знания, навыки и умения на деле, сисадмин приходит в замешательство. Да и откуда же взяться опыту, если наш молодой специалист у себя дома не заходил дальше настроек соединения модема, а институтские программы предусмаьтривают скорее философию построения сети, чем саму сеть? И отчаявшийся сисадмин бежит на форум очередного ИТ-сайта: LНарод, кто знает, к каким контактам, из восьми имеющихся в сетевой карте, припаивается коаксиальный кабель?¦
LИ поделом ему! Нечего было сказки рассказывать,¦ заметят некоторые. Но это не всегда верно. Ведь сисадмин вовсе не обязательно солгал на собеседовании возможно, его об этом просто не спросили, так как приеме на работу такая задача не стояла. А спустя некоторое время руководство решило объединить в сеть несколько компьютеров, и тут началось...
Как показывает опыт, сколько ни читай литературы, сколько ни обшаривай в поисках ответов сайты и другие информационные источники пока сам не попробуешь, не научишься. Конечно, тем, у кого была возможность пройти жутко дорогие специализированные курсы по сетям, будет легче. Само собой, освоить сетевое дело будет проще и начинающим специалистам, работающим в паре с опытным сетевым администратором. Но ведь очень многие (в том числе и ваш покорный слуга) осваивали эту премудрость самостоятельно, при освоении сетевого мастерства рассчитывать было не на кого. Тем, кому приходится учиться на собственных, а не на чужих ошибках, я и посвящаю свою статью.
Естественно, я далеко не первый (да и не последний), кто старается донести до начинающих спецов Lзаписки бывалого¦. Информации по данной теме сегодня очень много. Но раз ее постоянно обновляют, раз появляются все новые и новые материалы, статьи значит, еще есть над чем работать. Тем более что некоторые авторы используют термины и определения, от которых лица начинающих сисадминов вытягиваются от удивления. Попробуем внести и свою лепту. Дальнейшее изложение материала предполагает, что читатель хотя бы поверхностно-теоретически знаком с сетями, поскольку на то, чтобы объяснять с нуля, что такое локальная сеть и чем витая пара отличается от коаксиального кабеля, не хватит журнала.
С чего начать?
Начинается все с постановки задачи. Типичная ситуация: в офисе имеется несколько компьютеров. Информация на их жестких дисках часто бывает нужна разным пользователям, да и печатать нужно всем, а принтер у нас только один. Естественно, работягам скоро надоедает бегать с дискетами. И вот руководство принимает решение: организовать локальную сеть.
Вам как исполнителю необходимо понимать, что начальственное Lшоб усе работало!¦ на самом деле означает следующее. Во-первых, каждый пользователь офисного ПК должен иметь возможность воспользоваться данными с ПК другого пользователя без помощи дискет. Во-вторых, документы на печать должны отправляться на принтер с любого из шести-семи офисных компьютеров опять же, не прибегая к помощи Lфлоппи-нета¦. Что ж, задача ясна приступаем к выполнению.
Этап 1. Теоретический
Определимся с параметрами будущей сети. На чем она будет основываться? Если рабочих станций немного, то для рутинной офисной работы вполне достаточно и 10 Мбит. Это либо коаксиальный вариант 10Base-2, либо витая пара 10Base-T. В пользу первого говорит дешевизна, простота, отсутствие дополнительного коммутационного оборудования. В пользу второго большая надежность и более высокая производительность за счет режима full duplex.
На этом же этапе начертите план будущей сети. Возьмите план помещения и (желательно, в масштабе) изобразите будущую кабельную разводку с прорисовкой рабочих мест. Готовый план необходимо утвердить у руководства, иначе можно нарваться на неприятности.
Этап 2. Cмета расходов
Итак, тип сети выбран: витая пара. Исходя из утвержденного плана, приступаем к определению количества необходимых комплектующих и расходных материалов. В первую очередь коммутационное оборудование. Концентратор или коммутатор? Хаб (концентратор) дешевле и проще. Использование свича (коммутатора) хоть и увеличит расходы, но в данном случае (одноранговая сеть) повысит производительность. Тип и производителя устройства лучше выбирать вместе с руководством.
То же самое и с сетевыми адаптерами. В зависимости от функциональности и производителя, стоимость Lсетевухи¦ варьируется от 10 до 40 у.е. Вооружитесь рулеткой и подсчитайте, сколько кабеля потребуется для всей сети. Добавьте еще треть или четверть от полученной длины, даже если начальство будет протестовать. Наверняка не одному мне известна вредная привычка руководящего состава в целях экономии покупать все Lвпритык¦. Сказанное выше касается и разъемов RJ-45. На нашем плане 6 компьютеров, на каждый нужно по 2 разъема. Итого 12 штук, каковую цифру и утвердит начальство. Не соглашайтесь. Надо брать, как минимум, с коэффициентом 1.5, на случай брака (а он на первых порах будет обязательно!).
Если ни кадрового, ни географического расширения фирмы не предвидится, то рядом с компьютерами стоит разместить розетки, а сетевые кабели поместить в специальные пластиковые коробы. Однако, несмотря на удобство и полезность такой конструкции, она потребует дополнительных расходов, а руководство, скорее всего, пожелает сэкономить на этом. Что ж, расстраиваться не стоит: если после долгих убеждений оно все же не раскошелится на короба, обойдемся без них. Зато появится дополнительная причина-отговорка на случай, если сеть будет работать неважно. Да, и еще: обязательно предусмотрите в смете монтажные работы, по крайней мере сверление отверстий в стенах для прокладки кабеля.
Все компоненты и составляющие суммируем и несем на подпись начальству. Когда все оговорено, решено и проплачено, приступаем к следующему, самому интересному, этапу к собственно инсталляции и настройке сети.
Этап 3. Практический
И вот началось... Все комплектующие завезены, распаковываем и устанавливаем.
С установкой сетевых адаптеров проблем возникнуть не должно эти платы вставляются в свободный слот PCI (надеюсь, таковой имеется на каждом компьютере :)). После установки драйверов в настройках системы, в закладке Устройства должен появиться новый девайс. Эту операцию необходимо проделать на всех ПК. После настройки последнего из них компьютеры готовы к объединению в сеть и могут гордо называться Lсетевыми станциями¦. Осталось их соединить.
Как известно, существует две спецификации обжима витой пары: 568А и 568В. Какой из них пользоваться, не имеет значения. Главное, чтобы оба конца были обжаты одинаково. LНеобстрелянные¦ сисадмины, пользуясь иллюстрированными источниками, по неопытности часто обжимают один конец по одной спецификации, а второй по другой. Ну, да с кем не бывает, первый блин всегда комом :) И все же следует заметить, что более популярна спецификация 568В. Вот по ней и будем обжимать наши кабели.
Когда под рукой есть дорогой чемодан с инструментами для инсталляции сети, это хорошо. Но неправдоподобно, а потому не актуально. Рассмотрим более типичный случай: есть что соединять, есть чем соединять, а вот инструмента нет. То есть вы наверняка включили обжимной инструмент в смету расходов, но начальство от его приобретения, скорее всего, отказалось, так как нормальная обжимка стоит 20-100 у.е. LЯ вот у Коляна тебе одолжу¦, пообещал начальник. Ладно, у Коляна, так у Коляна. Но вот наступил час LХ¦, а Коляна то ли нет в городе, то ли он обжимку кому-то уже отдал, то ли вообще давать ее не хочет. А начальника отсутствие обжимки, кстати, интересует мало где хочешь, там и достань, не мои проблемы. Что же делать?
Голь на выдумки хитра. Информации на тему Lкак обжать витую пару без обжимки?¦ в интернете масса. Все они сводятся примерно к следующему: Lконтакты утопить вниз тонкой отверткой...¦ Всего-то делов! Но тот, кто уже побывал в подобной ситуации, поймет меня и согласится: ни один из советчиков-теоретиков никогда не пробовал осуществить свой совет на практике. Признаюсь, и я в свое время наступил на эти грабли...
Опишу подробную последовательность действий, позволяющих обжать кабель UTP без обжимного инструмента. Начинается все по стандартной схеме: зачищаем кабель от внешней изоляции примерно на 2-3 см, сортируем внутренние проводки и т.д. В инете уйма рекомендаций по стандартной процедуре обжимки кабеля типа Lвитая пара¦, поэтому не буду повторяться. От себя лишь дам ссылку по моему мнению, лучшую в своем классе: статья Евгения Кулигина LСетевой кабель своими руками¦.
Когда внешняя оплетка очищена, начинается нестандартный сценарий. Кроме внешней оплетки, на миллиметр снимается также и изоляция с внутренних проводов. Как и в стандартной схеме, кабель вставляется в коннектор. Если уверены на все сто, что кабель установлен правильно, фиксируем его. Для этого толстой широкой отверткой утапливаем фиксатор вниз. Если этого не сделать, кабель в самый неподходящий момент может выскочить из разъема.
Кабель зафиксирован, продолжаем. Не спешите хвататься за тонкую отвертку вы либо сломаете разъем, либо повредите стол. Посмотрите внимательно в профиль на разъем RJ-45: контакты слегка выступают над пластмассовым корпусом. Утопить их до уровня кромки корпуса нам помогут плоскогубцы. Вот дошла очередь и до тонкой отвертки. Утопите каждый контакт еще приблизительно на полмиллиметра. Вот и все, обжим состоялся!
А теперь проверка. Если начальство не согласилось на покупку обжимного инструмента, то о покупке сетевого тестера и говорить нечего. Не беда, обойдемся без него. Для этого нам понадобится обычный самый дешевый мультиметр. На худой конец содойдет и последовательно соединенные батарейка с лампочкой.
Сначала протестируем наличие соединения в контактах. Берем в руки оба конца кабеля и замыкаем через мультиметр (или хитрое лампочно-батареечное приспособление) поочередно каждую пару контактов с обоих концов. Если замыкания нет, попробуйте утопить контакты ниже. Если все провода прозваниваются, проверяем иначе. Достаточно одного коннектора: проверяем на отсутствие замыкания контактов между собой. Если кабель прошел проверку он готов к употреблению.
Готовые кабели подсоединяем одним концом к сетевому адаптеру, другим к любому порту хаба. Если на хабе присутствует порт uplink (расположенный, как правило, первым), подключить его обычным кабелем не получится. В более дешевых моделях хабов в качестве порта uplink может выступать обычный первый порт, с той лишь разницей, что на хабе будет присутствовать соответствующий переключатель, переводящий его в режим uplink.
Если кабель обжат правильно, то после его подключения и включения питания на сетевом адаптере и на хабе напротив соответствующего разъема засветится сигнальный светодиод. Если светодиод не загорелся, попробуйте вставить коннектор в другой порт хаба. Если не помогло, проверьте соединение другим, заведомо исправным кабелем. Можно также проверить исходный кабель на другой, заведомо рабочей паре Lсетевой адаптер порт¦. Если все же неисправен исходный кабель, переобожмите его.
Все, оборудование для сети готово.
Этап 4. Как весь этот ужас заставить работать?
Остался последний кусок работы настройка локальной сети. По этому поводу информации в интернете тоже предостаточно, поэтому раскажу о нем кратко.
Заходим в свойства сетевого окружения. В свойствах локальной сети выбираем протокол TCP-IP.
Прописываем статически IP-адреса: по последнему числу, добавляя единицу для каждого следующего компьютера например, 192.168.0.1 192.168.0.6; 10.1.1.1 10.1.1.6 и т. п. Прописываем маску подсети 255.255.255.0. После того, как адреса во всех станциях прописаны и после перезагрузки в окне Мое сетевое окружение должны появиться все сетевые компьютеры.
Если вы пользуетесь Windows 9x, в службе доступа к файлам и принтерам не забудьте проставить флажки Файлы этого компьютера можно сделать общими и Принтеры этого компьютера можно сделать общими.
Осталось Lрасшарить¦ диски и принтеры (Мой компьютер -> нужный девайс -> доступ -> открыть общий доступ). То же проделать и с принтером. Осталось настроить сетевой принтер на каждом компьютере. Все!
Заключение
Конечно, в одной статье вряд ли можно предусмотреть все тонкости и подводные камни, подстерегающие молодого сисадмина при освоении профессии сетеплета. Перешагнуть ступеньку от теории к практике и при этом не оступиться задача не из легких. Надеюсь, мой опыт поможет кому-то легче преодолеть этот барьер и избежать хотя бы нескольких шишек.
Евгений БОБРУЙКО,
Самый простой способ - использовать программу для автоматической настройки "иксов"
В XFree86 такая программа называется XF86Setup. Она использует третий метод задания конфигурации XKB. При этом "по умолчанию" используются "правила" (XkbRules) - xfree86. Вам нужно будет только выбрать "модель" (XkbModel), "схему" (XkbLayout) и "способ переключения групп" (переключатель "РУС/ЛАТ").
Кроме того, при желании вы можете изменить "положение клавиши Ctrl". Естественно, в конфигурации это будет выглядеть как соответствующие строчки XkbOptions.
Итак. Запустите программу XF86Setup, выберите раздел Keyboard. В этом разделе выберите из меню Model (тип клавиатуры) и Layout
(язык). Не забудьте отметить в отдельных списках (в правой части) подходящий "переключатель групп" и, если хотите - "расположение Ctrl".
При выходе из программы она запишет соответствующие строчки в файл конфигурации XFree в секции Keyboard.
Но, если вы захотите вписать эти строчки самостоятельно, могу дать еще несколько советов.
Прежде всего, надо сказать, что "ключевыми словами" в этих настройках будут
xfree86 - название "архитектуры" X-Window; pc101 (pc104, pc105 и т.п.) - тип клавиатуры (количество кнопок); ru - название "раскладки клавиатуры" с русским алфавитом.
(Если у вас другая "архитектура"/клавиатура/алфавит, то подберите названия самостоятельно.)
Итак...
Самый простой способ удалить юзера (программы rmuser и pw)
Большую часть работы по удалению юзера (и всяческих упоминаний о нем) выполняет программа
rmuser
Во всяком случае, кроме удаления учетной карточки, она удаляет
его домашнюю директорию; его "почтовый ящик" в /var/mail; упоминания о юзере в /etc/group; персональную crontab юзера; "пакетные" задания юзера в /var/at/jobs.
Как я уже сказал, в большинстве случаев этого вполне достаточно.
Те же действия выполняет "универсальная" утилита pw. Для этого ее нужно запустить в виде
pw userdel -r
(без ключа -r она только удалит учетную карточку из базы)
Иван Паскаль pascal@tsu.ru
/Sbin : Основные системные утилиты
В Linux-системах следующие дополнительные файлы размещаются в /sbin.
Команды для управления файловой системой ext2fs (Second extended filesystem) (optional):
{ badblocks, dumpe2fs, e2fsck, mke2fs, mklost+found, tune2fs }
Программа установки загрузчика системы (optional):
{ lilo }
Screen saver
Надеюсь, все знают - что это такое. Ну, эта та программа, которая рисует какие-нибудь картинки (напрмер - "звездное небо") на экране, если дисплей долго "простаивает", то есть достаточно долгое время ничего на выводится на экран и не вводится с клавиатуры.
Собственно, эта программа не является частью syscons.
Каждый такая программа (а их в FreeBSD предлагается несколько на выбор) представляет собой "загружаемый модуль ядра" (loadabe kernel module) и может быть загружена во время работы системы с помощью стандартной утилиты для загрузки всех подобных модулей - modload.
При загрузке screen saver сам сообщает syscons - как его запустить.
Естественно, вы можете регулировать "время простоя", после истечении которого syscons должен запустить screen saver.
Так же как и другие настройки syscons, загрузка screen saver'а обычно выполняется при старте системы. Параметры - тип saver'а и "время простоя" указываются в /etc/rc.conf. Только хочу еще раз обратить внимание на то, что "время простоя" (как и другие параметры syscons) устанавливается с помощью утилиты vidcontrol, а вот "тип saver'а" выбирается просто загрузкой соответствующего модуля командой modload.
Кстати, если вас интересует полный список saver'ов, которые вы можете использовать, не доверяйте тому перечню, который дан в комментариях в файле rc.conf, он может быть неполным. Просто загляните в директорию /lkm. Файлы, которые имеют в названии слово "saver" и есть то, что вас интересует.
Иван Паскаль pascal@tsu.ru
SCSI
Конфигурирование SCSI-устройств: scsiinfo (scsiinfo, scsiformat, scsi-config).
Именование дисков: /dev/sdyN
Если драйвер конкретного SCSI-контроллера встроен в ядро (не модуль), то параметры можно передавать через /etc/lilo.conf. Например, чтобы отключить работу с очередями для устройств с идентификаторами 1 и 2, подключенных к контроллеру ncr53c8xx, надо вставить строку:
append = "ncr53c8xx=tags:8/t1t2q1"
То же самое достигается после загрузки командой (если, конечно, удастся загрузиться ;):
echo "settags 2 1" > /proc/scsi/ncr53c8xx/0
Если драйвер для SCSI-контроллера скомпилирован как модуль, то аналогичный эффект достигается включением в /etc/conf.modules строки:
alias scsi_hostadapter ncr53c8xx
options ncr53c8xx ncr53c8xx=tags:8/t1t2q1
и не забыть сделать mkinitrd, если он необходим при загрузке.
"Сделал работу и ухожу"
Как уже было отмечено, если некоторое задание не было выполнено демоном crond в указанное время (например, компьютер был выключен), то процесс crond не выполняет такую команду позже, поскольку информация о невыполнении задания ему не поступает. А для некоторых системных заданий такое явление недопустимо.
Эту проблему позволяет решить другой системный демон, имя которого anacron. В отличие от cron, он работает по следующему принципу. При запуске (а запускается он во время старта системы из инициализационных скриптов) он просматривает свой конфигурационный файл (обычно /etc/anacrontab), в котором для каждого задания указывается периодичность (в сутках), с которой должно повторяться выполнение этого задания. Далее anacron проверяет, выполнялось ли данное задание в течение последних n дней. Если нет, anacron запускает на выполнение команду, указанную в строке задания. При этом выполнение команды может осуществляться с некоторой задержкой, величина которой (в минутах) должна быть указана в строке задания. После выполнения задания anacron записывает дату выполнения в специальный файл, содержащий записи о времени последнего выполнения данного задания, чтобы знать, когда надо выполнять это задание снова. Эти файлы сохраняются в каталоге /var/spool/anacron. В файл записывается только дата, часы и минуты не запоминаются.
После выполнения каждого задания anacron посылает сообщение о его выполнении системному демону протоколирования syslogd, а после выполнения всех заданий из конфигурационного файла заканчивает работу.
Конфигурационный файл /etc/anacrontab может содержать строки трех типов: строки описания заданий, строки задания переменных окружения и строки комментариев. Строка описания заданий имеет следующий формат:
период задержка идентификатор_задания команда
Как уже говорилось, период задается в днях, а задержка - в минутах. Идентификатор задания может содержать любые символы, кроме пробелов и слэшей. Он используется для идентификации задания при формировании сообщений демону протоколирования и при запоминании времени выполнения задания. В качестве команды может использоваться любая команда оболочки.
Строки задания переменных имеют стандартный формат:
ИМЯ_ПЕРЕМЕННОЙ = ЗНАЧЕНИЕ
В качестве строк комментария может выступать пустая строка, строка состоящая только из пробелов или строка, содержащая произвольную последовательность символов, начинающуюся символом '#' (перед которым может стоять любое количество пробелов).
Приведу в качестве примера файл /etc/anacrontab из стандартной установки дистрибутива Red Hat Linux:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These entries are useful for a Red Hat Linux system. 1 5 cron.daily run-parts /etc/cron.daily 7 10 cron.weekly run-parts /etc/cron.weekly 30 15 cron.monthly run-parts /etc/cron.monthly
Как видите, в Red Hat утилита anacron "подстраховывает" демон cron, запуская периодические задания cron-а, если последний почему-либо их не запускал. Благодаря этому, в частности, скрипт logrotate регулярно (точнее, при каждом запуске компьютера) выполняется, несмотря на то, что демоном crond он не запускается из-за выключения компьютера на ночь. Среди регулярно запускаемых cron-ом скриптов (в каталогах /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly) вы найдете скрипт 0anacron, который заботится о том, чтобы обновить записи о времени последнего выполнения тех заданий, которые поручены обеим демонам (чтобы исключить их повторное выполнение anacron-ом).
При желании можно, очевидно, сделать так, чтобы cron, в свою очередь, "подстраховывал" anacron, периодически запуская его (хотя проще просто поручить периодические задания cron-у).
Демон anacron запускается при старте системы и, выполнив предписанные ему задания, завершает работу. Наверное поэтому нет никаких утилит, специально предназначенных для ввода новых заданий демону anacron. Такие задания может давать только суперпользователь путем прямого редактирования файла /etc/anacrontab. По-видимому, основное назначение этого демона - выполнять какие-то работы по обслуживанию системы после периодов долгого простоя.
Семь вещей, которые нужно знать о VMWare и VirtualPC
Мощность процессоров растет, память дешевеет… С геймерами все более или менее ясно: для них пришло время Doom III и других гига-шутеров. А какую выгоду из такой ситуации может получить системный администратор? Одна из открывающихся возможностей— запуск несколько операционных систем одновременно
Типичным вопросом, который задают тысячи (а не задают, но мучаются им, миллионы) пользователей, программистов и администраторов, звучит примерно так: «Я не против попробовать Linux (FreeBSD, Plan9, Solaris, QNX), хотел бы поставить его на свой компьютер, испытать в работе. Но для этого нужно как-то разбить свой жесткий диск, установить менеджер загрузки, перегружать все время компьютер… А как быть с сетью? — у меня дома нет сети, как мне освоить все сетевые возможности?» — ну и так далее.
Одно из решений — установить Cygwin и другие интересующие порты, о чем я напишу когда-нибудь. Ну а сегодня речь совсем о другом, о настоящих произведениях программистского ремесла — виртуальных машинах VMWare и VirtualPC.
-> (September )
Removed instructions on how to build a system, placing them in a separate document. Adjusted a few links accordingly.
Changed homepage from learning@TasLUG
to my own webspace.
Completely failed to incorporate a lot of good material contributed by various people. Maybe next time :(
Сервера и клиенты Internet
http и ftp кэш - squid Apache PHP MySQL FTP сервер ntp (xntpd) INN (news сервер для протокола NNTP) nntpcache (news-сервер для маленьких) ftp mirror syslog SSH NSCD (кеш DNS)
Сетевое протоколирование
Сейчас разберемся как обеспечить протоколирование в сети. Это означает перенаправление сообщений на демон syslogd, запущенный на другой машине, где они будут записаны на диск.
Для передачи сообщений используется протокол UDP. Он менее надежный, чем TCP, но отправление пакетов происходит несколько быстрее. Убедитесь, что в вашем файле /etc/service раскомментирована строка syslog 514/udp
Затем нужно внести некоторые коррективы в наш файл конфигурации. Как и прежде, определите объекты протоколирования, а вместо файлов протоколов используйте параметр @hostname, где hostname – это имя компьютера, на который будут перенаправлены сообщения. Например, для перенаправления всех сообщений об ошибках на узел сети hostname можно использовать такую запись: *.err @hostname
Для перенаправления всех сообщений используется запись: *.* @hostname
Имя узла желательно указать в файле /etc/hosts, так как демон syslogd может быть запущен после сервера доменных имен или сервер DNS окажется недоступным.
Вы можете организовать центральный сервер протоколирования для всей вашей локальной сети. Для того, чтобы указать какие хосты вы хотите протоколировать, используйте опцию -l список_хостов. В списке указываются простые имена машин, то есть без указания имени домена. Имена машин разделяются двоеточием (:). Возможно, вы захотите использовать опцию -s для указания дополнительного сокета для прослушивания. Для перенаправления сообщений используйте опцию -r на машине-клиенте для перенаправления сообщений на сервер (см. таблицу 1).
Сетевые приложения
mozilla &
(в X-терминале) Запустить web-браузер Mozilla. Текущая версия - Mozilla 1.0.1 (Октябрь 2002), и она очень хороша. Mozilla - это современная замена Netscape (netscape был в старых дистрибутивах). Неплохие альтернативы - это konqueror и galeon (наберите konqueror& или galeon& в вашем X-терминале).
mozilla -display host:0.0 &
(в X-терминале) Запустить Mozilla на текущей машине, перенаправив вывод на машину под названием "host", дисплей 0, экран 0. Ваша машина должна иметь соответствующее разрешение на "host" (обычно выдается при помощи команды "xhost имя_вашей_машины" в x-терминале на машине "host". Другие программы X-windows могут быть выполнены удаленно тем же образом.
lynx file.html
Просмотр файла html или просмотр сети в текстовом режиме. Конечно, внешний вид и удобство использования lynx несравнимо хуже, чем у рассмотренных ранее браузеров, но он легок, надежен и не нуждается в конфигурировании, пока ваша сеть работоспособна.
konqueror &
(в X-терминале) Менеджер файлов и браузер. Хорош, и по многим параметрам - лучше, чем mozilla. Поставляется с KDE.
pine
Хорошая консольная программа чтения почты. Другой хорошей и стандартной программой является elm. Netscape Mail читает почту из почтового ящика, расположенного в Интернете. pine позволяет вам читать "локальную" почту, например, письмо от сына или от процесса "cron" посланные с одного из компьютеров вашей домашней сети. Команда mail также может быть использована для чтения/составления почты, но это было бы неудобно -- ее следует использовать в скриптах, для автоматизации некоторых процессов.
mutt
Действительно базовая, но весьма шустрая и удобная программа чтения почты.
mail
Базовая программа операционной системы для работы с электронной почтой. Предыдущие команды гораздо более пригодны для чтения почты. mail хорош, если вы хотите автоматизировать работу с почтой при помощи командных файлов.
kmail &
(в X-терминале) Симпатичная почтовая программа с графической оболочкой. Я использую kmail, он гораздо лучше, чем netscape mail. У меня может быть много учетных записей и доставка почты как с smtp сервера (локально) и с pop3 серверов (через интернет-провайдера) в один почтовый ящик. Просто и элегантно. Поддерживает цифровые подписи.
licq &
(в X терминале) Клиент icq. Другой хороший вариант - kxicq. В старых дистрибутивах клиенты icq отсутствуют, и может потребоваться скачать его и установить самостоятельно.
knode &
(в X-терминале) Запустить программу чтения групп новостей (usenet reader). Гораздо лучше, чем встроенный в netscape.
talk username1
Поговорить с пользователем, зарегистрированным в настояшее время на локальной машине (или используйте "talk username1@machinename" для разговора с пользователем на другой машине). Чтобы принять приглашение на разговор, наберите команду "talk username2". Если кто-то слишком навязчиво пытается с вами поговорить, мешая вам работать, наберите "mesg n" чтобы запретить прием сообщений. Вы можете использовать команды "who" или "rwho", чтобы получить список пользователей, работающих в настоящий момент в системе. talk - это одна из старомодных "стандартных" программ UNIX, но она ничуть не утратила своей актуальности.
telnet server
Соединиться с другой машиной по протоколу TELNET. Используйте имя или IP-адрес другой машины. У вас спросят имя пользователя(login) и пароль(password) -- вы должны быть зарегистрированы на этой машине. Telnet подсоединяет вас к удаленной машине и позволяет вам работать с ней так, как если бы вы сидели за ее клавиатурой (почти). Telnet не слишком безопасен -- все что вы печатаете идет в сеть в прямом виде (без шифрования), даже ваш пароль! Компетентный системный администратор на одной из машин, "стоящих на пути", сможет прочитать все, что вы напечатали. Используйте ssh (требует настройки) - более мощный аналог telnet с зашифрованной передачей данных.
rlogin server
(=remote login(удаленный вход)) Вход на другую машину. Используются имя пользователя и пароль текущей сессии; Если не удастся, то у вас спросят пароль.
rsh server
(=remote shell(удаленная оболочка)) Другой способ присоединения к текущей машине. Используются имя пользователя/пароль, используемые в текущей сессии; Если не удастся, то у вас спросят пароль.
ssh servername -l username
(=secure shell(безопасная оболочка)) Присоединение к серверу, используя безопасное соединение. ssh безопасен, поскольку все данные, идущие через сеть, шифруются парой RSA "открытый-закрытый" ключ. Если вы не определите имя пользователя, будет использоваться текущее имя. Сервис ssh должен быть запущен и на клиенте и сервере. Обычно он доступен в новых дистрибутивах Linux (например, RH7.0). Перед использованием ssh, необходимо сделать некоторые установки. Пользователь создает свою пару ключей RSA (для шифрования), используя команду ssh-keygen. Она сохраняет закрытый ключ в директории $HOME/.ssh/identity и публичный ключ $HOME/.ssh/identity.pub в директории пользователя. Для разрешения автоматического входа, пользователь должен скопировать identity.pub из директории $HOME/.ssh/authorized_keys в свою домашнюю директорию на удаленной машине, и после этого пользователь может входить без ввода пароля. Более удобным является использование RSA-аутентификации при использовании агента аутентификации. Смотрите man 1 ssh-agent для дополнительной информации. Если автоматическая аутентентификация не удастся, ssh запросит пароль пользователя. Пароль будет передан на удаленный компьютер для проверки, однако, поскольку весь обмен данными зашифрован, пароль не может быть подсмотрен кем-либо в сети.
From: Benjamin Smith <bens@benjamindsmith.com> (сокращено):
В последнее время я использую openssh 2.9.2p1 с безпарольным входом. Это потребовало некоторых действий, не описанных ни в одном howto: Ключи SSH2 и DSA, которые вы генерируете с помощью 'ssh-keygen -d', помещаются в ~/.ssh/id_dsa.pub. Нужно скопировать их на директорию удаленного компьютера: .ssh/authorized_keys2 и использовать их вместо "authorized_keys", указанных в howto. Это действительно работает.
ftp server
Вход по протоколу FTP на другую машину. (Есть еще ncftp, обладающая дополнительными возможностями и gftp для работы в графической оболочке .) FTP удобен для копирования файлов с удаленной машины (или на нее). Попробуйте пользователя "anonymous", если у вас нет пользовательской записи на удаленной машине. После соединения, используйте "?" для просмотра списка доступных вам команд ftp. Избранные команды ftp: ls (просмотр файлов в удаленной системе), ASCII, binary (устанавливает текстовый или двоичный режим передачи данных, важно выбрать правильно), get (Скопировать файл из удаленной системы в локальную), mget (то же, но несколько файлов за раз), put (скопировать файлы из локальной системы в удаленную), mput (то же, но несколько файлов за раз), bye (закрытие соединения). Для использования в командных файлах, вам может пригодиться ncftpput и ncftpget, например:
ncftpput -u имя_пользователя -p пароль -a удаленный_сервер.домен удаленная_директория *local.html
"ncftp" может иметь проблемы, если ваш компьютер снабжен средством безопасности firewall -- вам потребуется конфигурировать файл /home/usr_name/.ncftp/firewall. Так же в этом случае вы можете использовать "lftp", например:
lftp -e "mput -a *local.html" -u мое_имя_пользователя,мой_пароль ftp://remote.host.domain
Для создания "зеркала" директории ftp можно использовать fmirror.
wget -m --no-parent http://sunsite.dk/linux-newbie
Копировать файлы с Web-сайта. Пример содержит параметры -m (=mirror(зеркало)) для того, чтобы перенести все файлы с основного сайта этого руководства. Параметр "--no-parent" ограничивает список переносимых файлов указанной директорией и её субдиректориями.
minicom
Программа Minicom предназнасена для эмуляции терминала на последовательном порте. Выглядит и работает, как "Procomm" или "Telix". Полезна для тестирования и отладки соединения через ваш последовательный порт.
rx
Забрать файл через соединение по протоколу Zmodem, Ymodem, или Xmodem. Xmodem требует имени файла. Используйте rx --help для дополнительной информации. Интересно, кто до сих пор использует эти протоколы?
"Я использую Zmodem регулярно. У меня два компьютера с установленным (SuSE) Linux, переносной и настольный. Настольный компьютер не имеет подключения к Internet. Так что для того, чтобы перебросить файл с одного компьютера на другой, я пересылаю его по нуль-модемному кабелю, используя протоколы Minicom и Zmodem. Таким образом я могу даже подключиться с переносного компьютера под управлением Win2000 к моей linux-машине, используя Reflexion (программу эмуляции терминала для win32)" (from Berry Vos, B.Vos@getronics.com, 2001 08 28).
Setxkbmap
Еще одна утилита, которая позволяет "на ходу" поменять конфигурацию XKB.
Пожалуй, главное ее преемущество перед xkbcomp в том, что она понимает задание конфигурации в виде rules-model-layout... (xkbcomp этих слов не понимает).
С другой строны, setxkbmap может брать данные только из файлов "базы данных" настроек (причем, только на той же машине, где запущен X-сервер). То есть, если вы составите свой файл конфигурации, то прежде чем воспользоваться setxkbmap, необходимо поместить этот файл в нужное место (в соответствующую поддиректорию) "базы данных". (Кстати, setxkbmap еще и не понимает входные данные в виде xkb_keymap, хотя это просто "глюк" программы.)
Кстати, если будете с ее помощью менять русскую раскладку, не забудьте, что файл ru и все его "вариации" обычно содержать только "частичное" описание клавиатуры.
Если вы выполните команду типа
setxkbmap -symbols ru
то результат будет очень неприятным. У вас "отсохнут" все "небуквенные" клавиши, включая Esc, BackSpace, Enter (!) и т.д.
Поэтому, правильная команда должна выглядеть как
setxkbmap -symbols "en_US+ru"
Самое полезное применение этой программы - "сброс" XKB в исходное состояние после неудачных экспериментов со своими файлами конфигурации. :-)
Если запустить ее без параметров, то она прочитает ту конфигурацию, которая описана в XF86Config и загрузит ее.
Более подробно об этой утилите можно прочитать в соответствующем man'е, а краткую сводку ключей можно получить по команде
setxkbmap -?
Сфера действия стандарта
Этот документ задает спецификацию стандартной структуры каталогов файловой системы (или иерархию файловой системы), определяя требования к размещению каталогов и файлов, а также содержание некоторых системных файлов.
Стандарт создавался для использования системными интеграторами, разработчиками пакетов программного обеспечения и системными администраторами в процессе создания и поддержки FHS-совместимых файловых систем. Он должен служить в первую очередь как справочник, а не как учебник по построению структуры каталогов (not a tutorial on how to manage a conforming filesystem hierarchy).
Стандарт FHS вырос из предыдущей разработки - стандарта FSSTND на организацию файловой системы в операционной системе Linux. Он является расширением FSSTND, ориентированным в первую очередь на вопросы межсистемного взаимодействия не только между Linux-системами, но в более широкой области, включающей операционные системы типа 4.4BSD. Он учитывает все положительные качества, присущие BSD и другим системам в части поддержки различных архитектур и учета требований работы в гетерогенных сетях.
Хотя этот стандарт и является более все-охватывающим по сравнению с предыдущим вариантом в части стандартизации файловой системы, могут потребоваться его периодические обновления по мере изменения требований со стороны вновь появляющихся технологий. Возможно также, что будут найдены лучшие решения рассматриваемых в стандарте проблем, так что наши решения перестанут быть наилучшими. Поэтому периодически могут появляться как новые редакции стандарта, так и отдельные предложения по его изменению, предназначенные для предварительного обсуждения. Однако одной из наших целей является сохранение обратной совместимости последовательных выпусков стандарта.
Приветствуются любые комментарии, касающиеся содержания стандарта. Любые комментарии или предложения по его изменению могут направляться редактору FHS (Daniel Quinlan <адрес пропущен>) или в список рассылки FHS. Сообщения о типографских или грамматических ошибках должны направляться редактору FHS.
Прежде чем отправить письмо в список рассылки, необходимо связаться с редактором FHS, чтобы не обсуждать старые темы.
Иногда могут возникать вопросы о том, как следует интерпретировать отдельные положения настоящего документа. Если вам требуются какие-то пояснения, обращайтесь к редактору FHS. Поскольку стандарт представляет собой результат соглашения, к которому пришли все участники разработки, необходимо убедиться, что любая интерпретация его положений тоже представляет коллективное мнение. По этой причине может оказаться невозможным немедленно ответить на ваш запрос, если только содержание вопроса не было темой предшествующих дискуссий.
Previous: Чем мы руководствовались
Next: Благодарности
Up: Оглавление
Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan
Шаблоны
Поскольку ряд идей B Shell был использован при создании командных интерпретаторов DOS и Windows NT (Windows 9X не имеет собственного интерпретатора), многие конструкции bash могут показаться вам знакомыми. Однако это сходство зачастую обманчиво и нередко вводит в заблуждение пользователя DOS/Windows. Хорошей иллюстрацией здесь могут послужить шаблоны.
Базовые правила задания шаблонов для имен файлов в bash довольно просты: ‘*’, как и в DOS, означает любое число любых символов, а ‘?’ — любой одиночный символ. Кроме того, можно перечислить символы в квадратных скобках (разрешается вставлять между ними пробелы); а символ ‘^’ или ‘!’ в начале такого списка будет указывать, что символы не должны встречаться в данной позиции.
Если интерпретатор DOS поручает обработку шаблонов конкретным командам, то bash выполняет ее самостоятельно и передает командам не шаблоны, а готовые списки подходящих файлов. В результате команды иногда ведут себя совсем не так, как ожидает пользователь DOS.
Рис. 1. Что же здесь произошло? |
Посмотрите на рис. 1: исходя из опыта работы в DOS естественно было бы предположить, что каждый из файлов с именем вида ‘*.static’ будет скопирован в файл с таким же именем, но без расширения, а образовался файл с диким именем ‘*.’ (впрочем, это произошло только потому, что в каталоге имелся всего один файл, подходивший под шаблон; если бы их оказалось несколько, bash выдал бы сообщение об ошибке).
Как же тогда получить имена без расширений (точнее, с отсеченной частью после точки — в Linux нет расширений в понимании DOS)? Об этом вы узнаете в конце следующего раздела, посвященного переменным.
Добавить записи в файлы /etc/fstab и /etc/liloconf
Для того, чтобы новая файловая система автоматически монтировалась при загрузке системы, добавьте следующую запись в файл /etc/fstab
/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1
Если вы пересобирали ядро, скоприруйте его в каталог /boot. Можно присвоить ему другое имя, тогда вы будете иметь выбор между двумя конфигурациями, одна из которых поддерживает LVM. В этом случае в файл /etc/lilo.conf нужно добавить такие строки:
image = /boot/lvm_kernel_image label = linux-lvm root = /dev/hda1 initrd = /boot/init_image ramdisk = 8192
После изменения файла /etc/lilo.conf выполните команду
# /sbin/lilo
Изменение размеров логических томов
Логические тома позволяют легко менять свои размеры. Для этого используется команда lvextend. Пример расширения логического тома:
# lvextend -L+1G /dev/test_lvm/logvol1 lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB lvextend -- doing automatic backup of volume group "test_lvm" lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended
Аналогично, пример уменьшения размера логического тома:
# lvreduce -L-1G /dev/test_lvm/lv1 lvreduce -- -Warning: reducing active logical volume to 2GB lvreduce- -- This may destroy your data (filesystem etc.) lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y lvreduce- -- doing automatic backup of volume group "test_lvm" lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced
Конфигурация ядра
Перед началом работы с системой LVM, убедимся в наличии необходимых модулей:
ваше ядро должно содержать поддержку LVM.
Включается она таким образом: # cd /usr/src/linux # make menuconfig
в меню : Multi-device Support (RAID and LVM) -->
активировать такие опции: [*] Multiple devices driver support (RAID and LVM) <*> Logical volume manager (LVM) Support.
ПЕРВЫЙ: Компиляция и установка GRUB
Загрузите исходные коды GRUB с ftp://alpha.gnu.org/pub/gnu/grub.
Извлеките содержимое сжатого архива следующей командой "tar -xvzf имя_файла.tar.gz" В моём случая имя файла выглядело как grub-0.5.96.1.tar.gz, поэтому я ввёл: # tar -xvzf grub-0.5.96.1.tar.gz Эта команда извлекла множество файлов и директорий в директорию, названную grub-0.5.96.1
Теперь сделайте следующее: [root@heaven ~/grub-0.5.96.1 ]# ./configure
Если вы хотите сконфигурировать GRUB, чтобы включить поддержку конкретной файловой системы и поддержку сетевых карт, или убрать поддержку сетевых карт, если вы не нуждаетесь в ней, запустите: [root@heaven ~/grub-0.5.96.1 ]# ./configure --help
Эта команда покажет вам все возможные опции. Теперь используйте префиксы --enable и --disable, чтобы добавить или убрать поддержку некоторых карт.
(ПРИМЕЧАНИЕ: GRUB поддерживает загрузку через сеть.)
Чтобы запустить процесс компиляции, введите: [root@heaven ~/grub-0.5.96.1 ]# make
Чтобы установить все файлы в нужные места, введите: [root@heaven ~/grub-0.5.96.1 ]# make install
Теперь вы готовы к установке GRUB.
Неплохо хранить все файлы GRUB, относящиеся к загрузке, в отдельной директории, такой так /boot/grub. Чтобы сделать это, проделайте следующие нехитрые манипуляции:
1. По умолчанию, все файлы GRUB устанавливаются в /usr/share/grub/i386-pc или /usr/local/share/grub/i386-pc, в зависимости от того, как установлены ваши переменные окружения.
2. Создайте новую директорию -- /boot/grub. Затем скопируйте следующие файлы в эту директорию. stage1 stage2 *_stage1_5
Я объясню назначение этих файлов позднее. Также скопируйте исполняемый файл GRUB ( который может находится в /usr/sbin или /usr/local/sbin) в директорию /boot/grub.
Перед установкой GRUB, вам нужно знать, как GRUB понимает ваш жесткий диск и информацию о разделах. Прежде всего, счет начинается с 0, а не с 1. В Линукс, ваш первый жесткий диск, присоединённый к primary master контроллеру, называется "hda". В GRUB, он станет "hd0". Подобно этому, ваш первый привод для гибких дисков в GRUB носит имя "fd0". Таким образом первый, второй и третий раздел первого жесткого диска (hda1, hda2 и hda3), станут "hd0,0","hd0,1" и "hd0,2" в GRUB. ПРИМЕЧАНИЕ: запятая это неотъемлемая часть номенклатуры названий разделов в GRUB.
Чтобы объединить два поля (номер диска и номер раздела) в одно при помощи запятой, используйте круглые скобки. Например: (hd0,0) (hd0,1) (hd0,2) и так далее. (hd0,0) это первый раздел первого жесткого диска. Аналогично, (hd1,5) это шестой раздел на втором жестком диске и (hd2,0) это первый раздел на третьем жестком диске.
Проверка свободного места на диске
Это можно сделать командой:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 3.1G 2.7G 398M 87% / /dev/hda2 4.0G 3.2G 806M 80% /home /dev/hda5 2.1G 1.0G 1.1G 48% /var
Создаете разделы LVM на вашем диске
При помощи fdisk, или любой другой утилиты, создайте разделы LVM. Тип разделов linux LVM -- 8e.
# fdisk /dev/hda нажмите p (для вывода всей таблицы разделов) теперь n (для создания нового раздела)
После создания раздела Linux LVM выведите всю таблицу. Она должна выглядеть примерно так:
Device Boot Start End Blocks Id System /dev/hda1 * 1 506 4064413+ 83 Linux /dev/hda2 507 523 136552+ 5 Extended /dev/hda5 507 523 136521 82 Linux swap /dev/hda6 524 778 2048256 8e Linux LVM /dev/hda7 779 1033 2048256 8e Linux LVM
Создайте физические тома
# pvcreate /dev/hda6 pvcreate -- physical volume "/dev/hda6" successfully created
# pvcreate /dev/hda7 pvcreate -- physical volume "/dev/hda7" successfully created
Приведенные команды создают дескриптор группы томов в начале каждого раздела.
Создание файловой системы
Теперь нужно создать на логическом томе файловую систему. Допусти мы выбрали для данного тома журналируемую файловую систему reiserfs:
# mkreiserfs /dev/test_lvm/logvol1
Осталось ее смонтировать командой:
# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1
Создание группы томов
Создание новой группы томов и добавление двух физических томов происходит следующим образом:
# vgcreate test_lvm /dev/hda6 /dev/hda7 vgcreate- -- INFO: using default physical extent size 4 MB vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte vgcreate- -- doing automatic backup of volume group "test_lvm" vgcreate- -- volume group "test_lvm" successfully created and activated
В результате будет создана группа test_lvm, содержащая физические тома /dev/hda6 и /dev/hda7. Можно также указать параметром команды размер экстента, если размер в 4MB, по каким-либо причинам, нас не устраивает.
Активация группы томов выполняется командой:
# vgchange -ay test_lvm
Для просмотра параметров существующих в вашей системе групп томов используйте команду "vgdisplay".
# vgdisplay --- Volume group --- VG Name test_lvm VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 1 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 VG Size 3.91 GB PE Size 4 MB Total PE 1000 Alloc PE / Size 256 / 1 GB Free PE / Size 744 / 2.91 GB VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E
Создание логических томов
Команда lvcreate используется для создания логических томов в группе.
# lvcreate -L2G -nlogvol1 test_lvm
ТРЕТИЙ: настройка GRUB
Вы этой секции мы увидим, как загружать различные операционные системы и создать файл menu.conf.
Давайте начнём с процедур загрузки, поддерживаемых GRUB. Загрузку можно производить двумя способами.
A. Обычная загрузка путём вызова ядра. B. Загрузка по цепочке или передача контроля другому менеджеру загрузки.
Процедура загрузки используя метод A:
Установите корневое устройство или укажите GRUB вашу корневую файловую систему. Укажите GRUB, где находится образ вашего ядра и передайте ядру параметры. Перезагрузитесь и проверьте его.
Для загрузки Линукс, я храню своё ядро в /boot/ под именем bzImage, а моя корневая файловая система расположена на /dev/hda5, или (hd0,4) в GRUB. Поэтому моя процедура загрузки выглядит следующим образом:
root (hd0,4) [Это устанавливает корневой раздел] kernel /boot/bzImage root=/dev/hda5 [Это устанавливает ядро] boot [Это запускает загрузку Линукс]
Процедура загрузки используя метод B (этот метод подразумевает, что у вас есть другой менеджер загрузки, например LILO или NTLDR, установленный в разделе.)
Установите корневой раздел, но не монтируйте его. Активируйте этот раздел. Установите первый сектор устройства, которому будет передано контроль в случае загрузки по цепочке. Перезагрузитесь и проверьте его.
Давайте рассмотрим другую ситуацию, с Windows, установленным на /dev/hda1 или (hd0,0). Процедура загрузки Windows будет выглядеть следующим образом:
rootnoverify (hd0,0) makeactive chainloader +1 [+1 устанавливает первый сектор текущего корневого раздела] boot [передаёт управление и покидает GRUB]
Файл menu.conf, используется для загрузки нескольких операционных систем и построения меню. Написание menu.conf не представляет из себя особой сложности. Как вы сможете убедиться в этой секции, он использует чистый английский язык ;).
Все пункты меню начинаются с "title TITLENAME" (название ИМЯ) без запятых. Вы можете заменить TITLENAME на то что вам хочется.
Чтобы сделать меню для загрузки Линукс:
Установите название (title). Установите корневой раздел. Установите ядро с правильными параметрами. Команда загрузки (boot).
Чтобы создать работающее меню: title Debian GNU/Linux 2.2 kernel 2.4.1 root (hd0,4) kernel /boot/bzImage.2.4.1 boot #----
(Хэш (#) в начале строки, означает комментарий.)
Чтобы сделать меню для Windows или DOS: title Windoze rootnoverify (hd0,0) makeactive chainloader +1 boot #----
Что если вы хотите иметь две установленных версии Windows. Например, одну для себя и другую для вашей семьи, но вторая версия не хочет устанавливаться, сообщив вам, что Windows уже установлен ?
Существует простой способ установки обоих версий, путем сокрытия одного из разделов во время загрузки и использования другого. Вы даже можете защитить вашу опцию, так, что никто не сможет по ошибке загрузить ваш раздел. Ниже описано, как создать две установки Windows, на hda1 и hda2 или (hd0,0) и (hd0,1), используя команды lock,password,hide и unhide.
Для Windows "My Entry (Мой Вход)": title My Entry lock unhide (hd0,0) hide (hd0,1) rootnoverify (hd0,0) makeactive chainloader +1 boot #----
Чтобы эффективно использовать команду lock, вам нужно использовать команду password (пароль) в начале конфигурационного файла. У команды password следующий синтаксис: password secret ( secret - это пароль). В любое время вы сможете ввести пароль нажав p.
Для Windows "Family Entry (Вход для семьи)" title Family Entry unhide (hd0,1) hide (hd0,0) rootnoverify (hd0,1) makeactive chainloader +1 boot ----
Любой сможет загрузить этот пункт, так как для него не требуется пароль.
Вот другая интересная уловка с использованием команды password. Чтобы скрыть пункты в меню по умолчанию или конфигурационном файле, вы можете загрузить персональный список при помощи следующей команды: password secret
/boot/grub/secret-list.conf В этой команде, "secret" это пароль и /boot/grub/secret-list.conf это файл соответвующий паролю. Перед тем как сделать это, вам нужно указать корневой раздел или задать полный путь. Например: password secret (hd0,4)/boot/grub/secret-list.conf
Одна из важнейших команд - это команда "map", которую вы можете использовать, когда у вас есть два жестких диска и операционная система, такая как Windows, которая не хочет грузиться с второго жесткого диска. Например: вы можете подменить hd0 на hd1 и hd1 на hd0. Другими словами, вы можете виртуально поменять местами два жестких диска и загрузить выбранную операционную систему. Ниже приведены необходимые команды: grub> map (hd0) (hd1) grub> map (hd1) (hd0)
Для загрузки FreeBSD: title FreeBSD 4.0 root (hd0,4,a) kernel /boot/loader boot #----
Здесь мы вызываем загрузчик FreeBSD. Вы можете видеть, что корневой раздел (hd0,4,a), имеет три аргумента, так как FreeBSD позволяет виртуальное разбиение одного раздела. Мы называем корневой раздел "a". Если FreeBSD полностью занимает второй жесткий диск на вашей системе, это будет корневой раздел (hd0,a). Вместо того чтобы вызывать ядро, мы вызывает загрузчик FreeBSD, с которым удобнее общаться чем с ядром.
(ПРИМЕЧАНИЕ: Я рекомендую, перед тем как испытывать OpenBSD и GNU/Hurd, потренироваться в осуществлении загрузки по цепочке)
Вы завершили компиляцию, установку и конфигурирование GRUB. Но чем больше вы будете узнавать о GRUB, тем больше вы будете осознавать, какой простой и мощный способ контроля загрузки предоставляет GRUB.
Некоторые дополнительные команды GRUB:
default xx где xx это пункт для загрузки по умолчанию. timeout yy где yy это время (в секундах) после которого будет загружен пункт по умолчанию. fallback zz где zz это пункт, который будет загружен после таймаута, если первый пункт не может быть загружен. color Эта команда используется для раскрашивания меню. Синтаксис таков: color обычный текущий_выбор. Оба поля могут иметь два значения в формате цвет_переднего_плана/цвет_фона. Например: color green/black или light-gray/blue Вы также можете использовать соответвующие номера.
ПОМНИТЕ: все значения начинаются с 0, поэтому 0 это первый вход.
В моей следующей статье, я планирую протестировать GNU/Hurd, OpenBSD и возможно некий вариант сетевой загрузки. Вам придется подождать как минимум 3 месяца, или даже больше, так как я буду сдавать в это время экзамены. Ждите.
Любые комментарии и сообщения об ошибках можно направлять мне jskohli@fig.org.
Copyright ї 2001, Jaswinder Singh Kohli.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 64 of Linux Gazette, March 2001
ВТОРОЙ: Установка GRUB
Установку GRUB, можно разделить на три основных части:
Установка "stage1" в MBR. Установка адреса или местоположения, "stage2". Настройка загрузочного меню или набора опций, чтобы выбрать, какую операционную систему загружать.
Начните установку GRUB со следующей команды: [root@heaven /boot/grub ]# ./grub
Эта команда проверяет устройства, пытаясь угадать диски BIOS и выдать выходное сообщение. Это может занять много времени. end_request: I/O error, dev 02:00 (floppy), sector 0
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
ПРИМЕЧАНИЕ: Хотя это может показаться удивительным, но GRUB поддерживает минимальное редактирование строки в стиле Bash. Для первого слова TAB выдаёт все возможные варианты завершения команды. В любом другом месте TAB выдаёт все возможные варианты завершения имени устройства/файла. Возможно вы будете удивлены такой возможностью.
Затем появляется нечто вроде этого: grub>
Я подразумеваю, что вы установили ваш Линукс дистрибутив в первый расширенный раздел первого диска или /dev/hda5. Помните соглашение о наименованиях в GRUB и переименуйте приведенное выше в (hd0,4). Введите следующую команду: grub> install (hd0,4)/boot/grub/stage1 (hd0) (hd0,4)/boot/grub/stage2 p (hd0,4)/boot/grub/menu.conf Теперь давайте рассмотрим эту команду более детально:
install встроенная команда, которая приказывает GRUB установить (hd0,4)/boot/grub/stage1 на (hd0), в MBR. (hd0,4)/boot/grub/stage2 говорит GRUB, где располагается изображение stage2. p с последующими опциями: (hd0,4)/boot/grub/menu.conf Устанавливает файл конфигурации для отображения красивых меню. Позднее мы обсудим структуру конфигурационного файла.
Мы также может обобщить синтаксис этой команды:
install местонахождение_stage1 куда_установить_install местонахождения_stage2 p местонахождения файла конфигурации
Всё. Вы завершили основную установку на жесткий диск.
Установка на дискету:
Чтобы установить GRUB на дискету, вы должны знать команду 'dd' и как она работает. Для создания загрузочной дискеты с GRUB, вы должны разместить файлы stage1 и stage2 в начальных секторах дискеты.
Shell
Программа, которая запускается для юзера, когда он входит в систему. Обычно это "исполнитель комманд" (типа command.com в DOS'е), который принимает комманды с терминала и, в свою очередь, запускает программы, необходимые юзеру.
В современных Unix'ах обычно есть несколько таких "исполнителей" (sh, csh, tcsh, bash ...) из которых можно выбрать наиболее подходящий.
Но, вместо такого "исполнителя команд" здесь может быть указана любая другая программа, что часто используется для некоторых задач.
Подробнее об этом сказано в разделе "Для чего используется учетная карточка".
Shellcod
shell-coding
Источник: http://nix.h1.ru
Автор: SHuRuP
email: mailto:shurup@xakep.ru?subject=nix
www: http://nix.h1.ru/
icq: 76011665
Когда сидишь в консоле (а все мы с этим сталкиваемся), невольно хочется оптимизировать/упростить работу в ней. Как это сделать? Многие посоветуют учить С/С++, но зачем напрягаться больше, если есть способ проще?
У всех *nix-систем (современных) обязательно есть несколько командных интерпрепаторов, вот самые известные из них:
Bourne Shell aka /bin/sh - именно он и будет рассматриваться в этой статье (инициализация - .profile);
Bourne-Again Shell aka /bin/bash - идентичен Bourne Shell (.profile и .bashrc);
C Shell aka /bin/csh - интерпретатор для C-программеров (.login и .cshrc).
Написание скриптов на Bourne Shell
Выполнение скриптов на sh равносильно набиранию всех этих команд с консоли. Все программы должны начиться с:
#!/bin/sh
Комментарии начинаются с помощью символа '#'. Значения переменным задаются так:
var1=value
var1 - переменная, value - значение этой переменной. Дальше следует использовать данную переменную с символом '$' в начале ( $var1 ). Существуют также другие возможности получения переменной:
${var1}text - отделяет значение $var1 от последующего текста (text);
${var1:=var2} - если значение $var1 не определено, то ей присваивается значение $var2;
${var1:-var2} - если значение $var1 не определено, то выводится значение $var2 ($var1 остается не определенным).
Пример простого скрипта:
#!/bin/sh
#script 1
var1=text1
var2=text2
echo ${var1}klm
#выведет text1klm
echo ${var1:=$var2}
#выведет text1
echo ${var4:=$var2}
#выведет text2
echo ${var4:-$var1}
#выведет text2
Некоторые перемменые, используемые sh:
$$ - pid текущего shell'а;
$! - pid последнего процесса в фоновом режиме;
$? - код возврата последнего процесса;
$x - где x-числа: параметры, переданные скрипту ($0 - последний запущенный скрипт).
#!/bin/sh
#script 2
echo "script filename: $0"
#выведет название файла данного скрипта
echo "value1: $1"
#выведет первый параметр, заданный скрипту
echo "value2: $2"
#выведет второй параметр, заданный скрипту
Параметры задаются скрипту задаются так:
/home/shurup/script1 value1 value2 value3
value1, value2, value3 - параметры для скрипта.
В Bourne Shell также возможно создание условий:
if [ условие ]
then действия при выполнении условия
else действия при не выполнении условия
fi
Пример использования:
#!/bin/sh
#script 3
if [ $1 == $2 ]
then echo "$1 равно $2"
else echo "$1 не равно $2"
fi
Циклы в sh создаются так:
while команда1
do
действие1
done
Действие1 будет исполняться до конца выполнения команды1.
Пример использования:
#!/bin/sh
#script 4
while :
do
echo test
done
В случае запуска этого скрипта команда 'echo test' будет выполняться в бесконечном цикле.
Для считывания информации в sh используется команда 'read'. Еще один пример использования циклов со считыванием информации:
#!/bin/sh
#script 5
cat ./sh_script5.txt | grep text1 |
while read text
do
if [ $text == "text1" ]
then echo "text1 был успешно найден в файле sh_script5.txt"
else echo "text1 не был найден в файле sh_script5.txt"
fi
done
Этот скрипт надо запускать из одного каталога с файлом sh_script5.txt. Файл sh_script5.txt выглядит примерно так:
text7
text45
text1
text35
И на этом файле должно быть право чтения (chmod +r sh_script5.txt).
Для выбора из нескольких возможных случаев в sh юзается 'case'. Синтаксис такой:
case $var of
a) действие1;;
b) действие2;;
c) действие3;;
*) действие4;;
esac
Здесь $var - переменная, которая может принивать значения a,b,c, любые другие. При $var=a будет выполнено действие1, $var=b - действие2, $var=3 - действие3, а при $var равное любым другим значениям кроме a,b,c будет исполнено действие4.
Пример простой программы, в которой от значения переменной изменяется выполняемое действие:
#!/bin/sh
#script 6
echo "1)startx 2)reboot 3)shutdown 4)halt"
#приглашение выбрать число
read main
#читаем выбор
case $main in
#в зависимости от выбора выполняем действия
1) startx;;
2) reboot;;
3) shutdown now;;
4) halt;;
*) echo "error #1: не правильно выбрано число"
echo "Попробуйте снова";;
#если выбрано другое число/набраны другие символы, выводим сообщение об ошибке
esac
И на прощанье привожу пример своего небольшого скрипта, который с помощью find выполняет поиск файлов и каталогов в фоновом режиме, выводит результат в файл.
#!/bin/sh
#script ss
case $1 in
'-q') if [ $# = 4 ]
then
echo SS v0.2b\: starting search $3 in $2
echo SS v0.2b\: searching of $3 on $2 has been started >$4; echo -====- >>$4 && find $2 -name $3 -print 1>>$4 2>/dev/null && echo -===- >>$4; echo SS v0.2b\: searching has been successfully finished >>$4 && echo SS v0.2b\: searching completed; echo SS v0.2b\: to see result look at $4
exit 1
else
echo SS v0.2b\: input \"$0 --help\" for help
echo SS v0.2b\: input \"$0 --info\" for info about this script
exit 1
fi;;
'--help') echo SS v0.2b\: usage: $0 -q path target logfile
echo SS v0.2b\: path - from which path begin to search
echo SS v0.2b\: target - what are you looking for
echo SS v0.2b\: logfile - file where will be logged search result
echo SS v0.2b\: example: $0 -q /home/shurup core ./tmp
exit 1;;
'--info') echo SS v0.2b\: Search Script | version: 0.2beta
echo SS v0.2b\: This is simple script for *nix which searching for files & dirs
echo SS v0.2b\: It uses "find" in background process
echo SS v0.2b\: SS v0.2b was written by SHuRuP
echo SS v0.2b\: SS v0.2b is absolutely free and open-sourced
echo SS v0.2b\: Contacts:
echo SS v0.2b\: Email - shurup@xakep.ru
echo SS v0.2b\: WWW - http://nix.h1.ru
exit 1;;
*) echo SS v0.2b\: input \"$0 --help\" for help
echo SS v0.2b\: input \"$0 --info\" for info about this script
exit 1;;
esac
Теперь ты знаком с основами кодинга в Bourne Shell. Успехов на этом поприще!
P.S. Все скрипты можно найти здесь.
js=0
js=1
js=2
js=3
HotLOG(995,js)
Shift, ctrl и alt
В таблице раскладки клавиатуры (keyboard map) каждому скан-коду соответствует восемь значений. Как я уже сказал, какое из этих значений будет выбрано при нажатии клавиши, определяется "состоянием модификаторов".
Так вот, это "состояние" задается тремя модификаторами - shift, ctrl
и alt.
Состояние модификаторов (номер кода в таблице) syscons вычисляет по формуле:
1 (если shift) + 2 (если ctrl) + 4 (если alt)
В общем-то, если вы заглянете в какой-нибудь файл "раскладки клавиатуры", то увидите, что все колонки значений сверху подписаны - какая колонка, при какой комбинации модификаторов выбирается. Так что, высчитывать номер колонки по приведенной формуле вам не придется. Однако, эту формулу полезно знать, чтобы правильно понимать действие двух других модификаторов (CapsLock и NumLock) о которых речь пойдет ниже.
Говоря о модификаторах shift, ctrl и alt надо отметить, что ...
Строго говоря, поскольку на современных клавиатурах каждая такая клавиша присутствует в двух экземплярах (слева и справа основной клавиатуры), и значений тоже не три, а шесть - lshift, rshift, lctrl, rctrl, lalt, ralt. Буквы l и r в названиях означают левый (left) и правый (right) соответственно. Но для выбора одного из восьми состояний syscons не делает различий для левой и правой клавиши. То есть, в любом случае - нажмете ли вы клавишу, которой "прикреплено" значение lalt или клавишу со значением ralt или обе вместе, syscons будет считать, что активен модификатор alt. Все эти три (или шесть) модификаторов "не фиксирующиеся". То есть, они действуют только пока вы держите соответствующие клавиши нажатыми (впрочем, об этом и так все знают). По умолчанию, все эти шесть значений "навешены" на привычные клавиши - lshift на левую кнопку [Shift], rshift - на правую кнопку [Shift] и т.д. Однако, еще раз замечу, что речь идет о не о физических кнопках на клавиатуре, а о значениях, которые драйвер им присваивает. То есть, при желании, можно клавишу [Alt] заставить действовать как Shift, например, хотя в этом ничего полезного нет. Более полезным может оказаться одну из парных клавиш [Shift], [Ctrl] или [Alt] (например, левую) использовать по ее прямому назначению, а на правую "повесить" какую-нибудь другую функцию.
Шины
IDE (EIDE, ATA-2)
Конфигурация IDE-дисков: hdparm. Для нормальных устройств рекомендуется:
hdparm -c 1 -d 1 -m 16 # включить 32-битный режим, использование DMA, обмен по 16 секторов
Showbookpl
showbook.pl
написанный Guido Socher
Этот небольшой драгоценный камень совершенно неоценим, если вы имеет множество закладок. showbook.pl обрабатывает файл закладок Netscape и возвращает URL которые он там находит. На самом деле, даже не смотря на то, что я не использую Netscape несколько месяцев, я регулярно экспортирую мои закладки из Konqueror, просто чтобы я мог продолжать пользоваться им ! (примечание: Konqueror немного искажает синтаксис, поэтому вам нужно запустить Netscape один раз, и явно сохранить закладки, чтобы отсортировать все как надо.)
Вот пример поиска при помощи showbook.pl: [paul@oremus paul]$ showbook.pl wxwin == Misc == <A HREF="http://web.ukonline.co.uk/julian.smart/wxwin/">wxWindows</A>
Да, я использовал его для того чтобы получить URL, который был мне нужен, для wxWindows :-)
Шрифты
Мы включили в дистрибутив все известные нам свободные кириллические шрифты. Заметим, что часть известных шрифтов (из пакета PSCyr, например) имеют строгую лицензию, запрещающую их распространение на CD. Шрифты с
глифами кириллицы Вы найдете в пакетах: urw-fonts (стандартные urw-шрифты модифицировал Леонид Кантер, автор Black Cat Linux), cyrillic-Type1-fonts, vedi-Type1-fonts (декоративные шрифты проекта Vedi, с разрешения Николая
Дубины). При печати из большинства приложений используются шрифты Courier, Helvetica и Times, а то, какие из имеющихся шрифтов будут таковыми называться, определяется в файле /etc/gs/Fontmap. После установки шрифтовых
пакетов (устанавливайте только необходимые!) в /etc/gs появится несколько файлов Fontmap.*, их выбор нужно производить при помощи команды update-alternatives -config Fontmap (см. man update-altaernatives, доступен на русском
языке).
Самым правильным выбором будет Fontmap.cyrillic. Он обеспечивает печать из многих правильно написанных приложений как кириллических текстов в любой кодировке, так и текстов Latin-1. Однако, если нужно печатать из Netscape
или ряда других, "неправильных" приложений с неинтернационализированной печатью, то русский текст будет отображаться символами Latin-1. Для того, чтобы обойти эту ошибку, применяются два способа: первый - правка бинарного
файла netscape, что запрещено его лицензий и потому неприемлемо для нас; второй - использование шрифтов, в которых под именами глифов Latin-1 находятся русские буквы. Второй способ не обеспечивает печать в среде с кодировкой,
отличной от KOI8-R, а также не дает возможности печатать тексты Latin-1 с символами, отличными от ASCII-7. Если Вам все же очень нужно печатать из netscape, то выберите в качестве Fontmap файл Fontmap.KOI8-R.
Мы подготовили также один шрифт с глифами PT-154 (азиатская кириллица) на базе шрифта George Williams. Для печати текстов в этой кодировке используйте Fontmap.PT154. Надеемся, что в следующей версии дистрибутива таких
шрифтов будет больше.
Для проверки правильности подбора шрифтов, напечатайте документ файл с расширением ps из какого-либо приложения, а затем просмотрите его при помощи gv или его аналогов в KDE и Gnome. Если все правильно, пусть и не очень
красиво, то этот этап Вы прошли успешно.
О качестве печати. К сожалению, метрики шрифтов не учитываются практически всеми приложениями, но хуже всего с этим у netscape (при печати не-Latin-1). Русская и вообще не-Latin-1 печать из Mozilla в дистрибутиве
обеспечивается при помощи нашего исправления (в оригинальной Mozilla <= 0.8 она не работает вообще), которое является временной "подпоркой". Мы работаем над полным решением проблемы вместе с командой Mozilla.
Вообще-то, программа syscons при выводе каждого символа просто отправляет его код в "железку" - видео-контроллер, а тот уже отображает символ на дисплее теми шрифтами, которые у него имеются. Однако, современные видеокарты кроме "зашитых" шрифтов позволяют загружать и другие наборы символов. Это, в частности, позволяет видеокартам изображать символы кириллицы и дополнительные "экзотические" значки, отсутствующие в стандартном шрифте видеокарты.
Драйвер syscons поддерживает это свойство видеокарт, то есть предоставляет пользователю возможность загружать шрифты из файла. Точнее, роль самого syscons в этом процессе очень скромная, он просто копирует те данные, которые ему подсунет соответствующая программа, в видео-контроллер. А пользователь может использовать программу vidcontrol, которая считывает нужный файл со шрифтами и отправляет их в syscons (немного подробнее об этом в главе "Программа vidcontrol").
Готовые файлы шрифтов находятся в системе в директории /usr/share/syscons/fonts. Там же есть и файл с кратким описанием шрифтов.
Обратите внимание, что для каждого набора символов существует по крайней мере три разных файла, с разными размерами (в пикселах) символов - 8x8, 8x14, 8x16.
Дело в том, что видеокарта имеет несколько режимов отображения, отличающихся "плотностью" знаков (об этом немного ниже). Если в стандартном режиме, на экране изображается 25 строчек по 80 знаков каждая, то в других режимах на экране может быть 30, 43, 50 или даже 60 строк (естественно, это зависит от модели видеокарты). В одних режимах размер одиночного знака складывается из матрицы 8x16 точек, в других - 8x14 или 8x8. Соответственно, syscons может помнить три разных шрифта, отличающихся размером матрицы, и в нужный момент (при изменении режима отображения) загрузить в видеокарту подходящий шрифт.
В стандартном режиме (80x25) используются шрифты 8x16, но на всякий случай рекомендуется загружать все три типа шрифтов. Замечу, что обычно шрифты загружаются при старте системы, а какие именно - записано в соответствующих строчках /etc/rc.conf. Поэтому "рекомендуется загружать" означает, просто подправить нужные строчки в rc.conf, а если вы уже выполнили все необходимые действия по русификации системы, то у вас и так уже загружается "все, что нужно". (Подробности о русификации в главе
"Русификация syscons")
Заканчивая разговор о шрифтах, надо заметить, что syscons хранит только один набор из трех шрифтов для всех виртуальных терминалов, поэтому перезагрузка шрифтов действует сразу на все терминалы. Другими словами, syscons не предоставляет пользователю возможности иметь разный набор шрифтов для разных "виртуальных терминалов".
Сигналы
Демон syslogd реагирует на следующие сигналы: SYGTERM, SIGINT, SIGQUIT, SIGHUP, SIGUSR1, SIGCHLD. Реакция демона на сигналы указана в таблице 2.
Таблица 2.
Сигнал | Реакция |
SIGTERM | Завершает работу демона |
SIGINT, SIGQUIT | Завершает работу демона, если выключена отладка (debugging). Если же отладка включена, эти сигналы игнорируются |
SIGUSR1 | Включает/выключает отладку |
SIGHUP | Перезапуск демона |
Символические ссылки
Символическая ссылка - относительно новое понятие в Unix. Это особый файл с информацией о том, что требуемый файл в действительности находится в другом месте, и о том, где именно его искать. Например, файл /usr/bin/gzip представляет собой символическую ссылку, указывающую на файл /bin/gzip; благодаря ей можно использовать /bin/gzip, обращаясь к нему как к /usr/bin/gzip. Близким аналогом символических ссылок являются ярлыки Windows 9X и NT 4.0, но ярлыки интерпретируются Проводником Windows, а символические ссылки - непосредственно ядром ОС.
В отличие от обычной, или, как еще говорят во избежание путаницы, жесткой ссылки, символическая ссылка может указывать на файл из другой файловой системы (например, находящийся на другом диске). Заметим, что при создании жесткой ссылки мы получаем два равноправных объекта (при удалении файла /usr/bin/unzip файл /usr/bin/zipinfo будет работать по-прежнему), а вот символическая ссылка при удалении (или переименовании/перемещении) объекта, на который она указывает, "провисает" и становится неработоспособной.
Во второй части статьи мы рассмотрим права доступа к файлам и работу Linux с другими файловыми системами.
Окончание в следующем номере.
* В настоящее время гнезда, создаваемые с помощью соответствующих специальных файлов, так же как и именованные каналы, не позволяют связывать программы, работающие на разных машинах сети.
Символьные и блочные устройства
Файлы символьных и блочных устройств создаются с помощью программы mknod и соответствуют внешним устройствам, а также псевдоустройствам, таким как знаменитое пустое устройство /dev/null (такое, при попытке чтения из которого сразу же сообщается о достижении конца файла и при записи в которое никогда не происходит переполнения - точный аналог NUL в DOS/Windows).
Устройства нумеруются двумя целыми числами - старшим (major number) и младшим (minor number). Первое из них соответствует типу устройства (например, для устройств, подключенных к первому IDE-контроллеру, оно равно 3, для подключенных ко второму - 22 и т. д.), а второе - конкретному устройству (например, для мастер-диска, подключенного к первому IDE-контроллеру, оно равно 0, для первого раздела на этом диске - 1 и т. д.). При этом символьные и блочные устройства нумеруются независимо.
Число 30Ah в поле "положение" информации о файлах /usr/bin/unzip и /usr/bin/zipinfo на рис. 1 и 2 обозначает как раз номер устройства: 3 - это первый IDE-диск, а 0A - его десятый раздел.
Различие между файлами символьных и блочных устройств заключается в том, что к первым разрешен только последовательный доступ, а вторые допускают обращение (для чтения или записи) к произвольному месту устройства.
Многие устройства имеют дополнительные характеристики: скажем, на консоли (виртуальной) IBM PC есть три лампочки - Num Lock, Caps Lock и Scroll Lock, - а последовательный порт может передавать данные с различной скоростью. Как правило, программы в Linux работают просто с файлами, никак или почти никак не учитывая особенности того или иного конкретного устройства. Если же программа должна их учитывать, она осуществляет управление соответствующими параметрами через системный вызов ioctl, позволяющий, например, зажечь Num Lock или изменить громкость звука. В основном использование ioctl сводится к управлению конфигурацией (отсюда и название - I/O ConTroL, т. е. управление вводом-выводом).
Основной недостаток описанной схемы в том, что она плохо масштабируется: различных устройств существует великое множество, и поскольку всякое устройство, потенциально подключаемое к компьютеру, должно получить номер (а многие - несколько номеров), этих самых номеров явно не хватает. Кроме того, хотя в каталоге /dev, где традиционно хранятся файлы устройств, представлен, разумеется, далеко не весь спектр аппаратуры (только для SCSI-устройств потребовалось бы завести не одну тысячу файлов), он все-таки обычно содержит более тысячи файлов, и лишь очень малая их часть соответствует устройствам (или псевдоустройствам), реально присутствующим в системе.
Эта проблема была осознана достаточно давно, и уже предложено несколько вариантов ее решения. Однако самым распространенным остается пока стандартный подход, когда все файлы устройств создаются вручную программой mknod. Мне представляется наиболее удачным вариант с использованием специальной файловой системы devfs, монтируемой в каталог /dev, в которой специальные файлы устройств создаются и уничтожаются автоматически по мере надобности (именно так настроен компьютер, где сейчас пишутся эти строки).
Сироты командира Нортона
Автор: Алексей Федорчук, alv@newmail.ru
Опубликовано: 29.07.2002
Оригинал: http://www.softterra.ru/freeos/19132/
— Кто твоя мать, рядовой Петров?
— Коммунистическая партия Советского Союза!
— Кто твой отец?
— Вы, товарищ командир!
— Какова твоя заветная мечта?
— Сиротой бы остаться…
Из старого советского анекдота
Всенародная наша любовь к файловому менеджеру командира Нортона и многочисленным его потомкам для любых платформ известна и в комментариях не нуждается. Не миновала эта любовь и открытые Unix-подобные системы. Где роль главного наследника славного командира прочно закрепилась за Midnight Commader'ом (выступающим под псевдонимом mc), весьма точно воспроизводящим внешний облик своего родителя, но далеко превзошедшим его функционально.
Должен сознаться, что на заре моего приобщения к Linux'у обходиться без mc было весьма трудно: именно он, наряду с KDE, помог сломать психологический барьер перед командной строкой, выросший вследствие тлетворного влияния Windows.
Однако время шло, я постепенно проникался величием традиционных Unix-средств для управления файлами, далеко превосходящими по скорости и эффективности любые Commander'ы (не говоря уж об Explorer'ах). И к волшебному сочетанию символов mc обращался все реже и реже – хотя по привычке устанавливал его всегда, чтобы было. Ну и для визуализации результатов своих действий он часто оказывался не лишним.
Первое разочарование в mc постигло меня на стадии приобщения к FreeBSD. Если его версия для Linux могла носить имя сына командира Нортона с гордостью, то FreeBSD-версию иначе чем командирской сироткой язык назвать не поворачивался. Начать с того, что по непонятным причинам вызывался он там не волшебной аббревиатурой mc, а весьма неуклюжим и непривычным буквосочетанием midc. Что, конечно, решалось просто введением дополнительного псевдонима в профильном файле, например, для csh
alias mc midc
однако все равно раздражало. Но это еще полбеды. Далее обнаружилось отсутствие встроенного редактора: если соответствующая опция в mc (пардон, в midc) была включена, по нажатию на F4 вызывался не кто иной, как vi.
Конечно, и это поддавалось лечению – или переопределением переменной EDITOR, или использованием внешнего редактора. Благо последний мог имитироваться редактором le, идеологически и по интерфейсу весьма схожим с Norton Editor (и обладающим к тому же рядом полезных качеств).
Но с было трудно примириться любому старому командирскому комбатанту – так это с непотребным поведением клавишных комбинаций по умолчанию. Так, комбинация Control+Enter отнюдь не помещала файл под курсором в командную строку, а Control+O вместо отключения панелей вызывала просто немедленный (и – без предупреждения) выход из midc. И Midnight Commander под FreeBSD был мной окончательно заброшен.
Во избежание недоразумений повторяю – все сказанное относится именно к midc под FreeBSD. В Linux-своей версии mc – это мощный, полнофункциональный файловый менеджер, ничуть не уступающий FAR'у для Windows. Да и под FreeBSD, по сведениям Андрея Лаврентьева [1], умолчальные его недостатки могут быть ликвидированы путем пересборки с соответствующими настройками, однако об этом я узнал позднее.
И тут наступил психологический момент вспомнить о другом командирском отпрыске для FreeBSD – Demos Commander'е (или, сокращенно, deco). Получившего свое имя, разумеется, не от древнегреческих демократов, а от пионера российского провайдерства (автор – Serge Vakulenko). И конечно, ничего специфически FreeBSD'шного не содержащего: просто в дистрибутивах Linux он обычно не встречается, а во FreeBSD (и – OpenBSD также) входит стандартно, как в виде пакета, так и порта.
Надо заметить, что с первого взгляда deco производит еще более сиротское впечатление (рис. 1): съежившиеся на пол-экрана панели удручающе-черного цвета (на некоторых терминалах приобретающие почему-то окраску в династических цветах дома Романовых), крайне ограниченные возможности интерактивной настройки, возможности файловых манипуляций – на уровне 1-х версий Norton Commander (в частности, невозможно скопировать, переместить или удалить каталог целиком, с содержащимися в нем файлами).
Возможности просмотра и редактирования также на первый взгляд разнообразием не блещут: можно воспользоваться встроенными вьювером и редактором (с весьма ограниченными возможностями) или подключить внешние аналоги. Ну а о таких излишествах, как встроенный ftp-клиент – и говорить не приходится.
Однако если набраться некоторого терпения, начинаешь понимать всю серяжную правду, заложенную в deco. Во-первых, поведение клавишных комбинаций в нем привычно (пользователю NC) и предсказуемо. Во-вторых, возможности настройки его не столь уж бедны, как кажется на первый взгляд. Есть возможность создания пользовательского меню (вызываемого по клавише F2) – неотъемлемого атрибута «командирских» файловых менеджеров. К любым типам файлов, определяемых по маскам, можно привязать не только команды, но и сколь угодно сложные их конструкции. А самое главное – в deco обнаружился замечательный режим командной строки.
Включение этого режима (через меню или комбинацией клавиш Control+P) приводи к тому, что действия в панелях становятся невозможными, но зато открываются самые широкие возможности манипулирования непосредственно командами оболочки. После чего становится ясным, почему по умолчанию панели deco свернуты на половину экрана [2]: нижняя его часть, в сущности, представляет собой обычное терминальное окно.
Сам по себе deco предлагает на выбор одну из двух встроенных командных оболочек – /bin/sh и /bin/csh. Правда, интерактивные их возможности очень бедны: не поддерживаются ни пролистывание истории команд (хотя таковая само по себе и поддерживается), ни автодополнение, ни псевдонимы, ни прочие давно уже привычные радости. Попытки настройки оболочек также остаются безуспешными. По крайней мере, никакие мои манипуляции с профильными файлами (типа .csh или .profile) эффекта не возымели ни малейшего. Честно говоря, для меня так и осталось загадкой, откуда deco черпает сведения о переменных оболочки и окружения.
Тем не менее, работа в режиме командной строки оказывается весьма комфортной. При этом начинаешь понимать, что программа эта, в сущности, никакой не файловый менеджер; или, мягче сказать, эта ее функция – лишь дополнение к основной, а именно: визуализации действий в командной строке. То есть именно то, что восхитило меня в свое время в Konqueror'е – файловом менеджере-браузере из 2-й версии KDE. Кстати сказать, в экранной документации deco так и называется – visual shell, а отнюдь не файловый менеджер.
Конечно, хотелось бы, чтобы терминальное окно под визуализационными панелями использовалось наиболее эффективно. То есть – подключить к deco какую-либо мощную современную командную среду (типа bash, tcsh или zsh). Простого способа для этого не предусмотрено: так называемые /bin/sh и /bin/csh встраиваются в него статически при компиляции. Изменить это «в лоб» мне не удалось. Однако не думаю, что сие представляет серьезную проблему для любого, имеющего кое-какие навыки в программировании [3].
К сожалению, ожидать совершенствования deco не приходится: судя по всему, развитие программы прекратилось во второй половине 90-х годов. Однако сам по себе факт ее существования вселяет надежду: а вдруг кому придет в голову создать аналогичный визуализатор командных оболочек, но уже на современном этапе их развития?
[1] http://unix1.jinr.ru/~lavr/ [обратно к тексту]
[2] Что, впрочем, легко изменить – включив через меню или комбинацией Control+F режим Full Screen. [обратно к тексту]
[3] К слову сказать – буду признателен за любую информацию по этому вопросу. [обратно к тексту]
Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)
Системная консоль
Драйвер "системной консоли" - syscons.
Какое место занимает этот драйвер в работе FreeBSD?
Что полезного вы можете здесь прочитать?
Основные возможности syscons
Виртуальные терминалы.
Буфер экрана (history buffer).
Команды терминала syscons.
Управление драйвером syscons.
Работа с "мышью".
Дисплей
Шрифты
Дополнительные таблицы перекодировки (screenmap)
Режим отображения (колличество строк и символов на экране)
Screen saver
Клавиатура
Модификаторы.
shift, ctrl и alt
clock и nlock
alock и ashift
meta
Обычные клавиши.
"Функциональные" клавиши.
Переключатели виртуальных терминалов.
Специальные клавиши.
slock
boot
debug
susp
Compose
Несколько примеров изменения назначения клавиш.
Переключатель "альтернативной клавиатуры" (Рус/Лат).
Клавиша Meta.
"Комбинация из трех пальцев" - Ctrl+Alt+Del.
Программа vidcontrol
Установка "режима отображения".
Загрузка шрифтов.
Загрузка "таблицы перекодировки" (screenmap)
Изменение цветов
Другие параметры.
Несколько общих замечаний.
Программа kbdcontrol
Загрузка таблицы раскладки клавиатуры.
Изменение последовательностей, которые выдают клавиши fkey.
Изменение размера буфера терминала.
Другие команды
Общие замечания.
Русификация syscons
Русификация дисплея
Зачем так сложно?
Русификация клавиатуры.
Русификация для других кодировок
Как достигается "взаимопонимание" программ с терминалом (termcap, terminfo и переменная TERM).
termcap
Переменная окружения TERM
"Баги" в termcap
terminfo
Одно важное замечание: Какое отношение это имеет к X-Window?
Приложение 1. Команды (esc-последовательности) syscons
Приложение 2. Управляющие ("контроловые") символы
Приложение 3. "Функциональные" клавиши
Приложение 4. Несколько мелких полезных программок.
Системные переменные
Помимо переменных, используемых различными программами, в Linux, как и в DOS, есть специальные, или «системные» переменные, значение которых определено заранее, причем их намного больше. Так, DOS имеет переменную PROMPT, содержащую приглашение командной строки, а в bash ей соответствуют четыре переменных: PS1 — основное приглашение; PS2 — «вспомогательное» приглашение, выдаваемое, когда команда не уместилась на одной строке; PS3 — приглашение «команды» select (на самом деле это не команда, а специальная конструкция bash, призванная облегчить выбор из нескольких вариантов; впрочем, она используется довольно редко); PS4 — приглашение перед командами скрипта, выводимыми в режиме трассировки (заметим, что в bash, в отличие от командного интерпретатора DOS, скрипты по умолчанию не трассируются).
В документации bash описано множество переменных, устанавливаемых интерпретатором или влияющих на его поведение. Назовем для примера $RANDOM, дающую доступ к простому генератору псевдослучайных чисел, и $!, значение которой равно PID последней команды, запущенной из данного экземпляра интерпретатора на асинхронное выполнение. Нам уже встречались системные переменные ${CLASSPATH, $PATH, а также $LC_ALL, определяющая страну и язык. С другими, такими как $? — возвращаемое значение — или $* — список параметров, — мы познакомимся в дальнейшем.
Виктор Хименко, khim@rnktech.com
Окончание в следующем номере.
* В. Хименко. «Файлы, файлы, файлы». «Мир ПК», № 2/2000, с. 64; № 3/2000, с. 50.
«Процессы, задачи, потоки и нити». «Мир ПК», № 5/2000, с. 42; № 6/2000, с. 54.
Системный Логгер
9.1 Настройка
9.2 Упражнения
9.3 Дополнительные сведения
Init запускает демонов syslogd и klogd. Они занимаются записью сообщений в журналы (логи). Сообщения ядра обрабатывает klogd, а syslogd обрабатывает сообщения от остальных процессов. Главным журналом является /var/log/messages. Это правильное место для поиска неисправностей в системе. Часто здесь можно обнаружить решение проблемы.
Системы печати
При установке системы Вам предлагается выбор из двух систем печати: CUPS и lpd. lpd -стандартная система печати в клонах Red Hat. В нашем дистрибутиве она поддерживает кириллические кодировки. Однако, lpd не обеспечивает
должной гибкости и разнообразия настроек. CUPS (Common Un*x Printing System) построен на базе IPP (Internet Printing Protocol), весьма гибок, имеет хорошие утилиты настройки, через http и графические, но, в отдельных, не очень
частых случаях, его настройка требует серьезного изучения документации. Если установлены пакеты CUPS (CUPS, CUPS-drivers, xpp, qtCUPS, kups) и lpd (lpr, rhs-printfilters, mpage), то выбор между ними осуществляется при помощи
update-alternatives. Для начальной настройки печати можно пользоваться printerdrake.
Мы советуем попробовать CUPS, особенно если вашему принтеру меньше 5 лет, но помнить про старую простую альтернативу. В нашем дистрибутиве поддерживается печать в средах KOI8-R(U), CP1251 (lpd и CUPS), а также PT154 -
только для CUPS.
Сколько имен у файла?
Описанная схема позволяет связать с одним файлом несколько равноправных имен, что в ряде случаев бывает полезно. Сравните, например, характеристики файлов unzip и zipinfo на рис. 1 и 2
Рис. 1. Характеристики файла unzip
(для получения информации использована программа Midnight Commander).
Рис. 2. Характеристики файла zipinfo
Как видим, они совпадают: у обоих файлов одно и то же "положение" (кстати, шестнадцатеричное число 1A328h является номером узла), одинаковая длина и т. д., причем на каждый из файлов имеется по две ссылки - это в действительности и есть два имени. Но, будучи физически одним и тем же файлом, unzip и zipinfo являются различными программами: каждая из них выполняет свои действия и имеет собственный набор опций. Никакой мистики здесь нет - просто в программу в качестве нулевого параметра передается ее имя, по которому она и определяет, что делать дальше.
Далее, в Unix-системах (включая Linux) нет операции удаления файла в смысле DOS/Windows: есть только удаление ссылки на узел - unlink - и ссылки на пустой каталог - rmdir (в некоторых Unix-системах unlink позволяет удалить ссылку на пустой каталог, но в Linux это не так). Сам же файл удаляется автоматически тогда, когда делается недоступным для системы. Это означает, что не должно остаться, во-первых, ни одной ссылки на него, а во-вторых, ни одной работающей с ним активной программы.
Именно поэтому, кстати, в Linux можно обойтись без перезагрузки практически при любом изменении системы (за исключением замены ядра). Чтобы обновить системную библиотеку, вы стираете ее прежнюю версию (т. е. освобождаете соответствующую ссылку) и записываете под тем же именем новую. Ядро откладывает момент удаления библиотеки до тех пор, пока не закончит работу последняя из программ, ее использующих (что может произойти много месяцев спустя). Это весьма удобно, но если не знать о таком поведении системы, можно попасть в неприятную ситуацию.
Сколько может быть групп, юзеров в группе, групп у юзера?
Ответ на этот вопрос может быть разным для различных "ветвей" и версий Unix'а.
Поэтому, то, что здесь написано (далее) справедливо только для FreeBSD текущих версий (2.*.*).
Вообще групп в конкретной машине можно завести сколько угодно (по крайней мере, я не нашел явных ограничений).
Членов группы, которые перечисляются в самом файле /etc/group, должно быть не больше 200, но при этом вся строчка, описывающая группу, не должна быть длиннее 1024 символа.
Однако, это ограничение не распространяется на тех юзеров, "членство" которых задается полем "group" в их личных учетных карточках.
И, наконец, отдельный юзер может быть членом не более 16 групп (включая свою "первичную" группу, т.е. ту, которая указана в его учетной карточке). Конечно, никто вам не помешает вписать юзера более чем в 16 групп, но все программы будут считать его членом только первых 16 групп.
Иван Паскаль pascal@tsu.ru
Скриншоты
И в заключении несколько скриншотов:
The Bat! -- наверное самый часто задаваемый в эхах вопрос при переходе с Windows на Linux -- "а чем заменить TheBat!?" Один из вариантов ответа -- TheBat!'ом. Хотя, если подумать, то это попахивает извращением. Попробую объяснить почему: на мой взгляд, цель Wine заключается в том, чтобы дать возможность работать с Windows-программами, чьих аналогов нет в Linux. В случае же с почтовым клиентом это не так, и каждый может найти себе в Linux MUA по вкусу. К тому же у TheBat!, работающего под Wine обнаружилась неприятная особенность -- границы кнопок панели инструментов "мажутся" (см. слева от кнопки "Get new mail"). WinRar -- любимый многими архиватор в среде Windows неплохо чувствует себя в Linux. Windows Commander -- Far запустить не удалось, а вот Windows Commander, пожалуйста. Хотя и тут не обошлось без казусов. Почему-то при путешествии по дереву каталогов при помощи стрелок управления курсора, WC ведёт себя так, будто нажимается не клавиша Down, а Insert (команда "пометить файл").
Скрипты и интерпретаторы
Командный интерпретатор, как следует из его названия, интерпретирует команды, т. е. выполняет их непосредственно (без предварительной компиляции). Он обрабатывает команды, вводимые пользователем в командной строке, а также скрипты — заранее подготовленные последовательности команд, хранящиеся в текстовом виде.
Надо сказать, что скрипты играют в GNU/Linux (и UNIX вообще) куда более важную роль, чем командные файлы в Windows и DOS. Например, из более чем тысячи (!) программ в каталоге /usr/bin того компьютера, на котором пишутся эти строки, примерно четверть является скриптами того или иного вида, а уж количество вспомогательных скриптов, используемых разными программами для внутренних нужд и не предназначенных для исполнения «широкой публикой» (а потому хранящихся в других каталогах), вообще не поддается учету. На плечи скриптов ложится и большая часть «тяжелой работы» по запуску системы. А если требуется автоматизировать какие-либо действия, то самый простой способ — опять-таки написать несложный скрипт.
В любой «полноценной» (не сокращенной для помещения в тостер или мобильный телефон) версии GNU/Linux имеется не менее двух командных интерпретаторов плюс еще три-четыре языка скриптов, не используемых в командной строке (таких как perl, tcl, python или scheme), и это не считая «мини-языков» типа sed или awk. Почему бы не ограничиться одним интерпретатором и его командным языком? Главным образом потому, что люди не похожи друг на друга и у них разные предпочтения. И чтобы учесть интересы максимального числа пользователей, создатели дистрибутивов включают в них по несколько интерпретаторов, а администраторы обычно предоставляют пользователям своих систем право выбрать по собственному вкусу язык для работы в командной строке.
Из всех командных интерпретаторов для UNIX-систем два являются «классическими». Это B Shell (Bourne Shell), созданный Стефеном Бурном (Stephen R. Bourne) для седьмой версии UNIX, и C Shell, разработанный в Беркли Уильямом Джоем (William N. Joy). Язык C Shell, основанный на командном интерпретаторе шестой версии UNIX, содержал ряд расширений, помогающих в интерактивной работе и в написании скриптов: историю команд, псевдонимы (aliases), массивы и многое другое. Однако при всех своих несомненных преимуществах он имел один очень серьезный недостаток — был несовместим с B Shell.
Поэтому, когда FSF разработал интерпретатор bash (Bourne-Again SHell), сочетающий синтаксис B Shell с мощью C Shell, привлекательность C Shell значительно снизилась. И хотя многие бывшие пользователи BSD или коммерческих версий UNIX используют C Shell при работе в GNU/Linux, стандартом де-факто в этой ОС является bash. (Впрочем, для аварийных дискет bash, занимающий «целых» 420 Кбайт, великоват, и на них часто помещают более компактный интерпретатор, например A Shell, вмещающийся в 62 Кбайт.)
Именно bash интерпретирует основную массу скриптов из /usr/bin и подавляющее большинство вспомогательных скриптов. (Поскольку B Shell не может быть включен в GNU/Linux по лицензионным соображениям, скрипты, изначально рассчитанные на B Shell, также интерпретируются посредством bash.) Поэтому из всех командных интерпретаторов пользователю GNU/Linux в первую очередь необходимо освоить bash.
Подробно описывать bash в журнальной статье невозможно, да, впрочем, и не слишком нужно: в конце концов, он снабжен весьма подробной документацией, которая вызывается командой info bash. Здесь же мы остановимся на наиболее характерных и интересных его особенностях.
Slock
Прежде всего, клавиша, которая имеет смысл только для самого syscons. Это slock (scroll lock). Она переводит syscons в особый режим - просмотра буфера "истории" (history buffer). Как уже говорилось (в
"Основные возможности syscons: Буфер экрана (history buffer)") каждый "виртуальный терминал" имеет буфер экрана, который больше чем физический экран (по умолчанию - 100 строчек или 4 обычных 25-строчных экрана). То есть, он помнит 100 строчек (если, конечно, вы не меняли этот размер) из которых мы видим только последние 25. В режиме просмотра буфера вы можете посмотреть остальные предыдущие строчки.
В этом режиме работают только клавиши [стрелка вниз], [стрелка вверх], [Page up], [Page Down], [Home] и [End]. Естественно, при этом ваш экран как бы "отсоединяется" от машины, то есть, если какая-то программа в это время что-нибудь выводит, весь ее вывод копится внутри системы и не попадает на экран.
А вот клавиши (кроме перечисленных выше) обрабатываются в обычном порядке.
Эта клавиша "фиксирующаяся" (как и другие Lock'и), то есть, чтобы попасть обратно в нормальный режим, надо нажать ее повторно.
По умолчанию находится на физической клавише [Scroll Lock].
Случай первый
Офис находился в центре Киева, в дореволюционном здании. Соответственно, электропроводка была очень древней и не выдерживала современных нагрузок. Начальство дало соответствующее распоряжение, и возле каждого компьютера появился блок бесперебойного питания (UPS). Но мало купить UPS, надо и юзеров обучить. Дело в том, что при включении большой нагрузки (в роли которой выступал 17" монитор Sony) при слабом входном напряжении (примерно 180 В) UPS выходит на режим за 2-3 секунды, за это время делая 5-6 включений/выключений. Отследив эту закономерность, я приезжал за 20-25 минут до начала рабочего дня и самостоятельно включал все рабочие станции по следующей схеме: включается монитор, происходит 5-6 включений/выключений, UPS выходит на рабочий режим стабилизации, и уже после включается системный блок. Так продолжалось некоторое время, пока мне не назначили утреннюю местную командировку без предварительного заезда в офис. Сотрудница утром пришла на работу и включила все в обратном порядке: сначала системный блок, потом монитор. Разумеется, шестикратное включение/выключение компьютеру на пользу не пошло - исход ясен.
Угадайте, кого сделали виноватым?
Случай второй
- произошел с моим товарищем. Сотруднице для чего-то понадобились прозрачные пленки с текстом и изображениями, какими пользуются на различных семинарах и презентациях. Ни с кем не проконсультировавшись, она вставила в офисный копир целлофан, в который заворачивают цветы. Естественно, пленка расплавилась внутри. Кроме того, что влетело ей, влетело и товарищу - почему не объяснил сотрудникам правила пользования копиром?
Мораль этих историй такова: не поленитесь - набейте и распечатайте правила пользования всей техникой, что есть в офисе, и развесьте в местах ее использования. Старайтесь предусмотреть все ситуации, вплоть до "запрещается пить кофе возле компьютера во избежание пролива на клавиатуру" и т. п.
Как известно, борьба с вирусами - одна из составляющих работы сисадмина. Также известно, что, сколько ни говори проверять дискеты на вирусы, пользователи все равно сначала заражаются, а потом уже вспоминают, что надо было бы проверить. ":И откуда тут взялся этот макро-вирус?"
Касперский, Мостовой "и компания" специально для таких случаев сделали антивирус-монитор. Но, во-первых, если свято чтить закон, то установка на каждую рабочую станцию лицензионного антивируса обойдется в хорошую копеечку. Во-вторых, эти мониторы отбирают такое количество системных ресурсов, что иногда кажется - пусть уж лучше будут вирусы. Установив одновременно три монитора (например, AVP, Dr. Web и NA), вы не узнаете свой PIII или Athlon - уж не "тройку" ли мне подсунули? Но выход из ситуации есть. Можно воспользоваться опытом многочисленных интернет-клубов. Изымите изо всех компьютеров трехдюймовые дисководы - оставьте только у себя. Все входящие на дискетах материалы будут попадать в офисную локальную сеть через вашу рабочую станцию, на которую можно установить любые антивирусы, даже без программы-монитора. Во-первых, так будет дешевле - антивирус покупается в единственном экземпляре. Во-вторых, повысится информационная безопасность фирмы, но об этом чуть позже.
Все сисадмины проходили ситуацию, когда какая-либо рабочая станция резко начинает зависать, не загружаться, перестают работать приложения, отказывается печатать принтер и т. п. Естественно, пользователю данной машины с целью диагностики задается вопрос: "Что Вы делали до того, как она стала так работать?" На что перепуганный пользователь отвечает: "Ничего, клянусь!" Что ж, с софтом дяди Билла возможны и чудеса, но и они имеют под собой основу. А пользователь, боясь получить за свои действия выговор от начальства, не желает сотрудничать с сисадмином. Но выход есть! По адресу news.svzserv.kemerovo.su/pub/fileecho/CRACKER/hookdump.rar, (22 Кб) можно скачать знаменитый фриварный клавиатурный шпион Hookdump, который будет использоваться в мирных целях. Теперь не придется выслушивать лживые показания пользователей: в файле протокола вы все отлично увидите, вплоть до перемещений мышки. Кто-то случайно снес папку Windows, кто-то из праздного интереса залез в реестр, кто-то менял настройки принтера, кто-то отформатировал один из дисков. Начинающий пользователь элементарно может перепутать команду Форматировать с процедурой упорядочивания данных на носителе (дефрагментация по-нашему).
Отдельно нужно сказать про поддержку бухгалтерии. Бухгалтеры сейчас активно пользуются автоматизированными бухгалтерскими комплексами, типа "1С:Предприятие". Эти программы, как правило, являются конфигурируемыми и настраиваемыми - их поддержку также нагрузят на вас. Что ж, не беда: скриптовый язык не сложен (к примеру, в "1С:Предприятие" он напоминает мне VBA) - при наличии литературы разобраться можно. Конфликт же может возникнуть при общении с бухгалтером. Дело в том, что у "технического" и у "финансового" человека разные точки зрения на одну и ту же проблему, сетевым языком говоря - разные протоколы связи (веб-серферским языком - разные кодировки :)). Придя на вызов бухгалтера, вы услышите изложение проблемы приблизительно в такой интерпретации: ":не сходится баланс по НДС, потому что дебет с кредитом имеет различия больше, чем учетная ставка НБУ во втором квартале и т. д. ". Бред, не так ли? Эта же фраза в переводе на нормальный сисадминский язык звучит так: "В этом окне я ввожу первое число, в этом окне я ввожу второе число, в этом окне должна высвечиваться их сумма, умноженная на какое-то число. А это число не сходится! Где-то потеряна связь!". И все понятно! Постарайтесь договориться с бухгалтером о единой системе общения или зубрите бухгалтерские понятия и термины, а иначе конфликта не избежать.
Смерть процесса
Рассмотрев рождение процесса, логично будет обсудить и его смерть. Когда процесс закончит работу (нормально или аварийно), он уничтожается, освобождая все использовавшиеся им ресурсы компьютера.
Обратимся еще раз к примеру, рассмотренному выше. Когда мы нажатием <Ctrl>+C принудительно завершили выполнение программ dd и wc, соответствующие процессы были уничтожены, и на экране появилось приглашение командного интерпретатора. Пока программы работали, приглашения не было: интерпретатор находился в состоянии ожидания, в которое перешел, послав специальный системный вызов (в действительности таких вызовов существует несколько: wait, waitpid, wait3, wait4). После окончания работы программ вызов вернул управление интерпретатору, и тот выдал на терминал приглашение.
Если родительский процесс по какой-то причине завершится раньше дочернего, последний становится "сиротой" (orphaned process). "Сироты" автоматически "усыновляются" программой init, выполняющейся в процессе с номером 1, которая и принимает сигнал об их завершении.
Если же потомок уже завершил работу, а предок не готов принять от системы сигнал об этом событии, то потомок не исчезает полностью, а превращается в "зомби" (zombie); в поле Stat такие процессы помечаются буквой Z. Зомби не занимает процессорного времени, но строка в таблице процессов остается, и соответствующие структуры ядра не освобождаются. После завершения родительского процесса "осиротевший" зомби на короткое время также становится потомком init, после чего уже "окончательно умирает".
Наконец, процесс может надолго впасть в "сон", который не удается прервать: в поле Stat это обозначается буквой D. Процесс, находящийся в таком состоянии, не реагирует на системные запросы и может быть уничтожен только перезагрузкой системы.
Snapshots
Замечательное средство, обеспеченное LVM – snapshots. Это позволяет администратору создавать новое дополнительное блочное устройство, при этом логический том просматривается в двух ракурсах – «замороженном» на определенный момент времени и текущем. При этом алгоритм функционирования расположенной на томе файловой системы становится похожим на тот, что используется в файловых системах, «заточенных» под микросхемы флэш-памяти (примером может служить JFFS2 для linux). Размер snapshots следует рассчитывать исходя из скорости обновлений и времени «заморозки». Такой режим может эффективно использоваться для резервного копирования логического тома в непротиворечивом состоянии без закрытия приложений, модернизирующих хранящиеся на нем данные. По окончанию резервного копирования администратор удаляет snapshots. Требование – кратковременно закрыть приложения в момент создания snapshots (а затем открыть доступ к тому) и повторное кратковременное закрытие доступа в момент удаления snapshots. В итоге, общее время простоя сервера ничтожно мало по сравнению со временем резервного копирования.