(Версия 1.17. июнь 1998)
                                (Версия 1.18. aprelx 2013)



     Если  вам в руки попалась свежеустановленная машина, то на
ней  еще   не   зарегистрировано   никаких   пользователей   за
исключением     суперпользователя     "root"    -    системного
администратора. Пароля у него нет. Входите в него.
   В суперпользователя  можно превратиться. Для этого выполните
команду

    su     # Super User

   Каждый пользователь в  системе  Unix  предварительно  должен
быть  зарегистрирован.  Пользователю  полагается  иметь:  имя,
пароль,  номер  пользователя,  номер  группы,  к   которой   он
принадлежит,   домашний  каталог,  командный  интерпретатор.  У
пароля могут быть дополнительные  параметры  -  как  часто  его
можно менять, время действия и прочие секретные штучки.

logname         входной логин пользователя
passwd          пароль (пароль вводят дважды)
UID             User Identification Descriptor
GID             Group Identification Descriptor
Comment         Familiq Imya Otchestwo
$HOME           Домашний каталог
shell           Командный интерпретатор



  /usr/local/bin/bash   Самый удобный
  /usr/bin/ksh          Чуть похуже, но тоже ничего
  /usr/local/bin/tcsh   Удобный, но "неправильный" и медленный
  /bin/sh               Самый "правильный" и самый неудобный
  /bin/csh              "Неправильный" и чуть более удобный

/etc/passwd - Вся информация о пользователе хранится здесь.
/etc/shadow - Здесь хранятся закодированные пароли.
     Закодированные  пароли  могут  лежать  и  в других местах.
Зависит от вида Unix.

 В  любом  уважающем  себя Unix имеется "головная" утилита администрирования
(условно называемая sysadm) - диалоговая программа, с менюшками  и  окошками
для  выполнения  насущных задач по системному администрированию. В том числе
позволяет регистрировать новых  пользователей.  Запускать  ее  может  только
"суперпользователь" root. При запуске "sysadm" может спросить тип терминала,
на котором ему предстоит работать. Ответьте: vt100

     Примечание.  В различных операционных системах эта утилита
может называться по-разному:

        sam             HP-UX
        smh             HP-UX 11v3
        sysman          Tru64
        admintool       Solaris 2
        adminsuite      Solaris 2.7
        sysadmsh        SCO UNIX 4
        scoadmin        SCO OpenServer 5
        smit, msmit     AIX
        control-panel   Linux RedHat
        sysadm          UnixWare, ISC, SVR4
        yast            SUSE Linux



adduser                 Linux
useradd                 SunOS 4.1
vipw                    BSD/OS, FreeBSD



1. Вставляем в /etc/passwd еще одну строчку:

moshkow:x:555:1:Maksim E. Moshkow:/home/moshkow:/bin/ksh

1-bis. (Tolxko FreeBSD) для редактирования /etc/passwd использовать команду

vipw

2. (только в Linux) Приводим в соответствие файл /etc/shadow

 pwconv

3. Создаем пользовательский каталог

 mkdir /home/moshkow
 chown moshkow /home/moshkow

4. Задаем пароль новому пользователю

 passwd moshkow

5. Вот и все.




     На экране терминала появляется приглашение

        login:

     Введите  имя,  под  которым вы зарегистрированы в системе,
если нужно, пароль. Если Вы ошиблись при вводе  имени,  нажмите
CTRL+U, или  DEL, или  CTRL-D  (для  отмены), или несколько раз
нажмите на Return, потерпите немного и повторите ввод.
     На  экране появится приглашение командного интерпретатора.

        sunsite:~/$ _

     Чтобы  выйти  из системы, наберите команду exit или просто
нажмите Ctrl-D на пустой строчке.



     При   входе   в  систему  для  пользователя  автоматически
устанавливается   несколько   переменных    окружения.    Чтобы
посмотреть их значение, выполните команду env.

    env   # Распечатать проэкспортированные переменные окружения

LOGNAME=moshkow                  # имя пользователя
HOME=/home/moshkow               # его домашний каталог
SHELL=/bin/ksh                   # его командный интерпретатор
MAIL=/usr/mail/moshkow           # файл, в который складывается
                                 # приходящая ему почта
PS1=host1:$PWD/$                 # формат приглашения
PATH=:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/informix/bin:
           # список поиска, по которому ищутся выполнимые файлы
TERM=vt100                       # устанавливает тип терминала, на
                                 # котором работает пользователь

     Чтобы  задать  значение  переменной  окружения,  выполните
команду:

   Imya_Pereemennoj=znachenie   export Imya_Pereemennoj

например

   abc=Kalosha  export abc

просмотреть значение  переменной  можно  командой  echo в такой
форме:

   echo $abc



     Перед  входом  в  систему сперва выполняется общесистемный
профайл /etc/profile

     Затем  выполняется  пользовательский файл ".profile" (если
он есть) - в них можно  устанавливать  переменные  окружения  и
делать  установки  режимов терминала. Просмотреть установленные
переменные окружения можно командой env

##### Пример файла   .profile ##################################

       # Добавить к списку поиска каталоги с нужными программами
PATH=:$HOME/bin:$PATH:/usr/sbin:/usr/local/bin:/usr/informix/bin
       #    Разрешить редактирование командной строки в ksh
EDITOR=emacs
export PATH EDITOR
LC_CTYPE=iso_8859_1 export LC_CTYPE # русские буквы - "буквы"

        #       Характеристики терминала
        # Забой=BackSpace          СтеретьСтроку=Ctrl-U
        # ПрерватьПрограмму=Ctrl-C "Жестокое_прерывание"=Ctrl-|
stty erase "^h" echoe      kill "^u" quit "^|" intr "^c"
stty cs8 -parenb -istrip
        # 8-битные символы, noparity, не  усекать  8-й  бит
        # при вводе

case "$0" in    # В зависимости от командного интерпретатора
*ksh)                   #       В Korn Shellе
                        #       Редактироваться стрелочками
        alias __A=`echo "\020"`         # ^P = восьмеричный 020
        alias __B=`echo "\016"`         # ^N
        alias __C=`echo "\006"`         # ^F
        alias __D=`echo "\002"`         # ^B
        # В приглашение ставить текущий pwd
        PS1=$LOGNAME@`uname -n`:'$PWD/$ '            export PS1
        ;;
*bash)          # В bash'е в приглашение ставить host:pwd
        PS1='\h:\w/\$ '                              export PS1
        ulimit -Sc 0 # чтоб программы core не роняла
        ;;
*sh)    # для posix-shell и HP-UX
        PATH=$PATH:/usr/sbin
        PS1=$LOGNAME@`uname -n`:'$PWD/$ '
        HISTFILE=$HOME/.sh_history
        ENV=$HOME/.kshrc
        export PATH ENV HISTFILE PS1
# и не забыть в файл .kshrc вписать      set -o emacs
        ;;
esac
#   обратите внимание:   в некоторых местах ПРОСТАЯ кавычка _'_
#   а в других - ОБРАТНАЯ  _`_ - будьте внимательны, это важно.



     Чтобы  провести выключение системы, следует, будучи
пользователем root и находясь в  корневом  каталоге,  выполнить
команду   shutdown  (ключи команды зависят от вашей  операционной системы)

    cd /
    shutdown -yh 0         # HPUX
    shutdown -h now        # Tru64, FreeBSD, Linux
    shutdown -y -g0 -i0    # Solaris, SVR4

     Дождитесь  полного  окончания  разгрузки  системы и только
тогда выключайте питание.

     Для перезагрузки системы выполните команду

    shutdown -r now        # Linux
    reboot                 # Linux
    shutdown -y -r 0       # HPUX
    shutdown -y -g0 -i6    # Solaris, SVR4

     Перезагрузить или разгрузить систему можно также и из меню
системного администратора команды sysadm.

     В  некоторых реализациях Unix (в частности, в BSD, SunOS,
Linux,  HP-UX)  команда  shutdown  использует  другие   ключи.
Попробуйте в этом случае:

   shutdown -y -h now   # для остановки
   shutdown -y -r 60    # для перезагрузки через 60 секунд



1.1. Система  Unix различает БОЛЬШИЕ и  малые буквы, и  к этому
можно привыкнуть.

1.2. Если вы уничтожили какой-нибудь файл, то никаких проблем с
его восстановлением у вас не  будет.  Потому  что  восстановить
уничтоженный файл в системе Unix НЕВОЗМОЖНО. В Unix отсутствует
команда unerase, и к этому  тоже  нужно  привыкнуть.  Вирусы  и
антивирусы  в  Unix  тоже  отсутствуют. Так что  пока хоть этой
проблемы у администратора машины не будет.

1.3.  В  имени файла директории отделяются от последующей части
символом "/". (Билл Гейтс тоже хотел, чтоб у него в  MSDOS  все
как  в  Unix было, вот и взял символ "\" - перепутал - с кем не
бывает.)
       Если  имя  начинается  со  слэша  -  значит,  это полное
маршрутное имя.
     Простое  имя файла может состоять из ЛЮБЫХ символов. Длина
простого имени не более 256 символов. Длина полного маршрутного
имени  файла  не  более 32000 символов (в некоторых Униь - не
более 1024 символов.)

1.4.   Для   задания  шаблона  имен  используются  символы  "*"
(произвольная  последовательность   символов)   и   "?"   (один
произвольный символ). Имя из одной точки "." обозначает текущую
директорию, имя из двух точек ".." - вышележащую  (родительский
каталог).

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

     команда -ключи -ключи ...  прочие разные аргументы ...

1.6.  Если  командная  строка  кончается  знаком  &, то команда
запустится параллельно (фоном). На терминале печатается  номер,
который   получает   запущенный   процесс.   После  чего  можно
продолжать работу, не дожидаясь завершения фоновой задачи.

     команда -всякие разные аргументы ... &

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

       команда  > имя_файла
(для стандартного вывода),

       команда  < имя_файла
(для переназначения стандартного ввода),

       команда  2> имя_файла
(для стандартного протокола - системной диагностики).

     Пример - записать в файл содержимое текущей  директории:

        ls > infdir

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

        команда  >> имя файла
        команда 2>> имя файла

1.8. Пользователи системы Unix объединяются в  группы, и каждая
из групп обладает определенным набором прав доступа к файлам.

1.9.   Программы   могут   распознавать   значения   переменных
окружения, значения которых были заданы перед их запуском.

TERM=vt220
HOME=/home/moshkow
PATH=:/bin/:dss/rk:/home/moshkow/bin

1.8.  Выдачу  одной команды можно перенаправлять на вход другой
команды. Для этого используется "|" - конвейер.

     Пример:  посчитать  суммарный  размер  и  число строк всех
файлов в каталоге /tmp, имена  которых  начинаются  с  символов
"text" ...

    cat /tmp/text* | wc -c

# Команда cat сливает вместе все файлы вида /tmp/text*,
# wc -c -l считает количество символов и число строк во входном
# потоке.

    Или просмотреть с листанием длинную выдачу команды:

   ps -ef  |  more

Того же результата можно достичь и без конвейера таким образом:

  ps -ef > temp-file
  more temp-file
  rm temp-file



pwd   - получить имя текущей директории
cd    - изменить текущую директорию
ls    - распечатать информацию о файлах или директориях
cat   - слить или вывести файлы-аргументы на стандартный вывод
cp    - копировать файлы
mv    - переместить (переименовать) файлы
ln    - создать ссылку на файл
rm    - удалить файлы
rmdir - удалить директорию
mkdir - создать директорию
echo  - вывести аргументы командной строки на стандартный вывод
ps    - распечатать информацию и номера выполняемых процессов
kill  - "убить" выполняемый процес по его номеру
man   - выдать справку об использовании и ключах команды



  pwd



  cd [ директория]

  cd /usr/spool/lp/adm

  cd ..

Если  директория  не  указана,  вы  попадаете в свой "домашний"
каталог $HOME



Формат команды:  ls [ключи] [имена]

имена - имена файлов или директорий; для директорий
        распечатывается список входящих в нее файлов, для файлов -
        выводится его имя и дополнительная информация.
        Имена файлов сортируются по алфавиту.
        Без аргументов ls выдает содержимое текущей директории.

  ls -al  - вывод в длинном полном формате:

          число   владелец            время модификации
          линков        группа                        имя файла
          (имен)                  размер
-rwxr-xr-x   1 moshkow  sys         17 Oct 18 16:13 ../jean
drwxr-xr-x   1 moshkow  sys         12 Oct 18 16:11 ../jelly
-rwxr-xr-x   1 moshkow  sys          0 Oct 13 14:14 ../j.bu.txt
^^  ^  ^
||  |  |
||  |  +----- права всех "остальных" по отношению к файлу
||  +-------- права одной с ним группы
|+----------- права "владельца" файла
+------------ "-" - значит файл,  "d" - директория
        Права:
                r - файл доступен для чтения,
                w - файл доступен для записи,
                x - файл является выполнимым,
                - - данное право доступа отсутствует.

       -a - вывести все файлы (даже если имена начинаются с точки);
       -x - вывод в 4 колонки;
       -t - имена файлов сортируются не по алфавиту, а по
            времени  последнего изменения
       -R - рекурсивно пройти по всем подкаталогам

  ls -CF  - оглавление каталога в несколько столбиков
  ls -al  - оглавление в полном формате



Формат команды:  cat файл1 [файл2... ]

Cat  выводит  содержимое  перечисленных  на  стандартный вывод.
Пример:

     cat файл

распечатывает содержимое файла, а

     cat файл1 файл2 > файл3

сливает  первые  два файла и помещает результат в третий. Чтобы
добавить содержимое файла1 к файлу2, надо выполнить команду

     cat файл1 >> файл2



     more file_name ...
     pg   file_name ...
     less file_name ...

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

q      - завершить просмотр
ПРОБЕЛ - показать следующую страницу
ENTER  - сдвинуться на одну строку
b      - показать предыдущую страницу
/      - поиск
h      - Help - посмотреть список всех возможных команд

more,less,pg  используют,  чтобы  посмотреть  "длинную"  выдачу
команды, ставя его конвейером "ей на хвост"

    ls -al | more   - просмотреть оглавление
    ps -e  | pg     - просмотреть список работающих процессов



Формат команды:  cp файл1            файл2
                  cp файл1 [файл2 ...] каталог

Эта  команда  копирует  файл1,  ...  ,  в ФАЙЛ. Если ФАЙЛ - это
директория, то файл1 и др. копируются в нее под своими именами.
Если  ФАЙЛ  не  существовал, то он создается, если существовал,
его старое содержимое теряется.



Формат команды:  mv файл1             файл2
                  mv файл1 [файл2 ...] каталог

Команда  аналогична  команде  cp, но исходный файл уничтожается.
Ее основная роль - переименование файлов и  перенос  файлов  из
одной директории в другую). Пример:

    mv /dss/*/rk_*.help /dss/delo




Формат команды:  ln файл1 файл2
                            # создается "жесткий" линк
                  ln -s файл1 файл2
                            # создается "символический" линк

Эта  команда  создает файлу файл1 еще одно имя. В итоге файл1 и
файл2 на самом деле физически являются одним и тем  же  файлом.
Если   вы   создаете   так   называемый  "символический  линк"
(используя ключ  "-s"),  то  файл  file1  при  этом  не  обязан
существовать.  Имя "файл2" при этом все равно будет создано.



Формат команды:  rm [-fri]  файл ...
        -i      - просить подтверждения на каждое удаление
        -r      - рекурсивно удалить вместе с подкаталогами
        -f      - не просить подтверждения, а сразу удалять

Для удаления пустой директории можно воспользоваться командой

     rmdir директория ...

Чтоб удалить непустую директорию, нужно выполнить команду

    rm -r директория

ВНИМАНИЕ: Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ                # rm -r .*
(Хотя большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ -
в SCO рискуете напороться)



Для создания директории применяется команда mkdir.

Формат команды:  mkdir  имя_директории ...



Команда chmod меняет атрибуты (права доступа) файла.
Проставить файлам право на выполнение:

    chmod u+x file1

Разрешить остальным пользователям исправлять файл

    chmod a+w file1



echo Команда выводит на стандартный вывод свои аргументы

    echo "\017"

Вывести  на  терминал  символ  Ctrl-O,  он же 017 восьмеричное.
Восстанавливает латиницу на терминалах типа vt220 и at386



Для создания файла можно воспользоваться следующими способами:

    touch primer   # создает пустой файл primer;
    cat > primer   # создает  файл  primer и пишет в него
                   # со стандартного ввода. Запись в файл закончится
                   # после нажатия CTRL+D.



Сообщает  номера  процессов, которые  выполняются в системе.

    ps          - запущенные только с этого терминала
    ps -ef      - все, в "полном" формате (в SYSV Unix)
    ps -ax      - все, в "полном" формате (в BSD* и Linux)



Команда  kill  посылает  указанному процессу сигнал немедленной
остановки.

Прервать процесс номер 1078 (номер можно узнать командой ps -e)

    kill -9 1078

Прервать  программу на вашем терминале, запущенную НЕ в фоновом
режиме, можно нажатием клавиши CTRL-C, или клавиши CTRL-\



Как  правило,  при  запуске  команды  без аргументов она выдает
формат своего вызова.  Но  для  большинства  команд  достаточно
полную информацию вы можете получить так:

    man    имя_интересующей_вас_команды
    man -k ключевое_слово    # список команд, относящихся к ...

Для того, чтобы срабатывала команда man -k, файлы докуменации должны
быть предварительно проиндексированы. Достигается это командой

    catman -w




    who           - этими командами можно узнать, кто вы такой
    who am i        и кто еще работает в системе
    finger
    last | more
    id
    man -k who   - сообщит все возможные команды, которыми можно
                   узнать, кто и что делает в системе.


По  не  знаю  какой  уж  там  исторической  традиции  "честные"
(канонические, особенно коммерческие) системы Unix не имеют в
своем базовом  комплекте ни   одного   нормального   (еще  раз
подчеркну  это  слово  - НОРМАЛЬНОГО)   текстового    редактора.
Поэтому    системный администратор  должен  уметь  пользоваться
тем, что ему дают. А дают ему несравненный "Визуальный" экранный
редактор  файлов  - Редактор VI.



1.  Командный  -  в  этом  режиме можно перемещаться по файлу и
выполнять редактирующие команды над текстом. Команды вызываются
ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.

2. Ввода текста - в этом режиме обычные латинские  буквы  будут
вставляться в текст.

3.  Режим  строчного  редактора  ED используется для управления
файлами (типа сохранить файл, зачитать файл и т.д.)

   Прочитайте предыдущий абзац еще раз. Вы еще  не  испугались?
Хорошо. Поехали. Итак:

       vi     имя_файла
       vi  +  имя_файла       # встать в конец файла

VI в КОМАНДНОМ РЕЖИМЕ.

ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ, нажмите:
     ESC  :  q  ! Enter

чтобы выйти из файла, сохранив изменения, нажмите:
     ESC  :  w ! Enter
     ESC  :  q   Enter
выйти из файла с сохранением, одной командой:
     ESC  :  wq  Enter


   "i"   вставлять здесь
   "A"   вставлять с конца строки
   "cw"  заменять текущее слово

   ESC    для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ
   CTRL-[ для возврата в командный режим

   для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать
   ":"  (перейти в режим редактора ED)


     h,j,k,l    влево, вниз, вверх, вправо
     Ctrl-F     На страницу вниз
     Ctrl-B     На страницу вверх
А если вам очень повезет, то можно будет двигаться стрелочками.
Чтобы перейти в режим везения, нужно описать  для  операционной
системы   ваш   терминал.   Этим  займемся  в  дальнейшем  (см.
"Описание терминалов, terminfo, termcap").

Подгоните курсор к нужному месту и нажмите
     i          перевод в режим ввода
вводите требуемый текст
     ESC        прекратить ввод, перейти в командный режим

Подгоните курсор к ненужному месту и нажмите
     x          удалить символ
     dd         удалить строчку



     o          вставлять с новой строки (под текущей строкой)
     a          в режим ввода ЗА курсором
     5yy        запомнить 5 строчек
Подгоните курсор к нужному месту
     p          вставить запомненные строки под курсором
     P          вставить запомненные строки НАД курсором

     J          Склеить две строки
     /Шаблон поиска Enter       - поиск
     n          Повторить поиск

На этом ознакомление с редактором VI можно считать законченным.
Того, кто считает, что VI может предоставить больше  удобств  и
команд  по  редактированию,  я  отсылаю  к  прилагаемому  здесь
справочнику-памятке "наиболее употребительные команды VI",
 vibegin.txt
ну, и,  естественно (как всегда), к документации. Остальных я
отсылаю к не менее удивительному в своем роде редактору EMACS,
которым, не смотря на это, рекомендую пользоваться впредь.







РЕЖИМЫ: Ввода == ESC ====> Командный == :Q ==> Редактора ed
            ^                  |     ^                |
            +----aAiIcCrRs <---+     +----- vi -------+


{стрелки},hjkl
^U/^D   табуляция вверх/вниз
^F/^B   страницу вниз/вверх
^E/^Y   подвинуться на строку вниз/вверх
w/b/e   вперед/назад на слово/в конец слова
W/B/E   вперед/назад на слово/в конец опробеленного слова
 (/)    назад/вперед на предложение
 {/}    назад/вперед на абзац
[[/]]   назад/вперед на функцию или секцию
%       найти парную скобку ( или {
{n}G    на строку {n}
{n}|    в колонку {n}
H/M/L   в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0   начало/конец строки


x       уничтожить символ
X       забой
J       склеить строки


a/i / A/I       вставка за/перед _ / концом/началом строки
R       режим замены
r       буква на букву
s       буква на буквы
o/O     вставить строку под/над _
C$      Заменить конец строки


^G      о текущем файле и строке


u       откатка (одна)
^L/^R   перерисовать


ESC     вернуться в командный режим
Забой   Забой
^W/^U   Убрать слово/Убрать строку
^V      Вставить CRTL-символ[ы]


p/P     вспомнить фрагмент за/перед _

{n} ["буква_буфер] "команда" {m}"команда позиционирования"
  весь фрагмент запоминается!    или повтор команды для строки
d       уничтожать фрагмент
y       запоминать фраг
c       заменить фрагмент (==> в режим ввода )
</>     сдвинуть влево/вправо
! команда       пропустить фрагмент через фильтр


7yy     запомнить 7 строк в неименованном буфере
"aAd{   добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца


:map  клавиша_имя_макро тело_макрокоманды  {CR}
:map! клавиша_имя_макро тело_макрокоманды  {CR}  - в режиме ввода
:ab   сокращение        сокращаемый_текст  {CR}  - в режиме ввода


?строка         искать вверх
/строка         искать вниз
n               повторить поиск
N               вернуться на последнюю найденную строку


:s/рег_выраж/замена/gc   - глобальный с подтверждением
:Q/vi                      вход / выход в режим ed
:g/строка                - поставить визуальный фильтр
:+5                        движение по файлу


^^      Перейти в альтернативное окно
:[1,$] w [>>] [file]   записать в file [от 1 до $ строки]
:q[!]  закончить сеанс [форсированно]
:[15]r [file] или [!komanda]   вставить после [15] стр
:e     редактировать новый файл
:n     редактировать следующий файл
:sh    выйти в Shell
:! команда  запустить на выполнение Shelloм


:set nu / nonu   нумеровать/ненумеровать строки
:set smd{CR}     показывать текущий режим
EXINIT="конфигурационные команды"       - переменная окружения
.exrc                           - файл с командами конфигурации



"фильтрует" строки - оставляя только "подходящие" под шаблон

    egrep шаблон  [ file ... ]

В  шаблон  могут  входить  обыкновенные символы (представляющие
сами себя),  а  также  -  спецсимволы,  выполняющие  служебные
функции шаблона: . * ^ $ [ ]

    .        - любой произвольный символ
    *        - "множитель" (предыдущий символ любое число раз)
    .*       - любая последовательность символов
    ^шаблон  - привязываем шаблон к началу строки
    шаблон$  - привязываем шаблон к концу строки
   [символы] - любой один символ из тех, что стоят в скобках


Вывести всех привелигированных пользователей:

    egrep ':0:0:' /etc/passwd

Вывести всех непривелигированных пользователей:

    egrep -v ':0:0:' /etc/passwd

Вывести  всех  пользователей,  имена  которых начинаются с букв
a,b,e,d

    cat /etc/passwd | grep "^[abed].*"



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

    find   файл [ ... ]   ключи/условия/действия

        Ключи-условия команды find:

  -name "*.c" - простое имя подходит под шаблон *.c
  -type f     - брать только обыкновенные файлы
  -type d     - брать только каталоги
  -size +500  - файлы размером БОЛЬШЕ 500*512 байт
  -mtime -3   - дата модификации МЕНЬШЕ 3-х дней
  -newer  filename - дата модификации нашего файла МЕНЬШЕ, чем у
                     заданного файла filename

ВНИМАНИЕ:  Команда  find  использует  стандартные  SHELL'овские
шаблоны.  Команда  grep  использует  шаблоны  другого  формата,
называемые регулярными выражениями.

        Ключи-действия команды find

  -print      - просто распечатать маршрутное имя файла
  -exec команда над файлом {} \;

        Пример.

Напечатать имена всех обыкновенных Си-шных файлов, изменившихся
за последние 4 дня в текущем каталоге и его подкаталогах.

    find . -type f -mtime -4 -print

Уничтожить  все  файлы с окончаниями *.bu, *%, которые не меня-
лись больше месяца.

    find   / \( -name "*.bu" -o -name "*%" \) -type f    \
    -atime +30 -exec  rm  {} \;

запись "rm {} \;"  - обозначает команду Unix, которая будет вы-
полняться для всех  таких  найденных файлов. Вместо значка "{}"
будет подставляться каждый раз имя найденного файла. Естествен-
но, что таким образом мы их все и уничтожим.



В Unix для этого можно пользоваться двумя утилитами:

tar     попроще в использовании, но не все умеет
cpio    более гибкая, чем tar, и посложнее.



Предназначен для создания архивов на ленте и в файлах.

Ключи: "-c" Create, "-x" eXtract, "-a" Append, "-t" оглавление

tar -cvf arhiw.tar fajl1 fajl2 katalog3 ...     - создать архив
tar -tvf /dev/rmt/ctape                вывести оглавление ленты
tar -xvf arhiw.tar katalog3/fajl4      извлечь из архива   файл
tar -xvf /dev/rmt/ctape          архив лежит на магнитной ленте
                                 извлечь с ленты все файлы
tar -avf arhiw.tar fajl5                 добавить файл к архиву

Ключи:
 "v"    Выводить список файлов в длинном формате (Verbose)
 "f"    Указывает на имя файла



Команда cpio -o берет с системного ввода список  имен и склеивает
эти файлы вместе в один архив, выталкивая  его на свой  системный
вывод.

Сбросить на ленту файлы по списку:

        -o     - (output) создавать архив.
        -H odc - Записывать в "совместимом формате" (чтобы  ар-
                 хив  можно было считать на Besta или Sun)
        -c     - Записывать в "престарелом" совместимом формате

    cat spisok | cpio -ovB -H odc > /dev/rmt/ctape1
    find katalog -print | cpio -ovc > arhiwnyj-fajl.cpio


Команда cpio -i читает с системного ввода cpio-архив и извлека-
ет из него файлы

# Просмотреть содержание стриммера.
    cpio -itB   < /dev/rmt/ctape

# Извлечь файлы со стриммера.
    cpio -idmvB  ["шаблон" ...] < /dev/rmt/ctape

        -B   Размер блока 5120 байт - стриммерный формат.
        -d   Создавать каталоги в случае необходимости.
        -v   Вывести список имен обработанных файлов.
        -m   Сохранять  прежнее время последней модификации.
        -f   Брать все файлы, кроме указанного шаблоном.
        -u   Безусловно заменять существующий файл  архивным.
        -l   Где можно, не копировать, а делать ссылки.



Архиваторы  tar  и  cpio, в отличие от DOS-овских архиваторов, не занимаются
компрессией.   Чтобы   получить   сжатый   архив,   нужно    воспользоваться
специализированной командой compress или gzip.

Команда  gzip  читает  свой системный ввод, а на свой системный выход подает
"прожатые" данные.

Команда gunzip ("сжатый cat":-) читает с системного входа "пожатый" файл, а на выход подает "разжатые" данные.

Создать сжатый tar-архив:

    tar -cvf - emacs-19.28 | gzip > emacs-19.28.tar.gz

Прочитать оглавление сжатого tar-архива:

    gunzip < emacs-19.28.tar.gz | tar -tvf -

Обратите внимание на  ключ  минус "-" на том  месте,  где в tar
нужно указывать имя  файла с архивом. Он означает "брать данные
со стандартного входа"  (или  выводить архив на стандартный вы-
ход).





        Boot,   bootstrapping   -   слова, обозначающие  сейчас
"Загрузить/пнуть, процесс начальной  загрузки", на  самом  деле
произошли  из  английской фразы "Pull itself up by its own boot
straps" (Поднять себя за шнурки собственных ботинок)

     Начинается все с Boot-prom'a - небольшой программы, которая
хранится  в   нестираемой   памяти   компьютера    и   начинает
выполняться сразу после включения.

      Естественно, boot-prom умеет делать многое: форматировать
диски, инсталлировать  операционную  систему,  запускать  тесты
hardware.  Однако главное его предназначение - найти на диске и
запустить на выполнение файл /unix - ядро операционной системы.
И  своего  собственного  разума  на  это ему обычно не хватает,
поэтому  он  в  первую  очередь  загружает  с  жесткого   диска
"загрузчика   операционной   системы",  а  уж  тот  делает  все
остальное.



     BIOS  загружает блок начальной загрузки активного раздела.

     Он  грузит  загрузчик  LILO (LInux LOader). Lilo загружает
файл /vmlinuz

     Параметры   начальной   загрузки   записываются   в  файле
/etc/lilo.conf После любых изменений в  этом  файле  необходимо
выполнить команду

  lilo

     Перехват в Lilo-prompt:

Left_ALT сразу после появления сообщения "Lilo ..."

     Загрузка в single user:

  Lilo: linux root=/dev/hda2 single

     Загрузка в еще более single user:

  Lilo: linux init=/bin/sh
  mount -n -o remount /dev/hda2 /
  insmod de4x5
  ifconfig eth0  195.232.171.30
  route add -net 195.232.171.0 gw 195.232.171.30
  insmod nfs




Ядро инициализирует себя и после этого  запускает процесс init.
А init - все остальные процессы,  программы, которые необходимы
для нормального функционирования операционной системы.

Все дальнейшие  действия в системе определяются этим процессом.
Все, что нужно делать init-у, определяет специальная таблица.

Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ".
Уровень выполнения определяет состояние и поведение всей систе-
мы. Уровень обозначается цифрой (или буквой) 0,1,2,3,4,5,6,s,S

   0        - prom монитор - Полный останов системы;
1, s, S     - single user mode. Однопользовательский режим;
   2        - многопользовательский режим без NFS-сервера;
   3        - многопользовательский режим с NFS-сервером;
   6        - перезагрузка;




bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc   > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc    > /dev/console 2>&1
r0:0:wait:/etc/rc0       > /dev/console 2>&1
r2:23:wait:/etc/rc2      > /dev/console 2>&1
r3:3:wait:/etc/rc3       > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor  console console
t1:23:respawn:/etc/sysmonitor     tty01   9600
t2:23:off:/etc/sysmonitor         tty02   9600

        Формат таблицы:

ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда

ИМЯ: - просто имя строчки - они все должны быть разными
вид_действия:

  sysinit   запустить один раз после начальной загрузки;

            на соответствующем уровне выполнения:
  wait    - запустить один раз и дожидаться, пока не окончится;
  respawn - запустить параллельно, а если окончится, перезапус-
            кать снова;
  off     - ничего не делать (просто игнорировать эту строку).


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


        Сперва init запускает процессы, которые "sysinit"

        Отработав все строки "sysinit" уровня,  init  идет  все
дальше  по  /etc/inittab  и обнаруживает строку initdefault 3 -
она заставляет его "перейти" на уровень 3.



       Перейдя  на  уровень  выполнения  3, init и отрабатывает
первую  встретившуюся  строчку  с  уровнем  "3"  -  запускается
командный  файл  /etc/rc2  -  загляните в него. Там все просто:
/etc/rc2  берет  и  выполняет  командные  файлы  /etc/rc2.d/S*,
лежащие  в  каталоге  /etc/rc2.d.  Каждый  файл  выполняется  с
параметром "start"

       Отработав /etc/rc2, init точно таким же образом запускает
файл /etc/rc3. Вслед за этим он запускает  несколько  процессов
sysmonitor  -  по  одному  на каждый имеющийся терминал. Это те
самые  процессы,  которые  говорят  на  терминал:   "Login:   "
Пользователь, войдя  на  терминал, некоторое время работает, но
как только он  "уходит"  из  системы,  на  указанном  терминале
ничего  не остается. init тут же выполняет действие "respawn" -
перезапускает на терминал sysmonitor - и  опять  жизнерадостное
"Login: " появляется на терминале.



        По умолчанию init устанавливает уровень выполнения 5.
При начальной загрузке отрабатывается файл
/etc/rc.d/rc.S

        Затем для перехода в многопользовательский режим
/etc/rc.d/rc.M
        из которого запускаются файлы
/etc/rc.d/rc.inet1  устанавливающий сетевые интерфейсы
/etc/rc.d/rc.inet2  запускающий сетевые сервисы
/etc/rc.d/rc.local  запускающий  несколько  полезных  программ и
                    демонов - например, поддержка мыши,   httpd,
                    русификация  консоля и т.п.



Используется стандартная технология rc-файлов System V

RC-каталоги:
/etc/rc.d/rc[0123456].d/
/etc/rc.d/init.d/

Конфигурационные параметры для RC-команд:
/etc/sysconfig/



Все  системные  действия выполняет  ядро  операционной  системы
Unix. Ядро - обычный выполняемый файл, расположен в файле /unix
или /stand/unix или /vmunix или /vmlinuz (в зависимости от кон-
кретной реализации). Можете посмотреть размер этого  файла - не
маленький. При начальной загрузке системы ядро целиком загружа-
ется в оперативнную память и в дальнейшем резидентно находится
в ней, выполняя все необходимые работы.

        Что входит в ядро.

ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но
могут  быть,  а  также  и  такие,  которые  никогда  вам   не
понадобятся.

УПРАВЛЯЮЩИЕ   ПОДПРОГРАММЫ:   части   кода,   ответственные  за
обеспечение  работы  пользовательских  программ  -   разделение
времени и прочих ресурсов системы.

СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, от-
крытых файлов, управляющие структуры...

СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание",
можно  считать  некоторой   аналогией/пародией   на   системные
вызовы.)   С  точки  зрения  программиста  это  обычная си-шная
функция,  только  выполняет  она  системно-зависимые  действия,
например:   прочитать   данные  из  файла,  установить  сетевое
соединение, создать каталог, и т.д. и т.п. Все системные вызовы
( а всего их более 1500 штук ) вкомпилированы в тело ядра Unix.
Пользовательские  программы,  вызывающие  функции,   являющиеся
системными  вызовами,  на  самом деле содержат только jump'ы на
соответствующие  адреса  памяти  в  ядре.  В   пользовательскую
программу системные вызовы не влинковываются.

        Что находится в оперативной памяти.

ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.

БУФЕРНЫЙ КЭШ.  Часть оперативной памяти резервируется под кэши-
рование чтения и записи на диск. Любая операция  чтения с диска
приводит к тому,  что  прочитанные  блоки помещаются в буферный
кэш,  а  из него уже передаются запросившим данные  программам.
Если блок попал в кэш, то все последующие обращения к  нему бу-
дут получать образ блока из кэша, причем независимо от того -
та же самая программа обращается к блоку или  какая-либо дру-
гая. Кэшируется также и запись на диск,  опять же, разделяемая
между всеми выполняемыми программами.

ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.

        Средства экономии памяти. Виртуальная память.

РЕЕНТЕРАБЕЛЬНОСТЬ КОДА.  Когда  одна и та же программа(выполня-
емый файл) запущена в нескольких экземплярах,  то в оперативную
память загружается только одна копия выполняемого ассемблерного
кода на всех. Каждый  выполнямый  процесс использует один и тот
же текст программы, просто у каждого процесса имеется свой соб-
ственный указатель на текущий оператор.

РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В  Windows  есть похожее понятие DLL -
динамически подгружаемая библиотека). Некоторое количество час-
то выполняемых функций (например, printf,  да  и  много  других)
оформляется в виде специальным образом подготовленной библиоте-
ки  (SHARED  LIBRARY).  При компиляции программы,  использующей
разделяемые  библиотеки,  эти  функции не линкуются внутрь кода
программы.  Они  "выдергиваются"  из   библиотеки   на   стадии
выполнения  программы.  Этим  мы  экономим  место  на диске и в
оперативной памяти: в программах  отсутствует  код  разделяемых
функций,  а  в  оперативной  памяти  эта функция присутствует в
одном экземпляре на всех.

SWAPING. Каждый  Unix-процесс функционирует в своем собственном
32-х битном виртуальном адресном пространстве, не пересекающем-
ся с другими.  Адресное  пространство процесса может быть боль-
шим, чем физическая оперативная память. Виртуальная память под-
держивается с помощью PAGING'а - разрешения виртуальных адресов
в физические  "на  лету",  с  подкачкой  отсутствующих  страниц
памяти со swap-области на жестком диске.

На самом деле SWAPING'а как такового в Unix'е  нет, вместо него
применяется гораздо более гибкий PAGING. (swaping  - по опреде-
лению,  это  ПОЛНАЯ выгрузка программы на swap-область с  целью
освобождения места в оперативной памяти).

Область памяти, занятая программой, разделена на три части: TEXT
(выполняемые коды программы), DATA (статические данные програм-
мы), STACK (динамические данные). Когда операционка освобождает
место в  памяти за счет TEXT'а,  то она не   занимается сбросом
его на  диск. Она сразу  помечает его как   свободный. Действи-
тельно, когда потребуется загрузить TEXT обратно  в память, его
можно  будет взять из самого  выполняемого  файла с программой.
Такая экономия имеет один побочный эффект.  Файл программы, ко-
торая в  данный момент выполняется, невозможно уничтожить. Опе-
рационная система сообщит в этом  случае:  "text  file busy", и
откажется выполнять удаление.

БИТ  НАВЯЗЧИВОСТИ.  (sticky  bit). Выполняемая программа  может
иметь дополнительный атрибут. Так  называемый  "бит навязчивос-
ти". Когда такая программа заканчивает выполнение,  операционка
(по возможности) старается не занимать память,  в которой нахо-
дился текст программы. Соответственно, повторный ее запуск про-
изойдет очень быстро  - ведь программа все еще  загружена в па-
мять, ее не требуется зачитывать с диска. Нужно просто передать
на нее управление.



Файловая система в Unix -  "деревянная",  состоит   из файлов и
каталогов. На  каждом разделе диска создается собственная неза-
висимая файловая система. Отдельные файловые системы "сцепляют-
ся"  вместе,  в единое общее дерево директорий. Такая  операция
называется "монтированием". Выглядит это примерно так:

   mount -F ufs   /dev/dsk/m197_c0d0s5 /home1
   mount -F ufs   /dev/dsk/m197_c0d0s4 /usr
   df

Получить доступ  к  файлам  "несмонтированной" файловой системы
невозможно. Порочная пракика MS-DOSа - сколько разделов, столь-
ко и "дисков" ( a: b: c: d: e: ... k: l:  m: n:) в Unix не при-
меняется. В Unix всегда есть ровно одно общее дерево каталогов,
и,  по  большому  счету, пользователям совершенно все равно, на
каком именно диске или  разделе  диска  расположены  его  файлы
/usr/spool/moshkow или /home1/moshkow/bin/mcopy ...

Файловая система Unix кэшируется буферным кэшем. Операция запи-
си на диск выполняется не тогда, когда это приказывает выполня-
емый  процесс,  а когда операционная  система сочтет нужным это
сделать.  Это резко поднимает эффективность и скорость работы с
диском,  и  повышает  опасность  ее  использования.  Выключение
питания  на  "горячей",  работающей  Unix-машине   приводит   к
разрушениям  структуры файловой системы.

При каждой начальной загрузке Unix проверяет - корректно ли бы-
ла выключена  машина в прошлый  раз, и если нет - автоматически
запускает утилиту fsck  (File System Check) - проверку и ремонт
файловых систем..



Раздел диска, в котором создана файловая система, разбит на три
части.

СУПЕРБЛОК. Занимает 1 Kb.
           Содержит служебную информацию:
           Тип файловой системы,
           Размер
           Начало списка свободных блоков.
           . . . что-то еще

ОБЛАСТЬ INOD-ов.  Занимает  примерно 8% общего размера раздела.
inode - Index-node  - описатель файла. Он содержит всю информа-
цию о файле, за исключением  имени  файла,  и собственно данных
файла. В inod'е хранится:

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

ОБЛАСТЬ ДАННЫХ. В этой области расположены блоки с данными фай-
                лов. Незанятые блоки провязаны в СПИСОК СВОБОД-
                НЫХ БЛОКОВ

Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.

ФАЙЛ - он и есть файл.

КАТАЛОГ - файл фиксированного формата:  состоит  из  строчек  с
именами файлов, входящих в каталог

        имя_файла1         Номер_Инода1
        имя_файла2         Номер_Инода2
           . . .

Чтобы получить доступ к файлу по имени, операционная система
 1. находит это имя в каталоге, содержащем файл,
 2. берет Номер_Инода файла,
 3. по номеру находит inod в области inod'ов,
 4. из inod'а берет адреса блоков, в которых расположены данн-
    ые файла,
 5. по адресам блоков считывает блоки из области данных.
Все.

        Формат индексного описателя файла.

Область инодов разбита на 64-х байтные структуры - inod'ы.
В inod'е хранится:

  Тип файла (файл/каталог/специальный файл/fifo/socket)
  Атрибуты (права доступа)
  Владелец файла
  Группа-владелец файла
  Времена создания, модификации, последнего доступа к файлу
  Длина файла
  Адрес 1-го блока файла
  Адрес 2-го блока файла
  ...
  Адрес 10-го блока файла
  Адрес блока косвенной адресации (блока с 256 адресами блоков)
  Адрес блока 2-й косвенной адресации
     (блока с 256 адресами блоков с адресами)
  Адрес блока 3-й косвенной адресации
     (блока с адресами блоков с адресами блоков с адресами)

Точный формат структуры файловой системы см.
man fs


В Unix помимо обычных файлов и каталогов существуют  еще и спе-
циальные файлы. Они используются для обозначения физических ус-
тройств компьютера. (Железок). В сущности, что  такое файл? Это
"нечто", куда можно записывать  данные  как последовательность
байтов  и  считывать их оттуда. И, значит, вполне  естественным
выглядит, например,  файл  /dev/console  - соответствующий кон-
сольному  терминалу.  Все,  что  выводится в файл /dev/console,
будет просто появляться на экране терминала. При попытке чтения
из  файла  /dev/console вы будете  получать (внимание!)  не то,
что нарисовано в данный момент на экране, а то, что вводится  с
клавиатуры. Попробуйте выполнить команды

  su
  echo Привет > /dev/console
  cat /dev/console

  Ctrl-C

Для  каждого  терминала  unix-машины существует соответствующий
ему  файл.  Обычным  терминалам  соответствуют  файлы,  которые
называются примерно так:

  /dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
  (и т.д., возможны варианты)

Псевдотерминалам (они эмулируются, когда вы входите в  систему
по сети, посредством команд типа telnet, rlogin) соответствуют
специальные файлы

  /dev/pty*, или /dev/pty/*

Команда  who,  или  who  am  i  сообщит вам, как называется ваш
собственный терминал.

Существуют специальные файлы, соответствующие жесткому диску  в
целом   (/dev/rdsk/m197_c0d0s7)     и   всем   его    разделам
(/dev/dsk/m197_c0d0s*). Если  вы  будете читать из этих файлов,
то  получите  все  байтики,  как  они лежат на жестком диске, с
нулевого цилиндра и до последнего... А  если  вы  в  этот  файл
что-нибудь  запишете,  то  получите  (потом)  богатый  опыт  по
переформатированию и разметке жесткого диска.

/dev/mem   - файл, изображающий оперативную память.

/dev/audio - если  "закатить"  в него  файл  звукового  формата
             (*.wav, *.au, ...?) - то он  будет озвучен динами-
             ком  компьютера,  а  команда cat /dev/audio  будет
             принимать все, что произносится в микрофон.  Впро-
             чем,  я  отвлекся,  у  нас ведь не PC,  не  Silicon
             Graphic и не SPARCstation.

/dev/zero  - из него можно считать сколько угодно нулевых байтов

/dev/null  - а в  него можно писать, и  читать из него - тоже, в
             неограниченных количествах и с неизменным резуль-
             татом: NULL - он и есть null. А в MSDOS его аналог
             называется    NUL.

Специальные файлы бывают двух типов:

  блочные  - запись и  чтение допускаются только блоками.  Нап-
             ример, разделы дисков с файловой системой являются
             таковыми.

  ls -al /dev/fd*
brw-rw----  1 root floppy    2,  28 Jul 18  1994 /dev/fd0H1440
brw-rw----  1 root floppy    2,  32 Jul 18  1994 /dev/fd0H2880
brw-rw----  1 root floppy    2,  12 Jul 18  1994 /dev/fd0H360


 символьные(бесструктурные, сырые, row) - можно читать и писать
           отдельными байтами. К ним относятся терминалы,  маг-
           нитные ленты, неформатированные диски и разделы дис-
           ков без файловой системы.

  ls -al /dev/tty*
crw--w--w-   1 moshkow  sys        4,   1 Jan 15 22:00 /dev/tty1
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2

Различие - первая буква в листинге команды ls  -l

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



 Обычно  их  создавать  не  нужно  -  они все уже есть для всех
известных  настоящих   и   будущих   устройств.   Созданы   при
инсталляции системы.

 Ручное создание спецфайла

   mknod /dev/filename { c | b }  MAJOR MINOR





     IBM   PC/Linux  сообщает  об  опознанных  устройствах  при
начальной загрузке. Предполагается, что соответствующий  драйвер
SCSI   (if  exists)  сконфигурирован  в  ядре.  Чтобы  еще  раз
просмотреть эти сообщения, выполните команду

    dmesg

     Все специальные файлы для дисков и лент уже созданы

 echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
  заставит адаптер scsi1 просканировать SCSI канал 0,
  чтобы найти свежеподключенное устройство с ID 5 и LUN 0.



     Каждое "устройство" имеет соответствующий ему "специальный
файл". От системы к системе имена эти абсолютно друг на друга не
похожи.  Одно, пожалуй, постоянно: все специальные файлы обычно
расположены в каталоге /dev или его подкаталогах.

        В SVR4 устройства собраны в отдельные каталоги:

  /dev/rdsk/*  - бесструктурные диски и разделы дисков
  /dev/dsk/*   - блочные диски и разделы дисков
  /dev/rmt/*   - стриммерные накопители на магнитной ленте
  /dev/term/*  - линии для подключения терминалов (dial-in)
  /dev/cua/*   - линии с модемным управлением (dial-out)
  /dev/pts/*   - псевдотерминальные линии



     Диск может быть разбит на 4 primary раздела с 1 по 4. Один
из разделов может быть extended - тогда он может  быть   разбит
еще на 4 раздела с 5 по 8

        Физический диск (целиком)

/dev/hda        Первый IDE жесткий диск
/dev/hdb        Второй IDE жесткий диск
/dev/hdc        IDE hd (или CD) - master на втором интерфейсе
/dev/hdc        IDE hd (или CD) - slave  на втором интерфейсе
/dev/sda        Первый SCSI жесткий диск ...

/dev/sda1, /dev/sda2, ... ,8  Разделы жесткого SCSI диска
/dev/hdb1, /dev/hdb2, ... ,8  Разделы жесткого IDE диска

        CD-ROM

/dev/sbpcd,/dev/sonycd, ...
/dev/hdc  - IDE CD
          а лучше /dev/cdrom

        Магнитные ленты.

/dev/rmt1

        Дискеты.

/dev/fd0             - флоппи A:
/dev/fd1             - флоппи B:





     Форматировать  SCSI  на  низком  уровне  не  умеет ни один Unix
в мире.Форматирование обычно заключается в тестировании bad block'ов
и   нанесении   логической   разметки   диска   -   делении  его  на
логические разделы.



     Раметка  partition table в Linux делается командой fdisk.
Это диалоговая утилита  -  без  особых  изысков,  все  делается
просто.

     fdisk /dev/hda   # или /dev/sdb ...

     mke2fs /dev/hda1
     # создает файловую систему типа ext2 на первом разделе

     Распечатать таблицу разделов:

     fdisk -p /dev/hda   # или /dev/sdb ...






 mkfs.ext3 /dev/hda9



 mkisofs -R -o image directory
 затем записать образ на cd-r командой  cdrecord




Чтобы  сделать  "видимыми"  файлы, лежащие на дисковом разделе,
Unix использует  команду  mount.  Mount  "подцепляет"  файловую
систему  к общему дереву файлов. При монтировании нужно указать
"точку монтажа" - каталог, к которому "подцепляется" наша новая
файловая система. Например:

    mount -F ufs   /dev/dsk/m197_c0d0s8    /home1

Чтобы посмотреть, какие файловые системы у нас смонтированы,
выполните команду

    df

Чтобы наши файловые системы монтировались, а swap области акти-
визировались  автоматически  при  каждой  загрузке,  необходимо
вставить соответствующие  строки  в  файл  /etc/vfstab . Формат
строчек можно посмотреть в этом же файле.



Если на CDROM'е  записана файловая система формата "ufs" - т.е.
это  "родной",  моторольный cdrom, то монтировать его нужно  по
тем же правилам, что и обычный жесткий диск, только "read only"

  mount -F ufs -r  /dev/dsk/m197_c0d6s0    /cdrom

Если же это обычный "game'овый" диск для MSDOS'а, а точнее, CDROM
стандартного формата iso9660, то монтировать его надо так:

  mount -F cdfs -o ro  /dev/dsk/m197_c0d6s7    /cdrom

(использование ключей  -r и  -o ro  - равнозначно)



  umount /home1



Sun:          tunefs
Linux:        tune2fs
HP-UX:        fsadm



     Симптомы  достаточно  красноречивы:  заметные задержки при
доступе к диску  (из-за  retrying'a),  и  на  консоль  сыплются
страшные  сообщения "Bad media", "Read failure"... "при доступе
к блоку такому-то".
     Запишите номера bad-блоков - их можно "подлечить".



     Современные  SCSI  адаптеры  сами заменяют bad-блоки. Если
засекли bad-block, пропишите по нему (или  файлу  с  ним)  нули,
адаптер  заодно и пропишет, и подменит, и навсегда спрячет его,
и он больше не покажется.



     Linux'овский  fsck  с  ключом  "-c"  умеет  сам находить и
лечить от bad-блоков (они собираются в отдельный "bad"  inode)

      # -y yes на все вопросы,  -f force checking, -c bad-blocks
      e2fsck -c -y -f /dev/hda3




скачать и установить с linux-ntfs.sourceforge.org пакет ntfsprogs

ntfsresize -i /dev/hda9 # посмотреть статус и возможности

# тест возможности обрезать раздел под 15000 Мегабайт
ntfsresize -n -s 15000M /dev/hda9

umount /dev/hda9

ntfsresize -s 15000M /dev/hda9 # обрезать по настоящему

Командой fdisk /dev/hda
удалить, затем вновь создать партицию /dev/hda9 размером 15000M
partition id 7 (NTFS)

После перезагрузки отчекать файловую систему NTFS.



 smartctl -a /dev/hda



     Под  swap  область  рекомендуется выделять не более одного
раздела (предпочтительнее самого  первого)  на  каждом  жестком
диске.

       Под  swap  рекомендуется выделять 1*RAM - 2*RAM места, а
если на машине активно используется X-Windows, то 3*RAM.

     В  случае срочной необходимости под swap можно выделить и
обычный  файл.  Создайте  файл  большого   размера,   а   затем
подключите его под swapping. Пример: выделяем 20 Mb-овый файл

  dd if=/dev/zero of=/var/swapfile bs=1k count=20480

     Чтоб swap подключался автоматически при начальной загрузке,
надо вписать строку в /etc/fstab - что-нибудь типа:

---------------------------------------------------------------
# device     mountpoint  type  flags
/dev/hdb2     none       swap   sw
---------------------------------------------------------------



# размечаем партицию,
# устанавливаем ей partition ID == 82 "Linux-swap"

  fdisk /dev/hda

# Swap-файл для Linux _ОБЯЗАН_ лежать в каталоге /dev/

  dd if=/dev/zero of=/dev/swapfile bs=1k count=40000

# После выделения раздела или файла под swap его надо прописать:

  mkswap /dev/hda2 40000 ; sync # размер в килобайтах

  swapon /dev/hda2       # подключаем swap-раздел

  free                   # смотрим

  swapoff /dev/swapfile  # отключаем swap-файл

Для постоянного включения добавить строчку
в /etc/fstab :
---------------------------------------------------------------
/dev/hdb2       none  swap   sw
---------------------------------------------------------------






Поставить пакет

    rpm -i filesystem-1.2-1.i386.rpm

Удалить пакет

    rpm --erase filesystem-1.2-1

Список всех пакетов

    rpm -qa

Список файлов, входящих в неустановленный пакет:

    rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it

 rpm2cpio  <  packetname-1.2-1.i386.rpm  | cpio -it rpm2cpio < packet╜
name-1.2-1.i386.rpm | cpio -it
    rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it

Список файлов, входящих в установленный пакет:

    rpm -l   nfs-server-2.2beta16-5

Апдейты к RedHat лежат здесь. Обязательно ставить security updates
 ftp://ftp.funet.fi/pub/Linux/mirrors/redhat/redhat/redhat-4.2/updates/i386/

Установка апдейта
    rpm -Uvh samba-1.9.18p7-0.i386.rpm



            - Network File System.

Стандартной  сетевой файловой системой для UNIX'а является NFS.
Любая Unix-машина умеет монтировать по протоколу NFS  удаленные
файловые  системы и использовать их как свои собственные, а так
же может выделять свои каталоги для других машин. Выглядит  это
примерно так:

   mount -F nfs udalennaq.mashina:/katalog_tam  /katalog

или, если у вас BSD или Linux

   mount -o rsize=8192,wsize=8192 mashina:/katalog_tam  /katalog

   ls -al /katalog

Хотя NFS был когда-то разработан для Unix'а, имеется реализация
NFS для MSDOS-овских PC. Эти пакеты  принято  называть  сводным
именем  PC/NFS (Не путать с названием "PC-NFS" - это реализация
PC/NFS от фирмы "Sun Select"). Т.е. PC'юк, на  котором  запущен
NFS  для  PC,  может  монтировать  в  качестве  сетевых  дисков
каталоги Unix'овской машины, которые  она  выделяет  в  NFS.  -
Фактически,  PC/NFS  дает для PC те же самые возможности, что и
Netware - удаленный сетевой диск и удаленный  сетевой  принтер.
Разница  лишь  в том, что Unix-host, помимо позволения NFS-ения
себя, в состоянии заниматься и своими собственными задачами,  а
сервер   Netware   ничем  кроме  обслуживания  своих  клиентов,
изображая  для  них   диск   с   ethernet'ом,   заниматься   не
приспособлен,  но  работает быстрее раза в 1.5-2. Ну и занимают
NFS-ные резиденты порядка 100 Kb оперативной памяти, в то время
как Netwar'ные - порядка 50.


дителей: 486dx2/66, адаптер wd8013 16 bit:

Пакет:         чтение Kb/сек   запись
      NFS for PC
PC-NFS 4.0      220             120
PC-NFS 5.0(**)  220             120
Pathway         350             170
PCTCP 3.0       350             200
TSOFT (*)       200             100
XFS   (*)       500              50
Chameleon NFS(**) 2-е место по результатам тестов
      Unix for PC
Linux/NFS(*)    400             350
FreeBSD/NFS(*)  900             300
Unixware/NFS    400             300
      Прочие
Netware 3.11    500             600
NW Lite         400             500
WFW (Samba)     150             150
Lantastic       ?               ?

        (*)  - условно-бесплатные или бесплатные пакеты
        (**) - защищен от нелицензированного копирования

Для сравнения: скорость чтения/записи NFS между двумя
 SUN SPARCstation и/или IBM/RS6000   900/400 Kb/сек



На  ней  должны  быть запущены следующие демоны:

rpc.portmap     - демон портов RPC (Remote Procedure Call)
                  (поскольку NFS использует RPC)
                  (На Motorole не требуется.)

mountd          - обслуживание команд монтирования (он решает -
                  разрешить/ не разрешить)

nfsd            - непосредственное обслуживание протокола NFS

biod            - кэширование NFS-чтений на клиенте
                  (только в SunOS)

pcnfsd          - проводит дополнительную "авторизацию" пользо-
                  вателей  на  PC/NFS клиентах. Поскольку MSDOS
                  не занимается учетом и регистрацией пользова-
                  теля,  pcnfsd  сам  спрашивает  у   PC-ишного
                  user'а его имя и пароль.
                  (не обязателен, но желателен)

Обычно все эти  демоны запускаются на уровне выполнения 3. Пос-
мотрите, с большой  вероятностью  вы обнаружите на своей машине
файл с названием наподобие:

  /etc/rc3.d/S22nfs - предназначен для запуска NFS-сервера

Должно быть  указано,  какие  именно каталоги, разрешается "ви-
деть" по NFS, и каким именно машинам это разрешается.

Эти каталоги указываются в файле

/etc/dfs/dfstab         и    экспортируются    явной   командой
shareall или share (если у вас SVR4)

    или в файле
/etc/exports      и экспортируются явно командой
exportfs -a     (если у вас какой либо другой UNIX)



Обычно, на машине  со  свежеустановленным Unix'ом NFS сервер не
активизирован. Чтобы он  запустился,  системный   администратор
должен обеспечить выполнение условий перечисленных в предыдущем
пункте. Для этого достаточно:



В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие
демонов
        rpc.portmap
        rpc.nfsd
        rpc.mountd
        rpc.ugidd

В файл /etc/exports вставьте строку
/ (rw)

Перезагрузитесь


Last-modified: Wed, 19 Apr 2023 06:26:30 GMT