На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
Страницы: (4) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
> FAQ
    Милостивые государи и государыни!
    Вроде бы, свершилось. FAQ появился. На самом деле, этот FAQ является весьма относительным.
    По большому счету это -- FAQ относительности.

    Объясню. UNIX-системы по сути дела это не одна система и даже не две. Это огромное семейство ОС, весьма
    различное по реализациям, определяемых зачастую назначением системы или идеями, господствовавшими в головах
    разработчиков. По этой причине попытка подробного анализа всех UNIX-like систем в одном FAQ'е --
    бред.
    Точно так же, как и выражение "...знать (знаю, знает) UNIX..." так же бред. Извините, но "знать" это
    невозможно. В этом можно только "ориентироваться".

    Попутно нам стоит рассмотреть идеи, положенные в основу UNIX-систем. Не понимая основных идей семейства,
    мы рискуем разбираться не с причиной, а со следствием. А нам это не надобно, т.к. судить по графической
    оболочке одной системы обо всем семействе UNIX вообще полный бред. Понимать надобно...

    Что мы можем сделать. Мы можем рассмотреть наиболее общие и определяющие составляющие UNIX-like систем,
    вычленить особые... скажем так, определяющие моменты и рассмотреть их. Что, собственно, я и постарался
    сделать.

    Что есть "UNIX"?
    В зависимости от контекста:
    - слово из четырех букв.
    - торговая марка.
    - одна из ОС, принадлежащих целому семейству.

    Что есть "UNIX-like", "UNIX-compatible", "UNIX-совместимая" ОС?
    Это ОС, реализующая следующие технологические принципы:
    - четкое и полное следование стандартам POSIX (как минимум, реализация базового набора
    системных вызовов и сигналов).
    - моноядро -- ядро, построеное по принципу "all in one". См. ниже.
    - оболочки пользователя, служащей основным интерфейсом пользователя к используемым утилитам.
    - набора утилит, удовлетворяющего стандарту POSIX.
    - основной язык программирования -- С, причем либо в версии от производителя самой ОС, либо в версии
    GNU, в редких случаях, как это было с QNX, от стороннего произодителя, когда для создания ПО
    для QNX использовался компилятор Watcom C/C++.
    - коммуникации -- IPC, TCP/IP (причем, гарантировано 100%-е соответствие документам RFC).
    - многопользовательская защита, реализованная в любой системе на базе единых принципов и оперирующая
    едиными понятиями ("пользователь", "группа пользователя", "все остальные пользователи").
    - многопроцессность или многопоточность системы.
    - поддержка разнообразнейших архитектур, основанных на различных процессорах, как в мульти-, так и
    монопроцессорных реализациях.

    Это ОС, в основу реализации которой положены следующие не технологические принципы
    (если угодно, то "философские" принципы):
    - "разделяй и властвуй". Т.е. всегда можно разделить систему на ряд взаимосвязанных подсистем, чьи
    задачи четко могут быть разграничены и рассмотрены как отдельно, так и во взаимосвязи с остальными
    подсистемами.
    - "KISS" -- "keep it simple, stupid". Каждая из подсистем должна быть организована как можно
    проще и решать как можно более простые задачи при помощи возможно более простых средств. Это же
    относится и к пользовательским программным средствам.
    - "дарвинизм". "Выживают" только те программные средства и протоколы, которые того действительно
    заслуживают, которые смогли завоевать признание сообщества UNIX. Все остальное -- мертво.
    - "жизнеспособность". Прямое следствие "дарвинизма". программисты будут совершенствовать только
    то, что им интересно. По этой причине "умирающие" протоколы и/или продукты не поддерживаются. В то
    же время, системы совершенствуются и развиваются... А старые остаются в том же виде. Использовать,
    при неоходимости, конечно же возможно, но...
    - "единообразие". В пределах большинства систем в последнее время все большие и больше господствует
    принцип "унификации". Т.е. идеи, реализации, проникают (портируются) из системы в систему и уже мало
    кто помнит в чем было различие между System IV и AT&T реализациями. Мало кто помнит в чем было различие
    в реализациях стека TCP/IP, скажем, в BSD-системах и Solaris. Если взять QNX 6.2, то там можно найти
    тот же NASM, который есть и в Linux и в BSD-системах.
    - Открытость и бесплатность кода. Считается правилом хорошего тона (и на этом основан ряд лицензий на
    ПО), предоставлять для анализа свои исходные тексты. Благодаря этому мы все можем поставить на свою
    систему то, что нам необходимо для работы, скомпилировать и начать использовать. Кроме того, лично
    мне неизвестны на данный момент какие-либо программные продукты для семейства UNIX, имеющие широкую
    популярность, но содержащие какой-либо вредоносный код. Это долго не живет.
    "Бесплатность" кода. На самом деле, нет ничего абсолютно бесплатного. Ниже поговорим
    по-подробнее.
    - Владение требуемыми навыками и следование соглашениям. UNIX'оиды это отдельная раса программистов
    и администраторов. Я не говорю о "богоизбранности" UNIX'оидов (упаси Господь от такой глупости),
    но разбираясь с тем, что есть UNIX-системы, Вы рано или поздно начнете докапываться до тех основ,
    которые положены в базис современных информационных технологий. Всех. Без пропусков и исключений.
    Даже и совсем и не совсем "компьютерных", технологий, применяемых, к примеру, в мобильной связи.

    Сами системы заставят Вас думать по-UNIX'овски. Не просто думать, а понимать
    систему и сеть с полуоборота винчестера. С полупинга. И сами системы заставят Вас работать не так, как
    Вы думаете, а так, как этого требует от Вас система. Т.к. все, что Вы считаете система должна для Вас
    сделать, она сделает только в одном случае -- если Вы этого у нее правильно соизволите спросить.
    Если Вы считаете, что UNIX начался с того момента, как Вы поставили себе на машину какой-то из клонов,
    то это бред. Системы начались не Вами, не Вами и закончатся. Они жили и развивались до Вас, и после
    Вас так же будут жить и развиваться.
    И чем быстрее Вы это поймете и встанете "в поток", тем лучше для Вас же. С UNIX-системами
    невозможно работать "абы кабы". При всей "открытости" и "доступности" системы, лучше ее не
    шокировать своей "гениальностью".

    Если выбивать из-под цельного здания фундамент по кирпичу (блоку) в день, то пусть и не сразу, но здание
    рухнет и единственное, что нам останется -- понастроить лачуг из "останков" и гордится своим умом и
    сообразительностью... А вот этого не хотелось бы. Самая простаая вещь, которую Вам следует понять,
    это то, что время гениальных одиночек прошло (еще до прихода компьютеров в мир). Линус Торвальдс,
    сформировал просто концепцию нового ядра, но дальше началась работа сообщества, которому
    пришлась по душе эта идея сама по себе и которое увидело полезность такого рода разработок.

    Я понимаю, что сложно осознать то, что есть, пусть и мягкие, но... ЗАКОНЫ и еще сложнее им
    подчиняться, т.к. по Вашему мнению... (подставьте здесь что хотите). Но... попробуйте подумать что
    будет со всеми нами, если каждый будет менять закон тяготения в мире по своему усмотрению.

    Что есть ядро?
    Программное обеспечение, загружающеся при старте системы, конфигрурирующее при старте используемые
    устройства, реализующее распределение памяти, управление устройствами (см. модуль), планирование
    и исполнение процессов. В идеале, ядро очень "лениво". Большую часть времени оно спокойно "спит" в
    памяти, "просыпаясь" только в те моменты, когда пользовательскому процессу требуется выполнить какую-
    либо операцию в привелигированном режиме -- запустить программу на исполнение, считать/записать файл,
    обратиться по сети... В этих случаях пользовательский процесс или демон (см. ниже) "расталкивают" ядро,
    оно проверяет правильность запроса (может ли данный процесс, принадлежащий данному пользователю записать
    байт в этот файл, к примеру), выполняет какую-то работу и снова заваливается "спать", т.к.
    производительность связки память-процессор выше производительности любого другого периферийного
    устройства.

    Но дело в том, что само по себе ядро состоит из основного кода, реализующего логику работы ядра (супервизор
    ядра
    ) и связывающего модули ядра. Само по себе ядро даже "не догадывается" какой именно сетевой
    картой Вы пользуетесь, какой "винт", какого производителя. Оно просто выполняет то, что от него просят.
    Все просто, как видите...

    Модуль.
    Для "точной" работы у ядра есть свора "модулей", работающих именно с конкретными устройставми. Ближайшим
    аналогом является "драйвер" в семействе M$-DOS/Windows. И там и там это довольно сложное ПО, реализующее
    управление конкретным устройством, как генерируя, так и обрабатывая прерывания и, на основе прерываний,
    генерирующее сигналы для ядра.

    Но в чем разница. В том же M$ Windows работа драйвера передается какой-то подсистеме ядра Windows,
    которое "размазано" по ряду программных модулей (как правило, .dll), которые в данный момент могут быть
    просто не загружены в память (где-то в свопе валяться) или просто система "не искала новое оборудование"
    (мне всегда это нравилось...). В этом случае, при возникновении какого-то прерывания от драйвера, системе
    надо подгрузить соотв. модуль .dll в память, обеспечить исполнение кода, а вот потом только передать что-то,
    что хотел "сказать" драйвер, выбрав соотв. сообщение из системной очереди сообщений, потом тот сигнал,
    который драйвкр сгенерировал, как-то обработать... Брррр... Разбирайтесь с этим сами... Если хотите.
    Я понял что я написал.

    В случае с UNIX все проще. В UNIX ядро все полностью и сразу загружено в память. Ничего не валяется по
    свопам и разным .dll'кам. Если модуль прописан в системе, то он так же загружается в память, но только
    в том случае, если он явным образом используется. И прерывание, генерируемое устройством, начинает
    практически сразу отрабатываться ядром, т.к. ничего не надо нигде по "винту" искать, "грузить"...

    Различия в ядрах.
    Собственно говоря, именно практической реализацией ядра системы и различаются. К примеру, в семействе
    BSD систем можно выделить три системы FreeBSD, OpenBSD, NetBSD. Между ядрами
    этих систем практически ничего общего, окромя трех букв в названии -- BSD. Эти системы
    разрабатывались каждая само по себе, но на основе общих соглашении -- стандарта POSIX и соглашений
    System V. Просто архитекторы ядра посчитали нужным реализовать так, как их реализовали. Никто не
    мешает и Вам реализовать свое ядро. На том же ассемблере... Почему бы и нет? Такие разработки ведутся
    постоянно, но вот успешность, по крайней мере у меня вызывает сомнения.

    Продолжим рассмотрение примеров. Система QNX -- так же весьма популярная UNIX-like ОС, разрабатывалась
    как встраиваемая ОС для процессоров семейства Intel. В ядре есть полная поддержка стандартов, но
    это ядро дополнено "механизмом квитирования" и основано на очень четком временном управлении. Т.е.
    любые две подсистемы внутри ядра (к примеру, менеджер памяти и дисковой подсистемы) обмениваются заранее
    оговоренными сигналами через супервизора системы. Т.е., к примеру, менеджер памяти попросил менеджер
    дисковой подсистемы записать файл. Менеджер дисковой подсистемы в данный момент занят, но генерирует
    сообщение, что сможет это сделать через некоторое время.

    Супервизор ядра ставит в очередь файл на запись и отслеживает время до начала записи. И, если не дай Бог,
    запись не начинается, о чем менеджер дисковой подсистемы уведомляет супервизора сигналом, то менеджеру
    памяти передается сигнал об ошибке. По идее, так работает ядро в любой системе, но в QNX, именно из-за
    самого характера системы "реального времени", все это работает на базе миллисекундых задержек, в
    течение которых тот или иной менеджер обязан произвести операцию. И это очень четко
    контролируется самим супервизором ядра. В системах, не использующих механизмы "реального времени" эти
    задержки могут достигать больших значений, что не говорит об ухудшении качеств системы, а всего-лишь о
    другом назначении системы.

    К примеру, на истребителе F-17 стоит 19 или 20 контроллеров на базе QNX, что не мешает поставить ее в
    качестве ОС для роутера, к примеру. Но вот гондобить на ее базе web-site я бы не стал... Хотя, это личное
    дело каждого...

    Далее. Различаются конкретные методики конфигурирования ядра, в том числе и при старте системы
    (наличие/отсутствие "автоконфигураторов ядра"), конкретные реализации подсистем ядра, того же
    менеджера виртуальных машин, супервизора, архитектура модулей.

    Что есть POSIX?
    Набор стандартов, регламентирующих системные вызовы, сигналы, наборы утилит, гарантирующие соответствие
    различных систем от различных производителей единым требованиям к окружению пользователя. Все для нас...
    программистов, админов, пользователй.

    К примеру, в любой UNIX-совместимой ОС всегда присутствует редактор Vi в том или ином виде. Вопрос не
    в том, будете ли Вы его использовать или нет. Вопрос даже не в том, как конкретно Вы будете его
    использовать (в случае использования). Вопрос в том, что если это -- UNIX-совместимая система, то vi
    обязан там быть
    . Все. Это -- ЗАКОН.

    И никого в мире, поверьте, не волнует тот факт, что лично Вам vi не нравится, или Вы нашли что-то
    получше. Или что Вы без vi просто не мыслите себе жизни, считая его "единственно верным редактором".
    "UNIX" силен тем, что семейство этих систем развивается именно в "едином ключе", а не на основании
    чьих-то идей о том, что лучше, что хуже. Гораздо проще прийти к единым соглашениям и в дальнейшем
    им следовать (пусть и не всегда компромисс удовлетворяет все стороны), чем перестраивать все и вся
    как только кого-то осенила идея. Как только предложенная идея "овладеет массами", она сразу будет
    принята как стандарт (пусть и в неявной форме) и сразу же... перестанет кого-то удовлетворять. Как
    Вы думаете, почему я назвал этот FAQ, "FAQ'ом относительности"?

    То же относится к таким вещам как С, как механизмы IPC, реализующие связь между процессами. В этой
    части полезно будет понять, что TCP/IP в UNIX всего-лишь одна из подсистем, на базе которой строится
    межпроцессные коммуникации. Именно по этой причине в книге Р. Стивенса, TCP/IP рассматриваются в
    этом контексте, а не сам по себе. И законы IPC в общем и целом переносимы на TCP/IP в том числе, т.к.
    когда Ваш браузер стучится на web-сайт, это не Вы туда стучитесь -- это одна программа обращается к
    другой на основании оговоренного протокола. И ни какого колдовства... Никакой магии... Всего лишь
    цифры и электронные импульсы.

    НО! Сам по себе TCP/IP не описан в стандартах POSIX. Он описан в RFC. Просто, я повторяюсь, TCP/IP
    в UNIX -- подсистема и не более.

    Что еще нам гарантируют стандарты POSIX? Они гарантируют нам, как программистам, некоторую
    защищенность от волюнтаризма производителей ОС. Т.е. моя программа, удовлетворяющая требованиям
    стандарта POSIX, будучи скопирована на систему с другой архитектурой, может быть там скомпилирована
    и запущена на исполнение. Т.е. гарантирована совместимость на основе исходных текстов.

    Так же определен механизм "расширений". Т.е. в ряде случаев требуется указать некоторые библиотеки,
    которые могут распространяться производителем самой по себе системы, государством, на территории
    которого программный код будет эксплуатироваться и/или соответствующими организациями (к примеру,
    ANSI). Но здесь важное требование -- эти библиотеки не должны содержать недокументированый код,
    кардинально меняющий работу системы. Т.е. даже если библиотека и закрыта, то к ней должна прилагаться
    исчерпывающая документация, а не то что... Ладно, ясно, IMHO.

    Что есть дистрибутив?
    Ядро, плюс набор необходимого софта (утилит, демонов, графических оболочек пользователя), которые
    создатели дистрибутива посчитали нужным включить в дистрибутив.

    А в чем разница-то?
    Да, почти ни в чем. Разве что в том, что иногда создатели дистрибутива до безобразия халатно
    и, как следствие, некачественно проверяют правильность "подгонки" и соответствия того или иного
    элемента ПО общему набору. Или норовят "залить" на диски самое последнее ПО, бывает, что и beta-релизы
    (dev или unstable версии), нестабильные по своей сути, т.к. пишутся для разработчиков и являют собой
    "слепок" проекта, сырой, кривой и неотлаженный, распространяемый, по идее, только для разработчиков.
    Или наоборот стараются работать с предыдущими, а значит с более стабильными версиями. Выбор за Вами.

    Я решил скачать/поставить себе новое ядро...
    Угу. Здорово. Но вот стоит это делать только в том случае, если предыдущая версия не устраивает
    Вас тем, что не поддерживает какие-то устройства, установленные на Вашем компьютере.
    Это не Windows, где каждый релиз дает "больше объема, больше блеска" (с) какая-то реклама...
    Здесь именно базовые концепции ядра той или иной системы были отлажены и оптимизированы еще в первых
    релизах, дальше идет простое увеличение числа модулей, как правило, или в релизе сообщается, что
    ядро версии "xxx.yyy.zzz" содержит полностью переписанную подсистему "abc". Ну, тогда действительно,
    наверное имеет смысл себе обновить систему.

    А как обновить систему? Стоит ли все снести?
    1. Как написано в README. Каждая система по своему уникальна, поэтому, при "разборках" с ядрами, все-таки
    читайте документацию.
    2. Сохраните критичнкые для Вас данные (конфигурационные файлы, в которые можно будет потом заглянуть,
    чтобы не настраивать все и вся заново) и со спокойной совестью все сносите. Не думаю, что "нейрохирургия",
    а именно этим Вы и займетесь, если будете по кускам чего-то с чем-то связывать, upgrade'ить), входит
    в число Ваших любимейших развлечений. Принцип "KISS" в действии. Хотя, кому как...

    Ядро системы ХХХХХХХХ более стабильно (более безопасно)...
    Чушь собачья. И бред. В одном флаконе.
    Дело в том, что любая из UNIX-систем реализует практически то же, что и ее "соседка" или
    "соседки". И, как правило, системы развиваются не один год, передавая друг другу наиболее эффективные
    решения. И ядро любой UNIX-системы может в кривых руках норовить свалиться в "кору" каждые 15 минут.
    Точно так же, как и иметь uptime в несколько лет. Как пример. Да. Linux "живет и развивается" втрое
    меньше, чем FreeBSD. НО! Ряд важных решений в ядре Линукс позаимствован именно из FreeBSD, а набор
    утилит -- из проекта GNU, так что в строгом наименовании, это будет все-таки не Linux, а GNU/Linux.

    Установка того или иного дистрибутива или системы, вопрос не столько прагматический, сколько
    "ралигиозный", если мы не говорим о каких-то спец. требованиях -- см. выше пример с QNX. Хотя, в
    пределах того же семейства Linux дистрибутивы различаются и, порой, весьма здорово.

    В части "безопасности ядра"... Ну это вообще никой критики не выдерживает, т.к. ядро "напрямую"
    взломать крайне сложно. До него еще и "достучаться" надобно... А это уже не всем подсилу, так что...

    Хотя, вот здесь можно еще один примерчик рассмотреть. Хорошо. Допустим, мы берем некую гипотетическую
    систему, развивавшуюся в части ядра и утиля последние 200 лет. Ядро будет суперстабильным,
    супероптимальным. Хэх! Админ будет супербизоном. :)

    Теперь, админ берет и ставит на эту систему (ядро и утиль) некую новую разработку, в которой есть,
    вроде бы пара багов, проявлявшихся на других платформах, но вот именно про эту систему ничего пока
    не известно...

    "Пара вопросов". Риторических. Сознательно утрирую.

    1. После установки система в целом станет сильнее или слабее? Да, пока не доказано, что именно
    в этой системе эти баги проявятся. Нет эксплоитов, патчей под версию софта именно для этой системы.
    2. А куда баги-то делись? Там же. Только, если не доказано что они не проявляются, это не значит что
    их нет. И еще вопрос что за баги... Есть баги, которые напрямки в рута выводят...
    3. Что будет пытаться взломать крэкер? Ядро? Или все-таки работающий поверх ядра софт?
    4. И причем здесь безопасность ядра как таковая, если ядро оказывается под непосредственной угрозой
    в последнюю очередь?

    Нет, положительно, я не могу понять почему это вдруг -- FAQ относительности... Т.к. написание и
    применение эксплоита возможно на основе "ошибок проектирования" самого ядра, которое не проверяет, скажем,
    так, каждый буфер в программе, его заполнение, использование, ... Но ведь оно и не должно этого
    делать! Это пусть уже программист пошевелится! Именно тот, который написал потенциально глюкавый код.
    А мы кричим -- "ядро... ядро...". Так что, смотря с какой стороны на все это посмотреть...

    Что есть "демон"?
    Это процесс, выполняющий в системе некую полезную работу, но при этом не выводящий на терминал (как правило)
    каких-либо сообщений, не получающий команд от пользователя. В Windows есть аналог -- "сервис". Единственный
    механизм "общения" с демоном -- просмотр логов системы, куда демон при тех или иных условиях должен чего-то
    записать. Довольно "односторонне", но этого хватает.

    На базе демонов реализуются службы, которые должны функционировать по схеме "365 дней в году, 24 часа в
    сутки", обрабатывая запросы пользователей -- sendmail, Apache, BIND, ... .

    Что есть Shell?
    Это программируемый командный интерпретатор, который служит "прослойкой" между Вами и ядром. Процессы,
    даже те, которые Вы сами запустили, обращаются к ядру сами, а вот Вы -- через shell. На языке, принятом
    в shell Вы сами можете написать скрипт, который будет решать для Вас какие-то задачи. Можете не писать.

    Shell запускается в любом случае при любом Вашем login'е в систему, даже если Вы стартуете графическую
    обололочку. Вам кажется что Вы запускаете графическую оболочку. На самом деле Ваш shell запускает
    графическую оболочку по умолчанию.

    Что есть "скрипт"?
    Набор команд на некотором языке, который надо загрузить в интерпретатор языка, чтобы он их обработал.
    К скриптам относятся программы на bash, Perl, Tcl/Tk, expect, Python, Lisp, Forth... И еще море всего.

    Что есть "программа" и "процесс"? Каково различие?
    Прогамма -- некий код, оформленный как двоичный файл или как скрипт, лежащий на диске.
    Процесс -- то же самое, но запущеное на исполнение. Имеет ряд характиристик, определяемых учетной записью,
    от которой запущен (реализация механизмов защиты) и приоритетом (числом потребляемых тактов процессора в
    единицу времени), определяющим скорость выполнения данной задачи.

    Что есть GNU?
    Это общественная организация, чей девиз расшифровывается как "GNU is Not UNIX". Вот такая игра слов.
    Создатели GNU посчитали нужным разработать дистрибутив программного обеспечения, реализованого на основе
    требований POSIX в те времена, когда компьютеры были большими, а компиляторы маленькими и когда сами
    по себе системы UNIX стоили многия тысячи денег.

    С тех пор разработан практически полный набор утилит для UNIX-like систем, компилятор, портируемый на
    множество платформ, графическая оболочка пользователя (GNOME), ряд прикладного софта. Но наиболее
    важными можно считать первые три проекта. Все это богатство распространяется бесплатно, на условиях
    GPL. На самом деле, правильнее было бы сказать не "бесплатно", а почти бесплатно, т.к. кто-то за это
    все-таки платит (за трафик, к примеру, при загрузку ПО из Сети). Только Автор ПО с Вас денег не берет.

    Почему С считается основным языком UNIX-систем?
    Потому, что в момент разработки С и основных концепций UNIX (они практически совпали по времени),
    ничего другого кроме ассемблера и "языков высокого уровня" (FORTRAN, COBOL, PL/1) не было. Вот и создали
    некий "промежуточный" язык, которым планировали заменить ассемблер, но который мог решать более
    широкий круг задач, не сильно отставая от ассемблера в части оптимальности порождаемого кода, который
    можно было бы дополнять различными библиотеками от СУБД до реализации сетевых протоколов, от решения
    графических задач до реализации собственных языков высокого уровня. И, вдобавок, который можно было бы
    реализовать для большинства платформ, не сильно вдаваясь в вопросы архитектуры (системы адресации,
    числа регистров, порядок следования байт в слове, ...).

    Мне не нравится С...
    Пишите на том, на чем Вам нравится писать. Поищите в Сети наиболее полно удовлетворяюий Ваши потребности
    язык программирования, версию или "диалект" языка, установите на машину и... с Богом. Не забывая оставаться
    "совместимыми" со всей Вселенной UNIX.

    Что есть утилита?
    Программа, реализующая какое-либо действие пользователя. Т.е. если Вы решили просмотреть что есть в каталоге
    и дали команду ls, то в зависимости от ключей командной строки, вывод на терминал будет варьироваться.

    По идее, грамотная реализация утилиты предусматривает наличие этих ключей, реализованных в коде через механизм,
    предоставляемый функцией getopt_long(), getopt_long_only().

    Утилиты могут иметь или не иметь front-end. Это полный бред, что "чистый UNIX это командная строка", так же
    как и "без графической оболочки мы не проживем" -- то же не менее полный бред. Идите по "срединному пути"... В
    этом сила, а не в борьбе за "чистоту рядов". И графическая среда и терминал -- все это UNIX только в том случае,
    когда Вы понимаете что и за чем следует. Как пример -- возможность а, зачастую, и необходимость использования в
    графической оболочке стандартного терминала. В этом случае Вы сочитаете удобство работы с графикой и
    многотерминальность.

    Front-end.
    Графическая оболочка, запускаемая пользователем, позволяющая сконфигурировать опции для запуска утилиты (программы)
    и организовать вывод данной утилиты (программы) в наиболее приятном для Вас виде.

    Как пример здесь можно привести графический front-end для программы nmap. Хотя, справедливости ради, надо
    заметить, что не всегда и не все опции можно сконфигурировать через front-end.

    Front-end может быть написан на любом языке, позволяющем использовать оконный интерфейс. Это может быть C, Tcl/Tk,
    Java, словом, что угодно, лишь бы этот язык поддерживал работу с оконным интерфейсом.

    Я не хочу работать в системе, которая (делает/не делает) то-то...
    1. Либо Вы не настроили систему. Как вариант -- не подобрали (не написали) софт, который позволяет решать
    Ваши задачи.
    2. Либо Вы и не старались настроить (подобрать, написать...). UNIX-системы всегда были прежде всего системами
    для программистов/телекоммуникационщиков. Я не рекомендую ставить Вам систему для того, чтобы только
    "погонять" в Half-Life. В этом случае Вам больше всего подойдет X-Box © M$. Или любая Windows-система.
    3. Ну... Не работайте, кто заставляет-то? UNIX-системы никогда и ни для кого не были догмой. И, более того,
    никогда такой задачи и не ставилось -- тотальная UNIX'овизация всего мира... Просто, в последнее время, стало
    модным ругать Windows и хвалить UNIX, но мало кто может сделать это аргументировано. А системы сами
    по себе как развивались/работали, так и развиваются/работают... Собственно "системам" безотносительно
    что кто-либо о них думает. Или не думает. Не стоит "очеловечивать" систему.

    Должен ли я знать английский?
    Обязательно!!! К моему величайшему сожалению, мы все дружненько живем "на родине самых больших
    калькуляторов и самых маленьких танков" (с) безвестный остряк середины 70-х годов XX века. До 1950г. в
    СССР генетика признавалась лженаукой, а кибернетика, давшая мощный толчок развитию информационных технологий,
    так та вообще была "продажной девкой империализма" (с) какой-то коз?л из Политбюро или Верховного Совета.

    По этой причине мы не имели и не имеем опыта массового внедрения именно систем общего пользования
    в общечеловеческую среду. Да, в России были великолепные опыты по созданию машин на базе троичной логики
    (подумайте сами о возможностях такой системы). Кстати, биты в такой системе назывались "тритами", а байты --
    "трайтами". Были великолепные опыты по созданию на базе операционных усилителей аналоговых вычислительных
    машин
    (это когда для каждой задачи ("программы") паялись свои блоки и все это работало не на базе
    двоичной логики, а на базе аналоговых сигналов). Все это было. Но, в то же время, первые микросхемы
    легендарной 155-й серии (первая массовая логическая серия) "сдирались" с американских аналогов.

    В России в широком применении не было именно российских разработок в области компьютеров. Та же серия СМ
    была в девичестве PDP 11/70 DEC. Та же "Единая Серия" или ЕС это изначально разработка IBM. Грустно,
    милостивые государи и государыни, но... F?Ct на лице... Похвалиться особо нечем. Хотя, идеи в российских
    разработках были такие, что современный Pentium а, конкретнее, конвейер этого семейства процессоров, был
    содран с российских разработок, точнее, с БЭСМ, "Эльбрус"...

    Таким образом мы стартовали с заведомо проигрышных позиций и нам следует для начала воспринять общемировой
    опыт, на базе которого делать свое и делать лучше. "Возьми себе в пример героя, догони его, обгони...
    Слава тебе...". Генералиссимус Александр Васильевич Суворов.

    Благодарности.
    1. ASMProgrammer'у, Микелянджело за то, что они помогли мне понять что и как следует сказать, что важно, а что
    нет, т.к. я очень долго сомневался что написать и как это сделать. Открою секрет -- это не первая
    версия сего FAQ'а.
    2. Woland'у за его первое чтение этого FAQ'а на моей машине и дельные комментарии. Этот... "укушенный яблоком"
    когда-то с Божьей и моей (методически-консультативной) помощью админил некогда 12-ти терминальную систему
    на базе SCO OpenServer и банковскую систему на базе HP-UX (HP 9000 Business Series). Не знаю было ли это
    круто, но то, что весело -- однозначно. Особенно когда один из руководятлов филиалов дернул за пределы нашей
    большой и бестолковой Родины с деньгами филиала... Поймали, правда. Уже на свободе.
    Ныне Woland догадывается о моих коварных планах по установке на его Macintosh'е (Performa 6200, процессор 603e,
    160MHz) Slackware 8 или 9. По-моему, не сильно против... По крайней мере... Как-то задумчиво смотрит на диски с
    дистрибутивом Slackware... И, как мне кажется, я знаю о чем он думает и чем мне предстоит развлечься...

    PS Этот FAQ будет продолжен за счет FAQ'ов по конкретным группам утилит.
    PPS 10x to Cobalt за весьма и весьма внимательное чтение и дополнения.
      Linux Slackware FAQ Часть 1.

      Мдя, вот ПРИШЛОСЬ FAQ написать этот, ибо задолбали уже, сил нету! >:(
      Зае..ли эти е..чие ниндзя!
      НАДАЕЛО! Вот! Все что написано ниже опробированно на собственной шкуре,
      и работает для дистрибутива Salckware 10.1.(Linux 2.4.29 kernel, KDE 3.3.2).

      Еще FAQ'и можно почитать тут:
      http://www.sensi.org/~ak/linuxfaq/rulinuxfaq.html
      http://faqs.org.ru/os/unix/rulinux4.htm
      http://www.opennet.ru/base/faq/rulinuxfaq.txt.html

      Q: Как настроить Иксы?
      A: 1. Есть замечательная консольная утилита xorgconfig
      2. Придеться поработать ручками /etc/X11/xorg.conf

      Q: Как прикрутить колесико мыши для Х?
      A: Правим файл /etc/X11/xorg.conf

      ExpandedWrap disabled
            Identifier  "Mouse1"
            Driver  "mouse"
            Option "Protocol"    "Auto"
            Option "Device"      "/dev/mouse"
            Option "Emulate3Buttons" "yes"
            # Добавляем эту строчку
            Option "ZAxisMapping" "4 5"


      Все! Наслаждаемся!

      Q: Изображение в Х`ах сдвинуто вправо, тогда как в Windows все ОК! Чаво делать?
      A: Снять штаны, пробежать вокруг компа с бубном, а затем запустить утилиту xvidtune.
      Нажимая 'Left' и 'Apply' добиться чтобы изображение встало на свое место.
      Правим файл /etc/X11/xorg.conf
      Вот так он выглядит у меня:

      ExpandedWrap disabled
          
           Section "Modes"
            Identifier  "MyMode"
            Mode "MyMode"
                DotClock 94.50
                Htimings 1024 1092 1188 1376
            Vtimings 768 769 772 808
            EndMode    
         
        EndSection
         
        Section "Monitor"
         
             Identifier  "ctx"    Subsection "Display"
                Depth       8
                Modes       "1280x1024" "1024x768" "800x600" "640x480"
                ViewPort    0 0
            EndSubsection
            
            Subsection "Display"
                Depth       16
                Modes       "1280x1024" "1024x768" "800x600" "640x480"
                ViewPort    0 0
            EndSubsection
             HorizSync   31-70
             UseModes "MyMode"
            VertRefresh 70-118
         
        EndSection
         
        Section "Screen"
            Identifier  "Screen 1"
            Device      "NVIDIA GeForce"
            Monitor     "ctx"
            DefaultDepth 24
         
         
            Subsection "Display"
                Depth       24
                Modes       "MyMode"
                ViewPort    0 0
            EndSubsection
        EndSection


      DotClock, Htimings, Vtimings взяты из xvidtune!
      Htimings HDisplay HSyncStart HSyncEnd HTotal
      Vtimings - аналогично.

      Перезапускаем иксы, наслаждаемся!

      Q: Как установить несколько раскладок в иксах?
      A: Правим файл /etc/X11/xorg.conf
      ExpandedWrap disabled
            Option "XkbRules"    "xorg"
            Option "XkbModel"    "pc101"
            Option "XkbLayout"   "us,ru"
            Option "XkbVariant"  "basic, winkeys"
            Option "XkbOptions"  "grp_led:scroll,grp:ctrl_shift_toggle"


      Q: Почему в KDE не работает переключение раскладок клавиатуры, хотя в xorg.conf все указано верно?
      A: Корень всех зол - графический переключатель раскладок - kxkb. Слишком уж умный он! Посему выдерним
      розы из з..цы KDE:
      1. Убиваем kxkb:
      ~/.kde/share/config/kxkbrc - нужно убить этот файл
      2. Если Вам нужен графический индикатор раскладки идем сюда:
      http://pascal.tsu.ru/other/xxkb/
      сливаем последнюю версию проги.
      Читаем инструкцию по установке и настройке http://pascal.tsu.ru/other/xxkb/README

      Пример моего конфига:
      ExpandedWrap disabled
        ! XXkb.xpm.path: /usr/X11R6/share/xxkb
         
        XXkb.group.base: 1
        XXkb.group.alt: 2
         
        XXkb.mainwindow.enable: no
        XXkb.mainwindow.appicon: no
        XXkb.mainwindow.geometry: 48x48
        XXkb.mainwindow.xpm.1: en48.xpm
        XXkb.mainwindow.xpm.2: ru48.xpm
        XXkb.mainwindow.xpm.3: su48.xpm
        XXkb.mainwindow.xpm.4:
        XXkb.mainwindow.in_tray: KDE
         
        ! XXkb.mainwindow.in_tray:
        ! possible values - KDE, KDE2, GNOME
         
        XXkb.button.enable: yes
        XXkb.button.geometry: 15x15-60+7
        XXkb.button.gravity: NorthEast
        XXkb.button.xpm.1: en15.xpm
        XXkb.button.xpm.2: ru15.xpm
        XXkb.button.xpm.3: su15.xpm
        XXkb.button.xpm.4:
         
        XXkb.controls.add_when_start: yes
        XXkb.controls.add_when_create: yes
        XXkb.controls.add_when_change: no
        XXkb.controls.focusout: no
        XXkb.controls.two_state: yes
        XXkb.controls.button_delete: yes
        XXkb.controls.button_delete_and_forget: yes
        XXkb.controls.mainwindow_delete: yes
         
        XXkb.mousebutton.1.reverse: no
        XXkb.mousebutton.3.reverse: no
         
        XXkb.bell.enable: no
        XXkb.bell.percent: -50
         
        XXkb.ignore.reverse: no
         
        #Убиваем индикатор на рабочем столе и на панели задач
        XXkb.app_list.wm_class_name.ignore: kdesktop kicker
        !XXkb.app_list.wm_name.ignore: "KDE Desktop"


      Имя класса окна можно узнать при помощи утилиты xprop.
      Кидаем в автостарт KDE:
      $HOME/.kde/Autostart
      Наслаждаемся.

      Q: Поставил Windows, слитела lilo, что делать?
      A: Загружаемся с CD линуха.
      ExpandedWrap disabled
           #mount /dev/ВАШ_ДИСК /mnt
           #chroot /mnt
           #lilo
           #reboot


      Q: Как руссифицировать Linux?
      A: Процесс описан здесь: Руссификация Linux (куча локалей) Slackware "Etta"

      Q: Как из консоли узнать свободное место на диске?
      A: Смотрите команду df.

      Q:Мне очень неудобно загружать графическую оболочку из консоли. Можно ли сделать, чтобы при загрузке линукса она загружалась сразу?
      A:Можно, в файле /etc/inittab поправить строчку id:3:initdefault: на id:4:initdefault:

      Q: Как распаковать tar архив?
      A: tar -xvf arc.tar -C ./dir

      Q: Как подключить Flash drive?
      A: Читаем пример тут USB, FlashDisk...

      Turkish, который когда-то был Blackbooker
        GNOME bindings

        Добавлено
        gcc + среда = Dev-Cpp

        Добавлено
        Многопоточность звука

        Добавлено
        CHROOT'нутые.

        Добавлено
        Gentoo: emerge

        Добавлено
        X3J16/97-14882

        Добавлено
        WinE

        Добавлено
        Руссификация Linux (куча локалей) Slackware "Etta"

        Добавлено
        Web-cam & мелкоскоп

        Добавлено
        Vi, Vim, gvim,...

        Добавлено
        Настройка USB устройств

        Добавлено
        ФСы -- ext2, ext3, reiser.

        Добавлено
        USB, FlashDisk...

        Добавлено
        GNOME+JAVA

        Добавлено
        Стили записи кода

        Добавлено
        Перекодировка через recode

        Добавлено
        Стеганографическая файловая система.

        Добавлено
        Методики оптимизации в GCC.
        ODBC & *NIX

        Добавлено
        GCC, LD, AR ...

        Добавлено
        Sound
        Ответ из семизвездочного отеля...

        Добавлено
        C++ IDEs (исповедь ламера)
        SRP (прозрачное шифрование telnet и ftp).
        Kernel configuration Mini-HOWTO (not completed)
        Winmodem...
        libsafe
        Shells

        Добавлено
        PGP (GNU Privacy Guard) -- GPG
        GNOME, KDE, Photon, mwm, CDE... X Windows!
        SAP DB
        _НЕ_ детская оптимизация.

        Добавлено
        Ползучая оптимизация, или ставить ли новое ядро?
        Инструменты для создания игр.
        Перекодировка через recode
          Справочник команд.
          Надо заметить, весьма и весьма краткий. Собственно, именно "командам", точнее
          "утилитам" посвящён целый стандарт из семейства POSIX. Однако, я не аппелирую
          к нему, т.к. в ряде случаев, в GNU/Linux именно эти команды есть, но есть и
          дополнения/изменеия по отношению к стандарту. Одновременно я не учитываю все
          пакеты, которые могут быть установлены в Вашей системе. Я -- БМП чего Вы там
          по-наставили.

          Изменения касаются аспектов:
          1. Набор утилит расширен по отношению к стандарту.
          2. Опции командной строки утилиты могут отличаться от тех, которые приведены
          в стандарте.
          3. Для стандартных утилит -- функциональное наполнение.

          Самое главное -- есть стандартный набор утилит, независящий от названия ОС из
          UNIX-like семейства, позволяющмй решать поставленные задачи стандартным образом
          и при этом чувствовать себя весьма кофортно и сухо. Не забывайте только в man
          посматривать, если не уверены в чём-то.

          1. Работа с файлами.
          cp - копирование.
          rcp- копирование на удалённую систему (небезопасно!)
          dd - прямое копирование.
          file - определение типа файла.
          cat - просмотр.
          head - просмотр начала файла.
          tail - просмотр конца файла.
          ls - просмотр содержимого каталога.
          pwd - определение текущего каталога.
          cd - переход по каталогам. Переход в домашний каталог -- cd ~/
          ln - создание ссылки.
          less и more - постраничный просмотр файлов.
          mv - перенос.
          rm - удаление файла.
          rmdir - удаление каталога.
          cksum - контрольная сумма файла.
          chsh - изменение дефолтного интерпретатора команд.
          csplit - разбиение файла на куски по критериям.
          split - рубка файла на куски равного размера.
          merge - склейка файлов из кусков.
          wc - подсчёт данных по содержимому файла.
          chmod - изменение прав доступа к файлу.
          chgrp - изменение группы-владельца файла.
          newgrp - смена текущей группы.
          chown - смена владельца файла.
          recode (если ставили) или iconv - конвертирование файла из кодировки в
          кодировку. Для России актуально.
          sed - убойный (читай, построчный) редактор. Управление редактором и редактирование
          задаются в виде последовательнсти команд. Удобен тем, что позволяет написать скрипт,
          коим патчить некие файлы сырцов.
          vi (vim) - вполне работоспособный редактор с подсветкой синтаксиса. Привыкнуть,
          правда, надо.
          ispell - дефолтная проверка орфографии.

          2. Поиск.
          locate, find - поиск файла.
          which - полный путь к файлу.
          grep, egrep - поиск по шаблону. egrep - расширенная команда.
          fgrep - поиск по фаблону в файле.
          whereis - поиск файлов для команды.
          apropos - поиск страницы в руководствах.
          strings - поиск строки в бинарных файлах.
          cmp - посимвольное сравнение двух файлов.
          comm - сравнение элементов в двух отсортирванных файлах.
          diff - построчное сравнение двух файлов. Удобно для подготовки патчей (см. patch).
          diff3 - построчное сравнение трёх файлов.
          fuser - кто открыл этот файл?

          3. Программирование.
          3.1 Стандартные средства.

          Примечание по компиляторам -- для каждого целевого процессора генерируется
          свой объектный файл, т.е., объектный файл, содержащий оп-коды целевого
          проца. Компиляторы являются кросс-компиляторами. Т.е., вполне возможно строить
          на одной платформе объектный код для различных целевых платформ.

          Примечание по линкеру -- по дефолту выдаются ELF-файл. См. опции.
          Можно заказать более старый формат -- a.out (в просторечии, на самом деле
          COFF -- Common Object File Format).

          as, gas - ассемблер. GNU-версия.
          cc, gcc - компилятор С. GNU-версия.
          g++, cpp - компилятор/прекомпилятор С++. GNU-версия.
          ld - линкер (редактор связей объектных файлов).
          make, pmake - сборщик программ. p-парралельный.
          imake - подготовка файлов для make/pmake. Препроцессор С.
          m4 - макропроцессор.
          bison, yacc - создание таблиц синтаксического разбора.
          flex - анализатор лексем. Не путать со Flex Ferrum'ом! :D:D:D
          ranlib - просмотр/восстановление таблицы архивных имён.
          strip - удаление отладочной информации/таблиц ссылок из исполняемого файла.
          rpcgen - генератор из RPC кода на С.
          nm - объектные имена объектного файла.
          gawk - потоковая обработка строк/записей в файле.

          3.2 Средства поддержки проектов.
          ctags, gctags, etags - создание списка имён в исходном тексте.
          gctags - для Vi, etags - для Emacs.
          gprof - профилировщик.
          gdb - отладчик.
          strace (для Solaris - truss) - трассировка системных вызовов и
          сигналов.
          size - размер объектного файла в байтах.
          patch - управление патчами сырцов.
          cvs, rcs - системы управления исходными кодами. CVS -- более поздняя.
          RCS легда в основу CVS. по этой причине, в CVS есть команды и для CVS и для более
          ранней версии -- RCS.

          4. Управление процессами.
          who - кто и чего в системе делает.
          ps - просмотр данных о процессах.
          top - то же, что и ps, но с задаваемым интервалом обновления.
          kill - убийство (безжалостное) процесса.
          hostname - просмотр/изменение имени хоста.
          date - просмотр/изменение даты/времени системы.
          env, printenv - показ переменных среды.
          stty - изменение опций терминала.
          df - свободное место на диске.
          du - использование диска.
          cron - исполнение заданий из crontab'ов пользователей/системы. Идеально для повторяющихся
          периодически задач.
          crontab - редактирование правил запуска заданий через демона cron.
          at - размещение задания в очереди.
          atq - просмотр очереди заданий.
          atrm - удаление задания из очереди.
          batch - запуск в "пакетном режиме".
          nohup - запуск процесса с игнорированием прерываний с клавиатуры. Работает даже после логаута пользователя.
          nice, renice - изменеие приоритета задачи.
          screen - запуск виртуального терминала.
          su - переключение между учётными записями.
          uptime - время uptime'а системы.

          5. Упаковщики/распаковщики.
          tar - tape archive.
          cpio
          gzip, gunzip - .gz или .Z.
          bzip2 - есть не везде. Но жмёт лучше .gz.
          shar - архив командного интерпретатора.
          zcat - просмотр упакованного файла.

          6. Система печати UNIX.
          pr - форматирование для печати.
          ghostscript - отображение файлов в .PS или .PDF.
          lpc - управление принтером.
          lpstat - состояние принтера.
          lpq - просмотр очереди печати.
          lpr - отправить задание на печать.
          lprm - удалить задание из очереди печати.

          7. Сеть TCP/IP.
          ifconfig - конфиг. сетевых интерфейсов.
          netstat - статистика сети.
          ping - ясно, IMHO.
          traceroute - исследование пути к хосту.
          route - управление таблицей маршрутов.
          rpcinfo - инфа об RPC.
          portmap - биндинг демонов на порты.
          rarp - таблицы реверсного ARP (Ethernet-based only).
          arp - таблицы ARP (Ethernet-based only).
          dig - исследование DNS.
          iptables - Linux-only firewall.
          systat - инфо об удал. системе.
          whois - стоять, ?ля! Лицом к стене! Чей домен? Диапазон адресов, быстро! Мыло и телефон админа. Не шевелиться... Ой, чего-то я гоню... :D:D:D

          8. Управление модулями ядра.
          Linux-only!
          depmod - опеределение зависимости модуля.
          modprobe - попытка загрузки модуля. И загрузки всех связанных с ним модулей.
          lsmod - список загруженных модулей.
          insmod - загрузка отдельного модуля.
          rmmod - удаление (выгрузка) модуля.
          dmesg - сообщения при загрузке системы/модулей.

          9. User'ы.
          useradd - создать пользователя.
          passwd - поменять ему пароль.
          usermod - поменять инфу о нём.
          userdel - удалить его.
          groupadd - создать группу.
          groupmod - изменить инфу о группе.
          groupdel - удалить группу.
          newusers - пакетное добавление пользователей.
          chpasswd - групповое изм. паролей.
          grpck - проверка целостности сист. файлов групп.
          pwck - проверка целостности сист. файлов паролей.
          w - кто есть в системе.
          whoami - проверка текущего пользователя.
          lastlog - последние подключения.
          wall - послать сообщение на все терминалы.

          10. Запуск/останов системы.
          init - изменение уровня работы. Перезапуск системы или отдельных служб, относящихся к соотв. уровню.
          telinit - изменение режима работы.
          shutdown, halt - вариации на тему останова системы.
          reboot - перезагрузка.
          runlevel - показ того, на каком уровне находимся.

          Сообщения были разделены в тему "slackware"
          Сообщение отредактировано: the_Shadow -
            Полезные советы
            В этом разделе собраны различные советы по Linux, собранные из различных источников.

            1. Как разбить один большой файл на несколько маленьких?
            Чтобы разбить один большой файл на несколько маленьких используйте команду:
            split --bytes=SIZE filename

            2. Как получить список устройств на шине PCI?
            Получить список устройств на шине PCI можно таким образом:
            /sbin/lspci

            3. Как скопировать один диск на другой?
            Скопировать один диск на другой:
            mount /dev/hdXX /newdisk # монтируйте новый диск сюда
            cd /
            find . -mount | cpio -pdumv /newdisk
            Не забудьте:
            1) установите root на /newdisk
            2) редактируйте /etc/fstab, чтобы указать на новое расположение (где диск БУДЕТ находиться)
            3) Соответствующим образом переконфигурируйте lilo (или примените loadlin для первой загрузки или, что еще лучше GRUB)
            4) Очень важно! Напоследок mkdir /proc
            4. Как добавить конфигурации по умолчанию для программ?
            Если вы хотите добавить конфигурации по умолчанию для своих программ (которые размещаются в каждой домашней директории), копируйте эти конфигурационные файлы в /etc/skel. Каждый раз, когда вы добавляете нового пользователя, эти файлы будут скопированы в домашние директории пользователей.

            5. Как быстро получить информацию о системе? Быстро получить информацию о системе можно используя команду procinfo.Если этого недостаточно - смотрите файловую систему /proc. Например,/proc/interrupts, /proc/cpuinfo...

            6. Как убрать возможность перезагрузки по нажатию клавиш CTRL-ALT-DEL?
            Убрать возможность перезагрузки по нажатию клавиш CTRL-ALT-DEL можно закомментировав строку
            ca::ctrlaltdel:/sbin/shutdown -t5 -rf now
            в файле /etc/inittab.

            7. Быстрый метод завершения перезапускаемого(respawning) процесса?
            Очень быстрый метод завершения перезапускаемого(respawning) процесса в вашем /etc/inittab - это переключение уровней исполнения. Например, если вы имеете строку:
            1:1235:respawn:/usr/sbin/mgetty /dev/ttyS1 переключение на уровень 4 остановит перезапускаемый процесс.

            8. Как ограничить потребление ресурсов системы пользователями? Если вы запустили большую систему с большим количеством пользователей, может быть очень важно ограничить потребление ресурсов системы пользователями. Вы можете контролировать эти ограничения с помощью модуля PAM и файла /etc/pam.d/limits.conf. Большинство современных дистрибутивов используют PAM для аутентификации. Пример ограничений для группы users sample of limits for the users group. @users hard core 0
            @users hard nproc 50
            @users hard rss 5000
            Это не позволяет создавать файлы core, ограничивает пользователя до 50 процессов и по использованию памяти до 5МБ

            9. Удаленное журналирование
            Удаленное журналирование - прекрасная вещь, если вы используете более чем один компьютер, который вы администрируете. Для хоста который будет получать логи других компьютеров, syslog нужно запускать с опцией -r, чтобы позволить удаленную запись логов. На компьютерах которые будут посылать свои системные логи, добавьте в ваш /etc/syslog.conf запись вида:
            *.* @bighost
            чтобы записывать все на bighost. Перезапустите syslogd. Обратите внимание, что в syslog.conf используются tab, а не пробелы.

            10. Как выполнить команду как root?
            Чтобы выполнить команду как root, используйте команду sudo. Вы должны иметь разрешения чтобы сделать это.(Устанавливается root-ом, который использует команду visudo для редактирования файла /etc/sudoers).

            11. Команда free Команда free выдает информацию о памяти и swap.

            12. Как сделать дамп N-консоли? Команда cat /dev/vcsN сбрасывает дамп N-консоли.

            13. Как запретить вход всех пользователей в систему?
            Чтобы запретить вход всех пользователей в систему (кроме root) без перезагрузки создайте файл /etc/nologin. Содержимое этого файла будет отображаться когда пользователь попытается войти в систему.

            14. Ограничение на выполнение команды su
            Чтобы разрешить определенным пользователям делать su, что лучше чем всем по умолчанию, редактируйте /etc/login.defs и установите строку SU_WHEEL_ONLY в yes. Затем вам нужно добавить пользователей, которым нужно делать su в группу 0, что делается редактированием файла /etc/groups.

            15. Нужно узнать какой сокет заняла программа?
            lsof -i -U
            fuser port_num/tcp
            а также:
            netstat -pvlA inet

            16. Как примонтировать директорию из одной части файловой системы в другую?
            В linux 2.4.x ядрах:
            mount --bind какую_директорию_монтировать куда_монтировать

            17. Нужно посмотреть параметры и возможные опции для модуля ядра Linux? Воспользуйтесь командой modinfo. Например:
            Информация о авторе:
            modinfo -a модуль
            Список возможных параметров.
            modinfo -p модуль

            18. Случайные пароли:
            head -c8 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p'

            19. Как распаковать RPM-файл не устанавливая его:
            rpm2cpio file.rpm | cpio -idmuv --no-absolute-filenames

            20. Как правильно создать каталог /tmp?
            Было ли у вас такое, что не запускается сервер шрифтов, хотя с конфигурацией сервера все в порядке? Одна из причин, неправильные права доступа на каталог /tmp. Команда stat должна показывать 1777, т. е. режим drwxrwxrwt. Именно эти права доступа необходимы для правильной работы того же сервера шрифтов (.X11-unix и .font-unix.) Таким образом необходимо сделать следующее:
            mkdir /tmp
            chmod 1777 /tmp
            "t" в данном случае означает что файлы в каталоге могут удалить только собственник и root, хотя право записи в каталог имеют все пользователи.

            21. Как включить при загрузке клавиши numlock? Если вы хотите включить все клавиши numlock при загрузке, добавьте следущее в ваши загрузочные скрипты, например в rc.local:
            echo -n "Turning on numlock LEDs: "
            for tty in /dev/tty[1-6] /dev/tty1[2]; do
            setleds -D +num < $tty &
            done
            echo "done."

            22. Как установить точное время?
            Отличный способ установить на машине точное время - использовать каманду ntpdate:
            ntpdate <ntpserver>
            Конечно, нужно иметь установленный пакет ntp и возможность соединения с сервером NTP.Например, я использую
            ntpdate ntp.ru
            Лучше использовать ip-адрес, чтобы избежать преобразования доменного имени в ip-адрес.

            23. Еще один способ получить полезную информацию о системе
            Еще один способ получить полезную информацию о системе - команда vmstat. Она выводит информацию использовании памяти, процессора, областях swap и т.п.

            24. Как получить информацию о ваших загруженных модулях ядра
            lsmod - хороший способ получить информацию о ваших загруженных модулях ядра.

            25. Полезная информация о ядре
            Левый или правый CTRL, ALT, или SHIFT + scrollock покажут вам полезную информацию о ядре.

            26. Как посмотреть информацию полученную от мыши на стандартный вывод?
            Если у вас трудности с мышью, mev -i сбросит информацию полученную от мыши на стандартный вывод.

            27. Как посмотреть какие порты открыты?
            netstat -a позволит вам увидеть все tcp и udp порты, которые открыты на вашей системе.

            28. Как посмотреть какие порты открыты?
            netstat -a позволит вам увидеть все tcp и udp порты, которые открыты на вашей системе.

            29. Как установить время CMOS?
            Чтобы установить время CMOS системному используйте hwclock --systohc, а hwclock --hctosys - установит системное время, как время CMOS clock.

            30. Как долго ваша система была запущена?
            Чтобы увидеть, как долго ваша система была запущена, наберите uptime.

            31. Новое ядро
            Хорошая идея, держать старое ядро как резерв до тех пор пока вы не удостоверитесь что новое ядро работает должным образом. Файл /etc/lilo.conf может выглядеть примерно так:
            image=/boot/bzImage
            label=linux
            read-only
            root=/dev/hda2
            image=/boot/vmlinuz-2.2.14-12
            label=linux-old
            read-only
            root=/dev/hda2
            Метка linux для загрузки нового ядра, and linux-old - загрузка старого. Не забывайте запустить /sbin/lilo перед перезагрузкой системы, чтобы иметь возможность загрузиться с нового ядра.
            32. System.map
            Вешь, о которой иногда забывают упомянуть, когда вы обновляете свое ядро - это файл System.map (обычно располагающийся в каталоге /boot), который не соответствует новому ядру. После перезагрузки вы увидите сообщения о некорректной версии ядра. После построения нового ядра не забудьте скопировать новый файл System.map из каталога /usr/src/linux в загрузочный каталог вашей системы (/boot).

            33. Как быстро скомпилировать ядро
            Самый простой способ скомпилировать ядро это выполнить все команды make на одной строке набрав:
            make dep clean bzImage modules modules_install
            Если вы просто пропатчили свое ядро тогда просто сделайте:
            make oldconfig dep clean bzImage modules modules_install.

            34. Как увидеть сообщения выдаваемы ядром?
            Увидеть сообщения, выдаваемые ядром на экран при загрузке системы можно набрав команду dmesg.
            например, о распределении прерываний
            dmesg | grep -i irq

            35. Запись CD диска
            Команды cdrecord, полезные при записи CDROM:
            mkisofs -V "volume_ID" -D -l -L -N -J -R -v -o cdrom.iso директория
            cdrecord -dev=0,1,0 -speed=4 -v cdrom.iso
            Для подключения IDE накопителя добавить в linux lilo append="hdc=ide-scsi"
            ( hdc - ваш привод?) и включить в ядре поддержку эмуляции SCSI.
            -toc -atip -prcap - выдать полную информацию о накопителе.
            -scanbus - определить параметры для -dev (можно /proc/scsi/scsi)
            -dummy - запись в режие тестирования (без реального прожигания диска).
            -fix - исправить недописавшийся диск.
            -eject - после записи вытащить CD
            -blank=all очистить CR-RW перед записью.
            mkisofs -print-size - расчитать сколько потребуется места для записи директории

            36. Как смонтировать образ компак-диска?
            Смонтировать образ компакт-диска можно таким образом:
            #mkdir /mnt/iso
            #mount -t iso9660 -o loop cd-image.iso /mnt/iso
            (Разумеется, для операции монтирования нужно иметь права root). Теперь каталог /mnt/iso доступен для чтения содержимого образа компакт-диска.

            37. Как узнать метку компакт-диска?
            Узнать метку компакт-диска можно так:
            alias cdlabel='LABEL=`dd if=/dev/cdrom bs=1 count=32 skip=32808 2>/dev/null` && echo $LABEL'
            Удобно использовать альяс в инициализационных скриптах shell.

            38. Как очистить директорию /tmp (например, после падения X Window System)?
            Никогда не используйте команду "rm -r /tmp/.*", потому что кроме файлов типа ".tempfile" эта команда распространяется и на "/tmp/..". Вместо этого наберите "rm -rf /tmp/.??* /tmp/*". Вы можете поместить эту команду в "/etc/rc.d/init.d/syslog" в секцию "stop)" - таким образом каталог /tmp будет очищаться при каждом выключении. (Можно просто удалить /tmp и создать его заново - для этого нужно выполнить команды mv /tmp, mkdir /tmp и chmod 1777 /tmp).

            39. Нужна запись всей вашей интерактивной сессии в shell?
            Если вам нужна запись всей вашей интерактивной сессии в shell, воспользуйтесь командой script.
            script &ltscriptname>
            Когда сессия завершена, файл закрывается.

            40. Поиск в обратном направлении по истории команд
            Если вы применяете bash, вы можете сделать поиск в обратном направлении по истории команд:
            нажмите CTRL-R и печатайте что вы хотите искать (работает точно также как в Emacs).
            Если имеется много похожих строк в истории, повторите CTRL-R, чтобы увидеть их все.

            41.Как можно перемещаться между текущим и предыдущим каталогами?
            Bash позволяет вам перемещаться между текущим и предыдущим каталогами используя дефис после команды cd. Например вы были в каталоге /etc, затем дали команду cd /usr/src/linux. Вернуться назад можно применяя cd -.

            42. Если вы хотите редактировать предыдущую команду
            В bash если вы хотите редактировать предыдущую команду в текстовом редакторе вместо командной строки, используйте команду fc.

            43. Очистка экрана в bash
            CTRL-l в оболочке bash очистит экран, и текущую строку выведет на верх экрана.

            44. Как быстро перейти в свой домашний каталог?
            Вместо долгого cd /home/user вы можете сделать проще - cd ~ или cd, чтобы быстро перейти в свой домашний каталог.

            45. Полезные сочетания клавиш в bash В bash, CTRL-U удалит все слева от курсора, CTRL-K - все что справа от курсора. ALT-b - перейти на слово назад, а ALT-f вперед.

            46. Прокрутка текста в консоли
            Консоль Linux имеет прекрасную особенность - прокрутка текста. Используйте SHIFT-PGUP и SHIFT-PGDN для прокрутки текста вверх и вниз. Примечание: используйте обычные PGUP и PGDN клавиши, а не с клавиши num.

            47. Если вы набрали длинную команду и передумали запускать ее.
            Если вы набрали длинную команду и передумали запускать ее, не удаляйте ее. Просто добавьте # на начало строки и нажмите Enter. Команда не будет выполнена, но bash запишет ее в историю команд, так что позднее вы можете выполнить ее, предварительно убрав символ #.

            48. Как поменять местами два символа?
            CTRL-T в bash меняет местами два символа; полезно для исправления опечаток.

            49. Как посмотреть вывод команды и одновременно записать его в файл?
            Посмотреть вывод команды и одновременно записать его в файл можно с помощью команды:
            tee $ls | tee logfile.txt

            50. Как запретить хранитель экрана в текстовом режиме?
            Запретить хранитель экрана в текстовом режиме - напечатайте setterm -blank 0.

            51. Автозавершение команд в bash
            Bash поддерживает автозавершение команд. Наберите часть слова и нажмите TAB.
            Например, чтобы войти в каталог netscape-communicator-4.5-linux просто напечатайте cd nets и нажмите TAB и bash автоматически завершит имя, если есть только одно совпадение. Если более одного файла совпадают с набранной строкой вы получите список вариантов. Добавляйте символы для точного совпадения.

            52. Средство для более быстрого поиска файлов, чем find
            Средство для более быстрого поиска файлов, чем find - команда locate, которая использует базу данных для поиска. Для обновления этой базы часто используется cron. Или вручную - updatedb.

            53. ScrollLock в консоли
            Включение ScrollLock в консоли приостановит выполнение текущей команды bash, такой как ls, du or mpg123.

            54. Как переключиться на tty, на котором вы были в последний раз?
            В bash нажатие ALT-PrintScreen сразу вас переключит на tty, на котором вы были в последний раз.

            55. Список всех исполняемых файлов в системе, которые присутствуют в вашем $PATH?
            Нажмите TAB + scroll-lock или еще проще - два нажатия на клавишу TAB. Результат один и тот же.

            56. Как отключить сигнал "beep" в течение автоматического завершения командной строки?
            Добавьте либо в ~/.inputrc или в /etc/inputrc для визуального звонка:
            set bell-style visible
            совершенно без сигнала:
            set bell-style none

            57. Как выполнить команду bash определенное количество раз?
            Чтобы выполнить команду bash определенное количество раз попробуйте такой прием:
            n=0;while test -$n -gt -10; do echo n=$n; n=$[$n+1]; done
            Что распечатает "n=0", "n=1", и так далее 10 раз.

            58. Как сделать undo в bash?
            Вы можете использовать CTRL-_ or CTRL-X, CTRL-U чтобы сделать undo в bash.

            59. Еще один способ использования истории команд
            Еще один способ использования истории команд - если последняя набранная команда была например less filename, то !l - запустит ее заново. Хотя если вы потом запускали lpr и ln, и хотите запустить less снова, тогда нужно набирирать !le.

            60. Раздражают сигналы спикера вашего компьютера когда вы ошиблись?
            Попробуйте выполнить следующую команду bash:
            echo -ne '\033[11;0]'
            которая устанавливает продолжительность сигнала для консоли равным 0 секунд. Чтобы сделать это автоматически добавьте эти строки в /etc/profile или ваш ~/.profile. Подробную информацию о том, как установить частоту и длительность гудка, читайте в &ltVisual bell mini-Howto&gt.

            61. Как перейти в каталог с длинным именем?
            Если вы хотите перейти в каталог с длинным именем, можно напечать лишь часть слова и затем *. Например, перейти в каталог с именем "Give_Piece_Of_Chance" можно так:
            cd Give*.

            62. Как повторить последнее слово (или множество символов) предыдущей командной строки?
            В bash, наберите ESC затем симол подчеркивания чтобы повторить последнее слово (или множество символов) предыдущей командной строки.

            63. Случайно открыли в консоли бинарный файл, например командой cat?
            Попробуйте напечатать reset, другие способы:
            printf "\033c",
            tput sgr0,
            tput reset,
            /bin/echo -ne "\017"
            cat, затем CTRL-O, Enter, CTRL-D.
            А вот так можно позабавиться:
            cat, затем CTRL-N, Enter, CTRL-D.

            64. Как послать данные на желаемый терминал?
            Вы можете использовать все доступные терминалы, даже если они в применении, чтобы послать данные на тот терминал, на который хотите. Например:
            tail -f /var/log/messages > /dev/tty12
            Для посылки любых сообщений на tty12.

            65. Циклическое переключение через все доступные консоли.
            Многие клавиатурные раскладки позволяют циклическое переключение через все доступные консоли используя Alt-RightArrow и Alt-LeftArrow.

            66. Как выполнить родную команду системы, если используются алиасы?
            Часто используете альясы shell (например, прописанные в ~/.bashrc), но иногда необходимо выполнить родную команду системы? Добавьте обратный слэш перед командой, это игнорирует псевдоним shell.

            67. Как найти все файлы в каталоге, которые содержат строку?
            Найти все файлы в каталоге, которые содержат строку:
            find . -type f -print | xargs grep -li "search string"

            68. Как сделать чтобы программа ожидала нажатия какой-либо клавиши пользователем?
            При написании скриптов shell часто возникает необходимость того, чтобы в процессе выполнения программа ожидала нажатия какой-либо клавиши пользователем. Это можно сделать таким способом:
            stty raw; dd if=$(tty) of=/dev/null bs=1 count=1; stty -raw

            69.Как перенаправить стандартный вывод и поток ошибок в один и тот же файл?
            Чтобы перенаправить стандартный вывод и поток ошибок в один и тот же файл, используйте `&>'.

            70. Как сохрать man-страницы в текстовый файл?
            Самый простой способ сохранения man-страницы в текстовый файл - "man name | col -b > name.txt".

            71. Все символы в консоли стали нечитаемыми
            Если все символы в консоли стали нечитаемыми, наберите:
            "echo -ne "\017", "stty sane" или просто "reset".

            72. Как перевести имена файлов в директории в нижний регистр? Самый простой способ перевода всех имен файлов из директории в нижний регистр:
            "for x in *; do mv $x `echo $x | tr [A-Z] [a-z]`; done".

            73. Как быстро переименовать файл?
            Чтобы быстро переименовать файл, используйте команду:
            "mv /usr/local/bin/{старое_имя,новое_имя}".

            74. Как удалить всю директорию без лишних запросов?
            Чтобы удалить сразу всю директорию без лишних запросов, используйте:
            rm -rf имя_директории

            75. Как создать сразу несколько директорий?
            Создание сразу нескольких директорий - "mkdir -p dir1/dir2/dir3".

            76. Как правильно выключить компьютер?
            Правильное выключение компьютера - команда "shutdown -h now".
            Перезагрузка - "shutdown -r now" или просто "init 5".

            77. Как передать весь вывод одной команды на вход другой команде?
            Чтобы передать весь вывод одной команды на вход другой команде, используется символ "|".
            Таким образом можно делать сложные конструкции (например, "ls | sort -r | less").

            78. Как следить за постоянно изменяющимися файлами?
            Чтобы следить за постоянно изменяющимися файлами (например, за системными логами), используйте команду tail.
            Пример: "tail -15 /var/log/syslog" - постоянно показывает последние 15 строк.

            79. Как искать текст в файлах?
            Для поиска текста в файлах используется команда - "grep "ваш текст" /where/to/search".
            Если при поиске не нужно учитывать регистр - "grep -i "ваш текст" /where/to/search"

            80. Как заменить одно слово на другое вомногих файлах?
            Для замены одного слова на другое сразу же во многих файлах можно использовать этот скрипт
            perl -pi -e 's/oneword/anotherword/g' *. Если нужно сделать это же с одним файлом, поставьте его имя вместо " * ".

            81.Как посмотреть информацию о запущенных процессах?
            (Обычно используется "ps -aux", и потом "kill <номер процесса>"). Так же есть специальные программы - такие, как top, gtop и ktop.

            82. Как посмотреть свободное место на диске?
            Чтобы посмотреть свободное место на диске, используйте команду df. Так же в KDE есть программа kdf (KDiskFree).

            83. Как узнать размер всех директорий в данном каталоге?
            Чтобы узнать размер всех директорий в данном каталоге, выполните команду:
            find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn

            84. Как перейти из графического режима в текстовую консоль?
            Чтобы перейти из графического режима в текстовую консоль, нажмите Ctrl+Alt+F1. (Ctrl+Alt+F2 - на вторую консоль, Ctrl+Alt+F3 - на третью консоль, etc). Для того, чтобы вернуться обратно в Иксы, обычно используется комбинация клавиш Alt+F7.

            85. Как увидеть под Linux другой подключенный жесткий диск?
            Чтобы увидеть под Linux другой подключенный жесткий диск, надо примонтировать (командой mount) разделы, которые на новом винчестере есть. Для этого надо определить, каким винчестер стоит: hdb, hdc или hdd. Для этого нужно всего лишь сообразить, как он подключен: primary slave - это hdb, secondary master - это hdc, secondary slave - это hdd. Теперь надо просмотреть, какие диски на винте есть. Для этого запускаем cfdisk для того винта, который мы определили на предыдущем шаге, например, для hdb: cfdisk /dev/hdb. Глядим, какие разделы есть. Например есть FAT32 (или он еще обозначается как WIN95) диск /dev/hdb1. Мы хотим его подключить скажем к каталогу /mnt/disk. Тогда: mount -t vfat /dev/hdb1 /mnt/disk. Здесь: параметр "-t" указывает тип файловой системы, в нашем случае это vfat, что соответствует fat32.

            86. Работа с CD/R и CD/RW.
            Стираем так: cdrecord -v blank=fast(или all) dev=<Ваш девайс>. Образ делаем так: mkisofs -r -J -o <имя_файла_образа.iso> <то_чего_в_образ_загоняем> Пишем так: cdrecord -v -eject speed=8 dev=<Ваш девайс> file.iso. Если надо мультисессионный диск, то добавляем -multi. Так же существует много графических оболочек, которые в своей работе используют эти же простые команды.

            87. Как разрезать файл на несколько частей?
            Чтобы разрезать файл на несколько частей, используйте команду split.
            Формат: "split [-b количество байт] [-l количество линий] имя_файла".

            88. Автодополнение с помощью Tab.
            Чтобы запустить, скажем, программу mysql_convert_table_format, достаточно набрать в командной строке mysql_co и нажать Tab. Bash, зная названия доступных команд, сам допишет имя. (Если в системе есть несколько команд, начинающихся с заданного префикса, он выдаст их перечень, а если их более 100, то предварительно уточнит, действительно ли нужен такой огромный список. Кстати, с помощью данного свойства bash легко выяснить число доступных команд: для этого достаточно нажать клавишу табуляции, находясь в начале строки). А когда название команды введено (и после него поставлен пробел), интерпретатор позволяет тем же способом ввести имя файла.

            89. Как повторить ранее введенную команду?
            Чтобы повторить ранее введенную команду, нажмите стрелку вниз. Чтобы вернуться - стрелку вверх. (Bash ведет лог всех введенных команд).

            90. Как повторить ранее введенную команду, содержащую какое-нибудь слово?
            Чтобы повторить ранее введенную команду, содержащую какое-нибудь слово, наберите "!?string". Если вы наберете "!string", то эта ранее введенная команда тут же запустится.

            91. Как следить за списком файлов в реальном времени?
            Слежение за списком файлов в реальном времени - "watch -n 0 ls -l".
            Команда watch осуществляет периодический запуск других команд.

            ї Vadim Fedorov <fedorov@vadim.org.ua>
              Цитата
              76. Как правильно выключить компьютер?
              Правильное выключение компьютера - команда "shutdown -h now".
              Перезагрузка - "shutdown -r now" или просто "init 5".


              init 6.

              init 4 -- уход на перекур ;)
                Действительно, описька вышла :) Править не буду, ибо потом крокозяблы будут (у меня KOI-8)

                Вдогонку еще советы:

                ------------------------------------------
                Как преобразовать в текстовый формат русскоязычный PDF или PostScript файл
                Единственное нормальное средство для конвертации в текст из PDF или PS с кириллицей внутри,
                утилита pdftotex из комплекта xpdf:
                pdftotext -enc KOI8-R test.pdf
                pdftotext -raw -enc KOI8-R test.pdf
                --------------------------------------------------------
                Иногда в большом конфигурационном файле так много коментов, что "за лесом не видно деревьев". Эти комментарии можно убрать :

                cat /etc/samba/smb.conf | sed -e '/^[#;]/ d;/^$/ d' > smb.conf.small

                -------------------------------------------------------------------
                Как вытащить все MP3 файлы из кеша Squid
                purge -n -a -s -c /etc/squid/squid.conf -C /tmp/MP3s/ -e '\.mp3|\.wav'
                Утилиту purge скачать можно здесь:
                http://www.wa.apana.org.au/~dean/sources/
                -----------------------------------------------------------------------
                Как в директории все русские названия файлов перевести в транслит

                #!/bin/bash
                for name in *;do
                mv "${name}" "`echo ${name} |tr " абвгдезийклмнопрстуфхцьыАБВГДЕЗИЙКЛМНОПРСТУФХЦЬЫ" "_abvgdezijklmnoprstufhc'yABVGDEZIJKLMNOPRSTUFHC'Y"|sed -e 's/ё/io/g;s/ж/zh/g;s/ч/ch/g;s/ш/sh/g;s/щ/sch/g;s/э/\`e/g;s/ю/yu/g;s/я/ya/g;s/ъ/"/g;s/Ё/Io/g;s/Ж/Zh/g;s/Ч/Ch/g;s/Ш/Sh/g;s/Щ/Sch/g;s/Э/\`Е/g;s/Ю/Yu/g;s/Я/Ya/g;s/Ъ/"/g;'`"
                done
                -------------------------------------------------------------------
                  проще выключать кнопкой power или командой poweroff

                  (нужен ACPI или APM)
                      Цитата the_Shadow @
                      FreeBSD, OpenBSD, NetBSD. Между ядрами
                      этих систем практически ничего общего, окромя трех букв в названии -- BSD


                      Это далеко не так: OpenBSD вообще является отслоением от ранней ветки NetBSD, что касается отношений NetBSD и FreeBSD: их ядра имеют общий код, заимствованный из 4.3BSD и 386BSD

                      А наличие букв BSD сегодня в первую очередь указывает на систему инициализации, причём вопреки приведённым выше данным отличной от System V, используемой в Linux (в большиснтве своём) или Solaris.
                          Цитата
                          Это далеко не так: OpenBSD вообще является отслоением от ранней ветки NetBSD, что касается отношений NetBSD и FreeBSD: их ядра имеют общий код, заимствованный из 4.3BSD и 386BSD

                          Идеологически это дааааавным-давно рзные продукты. Различное назначение сегодня с лихвой перечёркивает родство в прошлом.

                          FreeBSD, как правило, ставят на так называемые "боевые сервера". Причём, при всём при том, рабочее место админа остаётся под M$. Ну нет бы поставить одну систему... Так нет же... Обязательно много. И сразу.

                          OpenBSD имеет явные "задвиги" на почве тотальной безопасности. Могу сказать, к примеру, что OpenSSH пришёл к нам именно оттуда.

                          NetBSD характерна поддержкой всяко-разных сетевых девайсов.

                          Однако... Несмотря на все "вкусности" и полезности, основна масса кода пишется именно для Linux и под Linux, попутно портируясь на все остальные платформы.

                          Да, кстати, по поводу витуальной машины в Linux -- ряд идей был взят и из FreeBSD, и рождён в головах "kernel hackers". Сетевой стек до версии (рискую ошибаться) NET-3, был заимствован из FreeBSD так же... Много чего.

                          Цитата
                          А наличие букв BSD сегодня в первую очередь указывает на систему инициализации, причём вопреки приведённым выше данным отличной от System V, используемой в Linux (в большиснтве своём) или Solaris.

                          И набора утиля, добавлю, равно каки ряда внутри-системных соглашений. Ну, кому интересно -- поищите в Сети SystemV, BSD, ... все дела... :D:D:D

                          Прикол в том, что система инициализации в той же Слаке (к примеру) явно BSD'шная (это и неудивительно -- изначально и FreeBSD и Slackware распространялись WalnutCreek CD-ROM). Далее. Установка софта -- "pkgtool", "installpkg", "removepkg", etc -- by Solaris и иже с ними. А вот поди ж ты -- Slackware Linux... :D:D:D
                            Цитата the_Shadow @

                            FreeBSD, как правило, ставят на так называемые "боевые сервера". Причём, при всём при том, рабочее место админа остаётся под M$. Ну нет бы поставить одну систему... Так нет же... Обязательно много. И сразу.

                            OpenBSD имеет явные "задвиги" на почве тотальной безопасности. Могу сказать, к примеру, что OpenSSH пришёл к нам именно оттуда.

                            NetBSD характерна поддержкой всяко-разных сетевых девайсов.


                            Всё только общие слова: не вижу проблем ни с одной из этих систем ни в создании нa них десктопа, ни сервера.

                            Как бы то ни было фактической ошибки это не меняет.


                            Цитата the_Shadow @

                            Однако... Несмотря на все "вкусности" и полезности, основна масса кода пишется именно для Linux и под Linux, попутно портируясь на все остальные платформы.

                            А это ты вообще к чему? :o


                            Цитата the_Shadow @
                            Прикол в том, что система инициализации в той же Слаке (к примеру) явно BSD'шная

                            Я же специально почеркнул:
                            Цитата eugrus
                            System V, используемой в Linux (в большиснтве своём)



                            Цитата the_Shadow @
                            Установка софта -- "pkgtool", "installpkg", "removepkg", etc -- by Solaris и иже с ними

                            Такие названия утилит скорее всего впервые возникли в SCO.
                            Сообщение отредактировано: eugrus -
                              Цитата
                              Такие названия утилит скорее всего впервые возникли в SCO.

                              Угу... ;)

                              Цитата
                              Как бы то ни было фактической ошибки это не меняет.

                              Да. Наверное. :D:D:D
                              Но здесь есть ещё один момент -- реальное положение вещей на данный момент времени...
                                Цитата the_Shadow @
                                Но здесь есть ещё один момент -- реальное положение вещей на данный момент времени...


                                И что же делает это реальное положение вещей? Убрало из их ядер код BSD3.4? Как-то невнятно.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0788 ]   [ 16 queries used ]   [ Generated: 28.03.24, 10:22 GMT ]