Linux: курс молодого бойца — различия между версиями

Материал из Библиотека ТК МГТУ им. Н. Э. Баумана
Перейти к: навигация, поиск
()
()
 
(не показаны 22 промежуточные версии этого же участника)
Строка 1: Строка 1:
Данный курс состоит из лекции (45 - 90 минут) и практического занятия (30 мимнут)
+
Данный курс состоит из лекции (45 - 90 минут) и практического занятия (90 мимнут)
  
 
== План лекции ==
 
== План лекции ==
=== Какие бывают UNIX'ы (15-30 мин) ===
+
=== Работа в командной строке (25 мин) ===
 +
==== Общая информация (5 мин) ====
 +
*основным интерфейсом в ОС семейства UNIX является командная строка (аналогия с command.com и cmd.exe)
 +
*Консольные оболочки UNIX (shell): sh, bash<br>
 +
**sh - наиболее распрастраненный из стандартных
 +
**bash - расширенный sh, удобнее пользоваться (в стандартной поставке Solaris отсутствует, в Linux единственный) <br>(работает Backspace, Tab, стрелки вверх и вниз)
 +
''Коммандный интерпретатор'' - программа которая читает построчно команды пользователя и выполняет их, выводя результат на экран.
  
Коммерческие:
+
Команды бывают:
*Solaris (SPARC, x86) - Sun Microsystens
+
*встроенные (cd, pwd, echo, alias, unalias, exit, bg, fg, jobs, kill, export, set)
*HP-UX (PA-RISC, Itanium) - HP
+
*внешние (ls, cp, mv, env, top)
*AIX (PowerPC) - IBM
 
*IRIX (MIPS) - SGI
 
*Tru64 UNIX (Alpha) - DIGITAL
 
  
- основаны на лицензированном коде оригинальной UNIX, стоят дорого (~5000k), предназначены для поставки вместе с серверами<br>
+
Подавляющее большинство команд принимают различные ключи, модифицирующие их поведение.
- написаны вендорами для своих серверов<br>
+
Список основных ключей для программы можно получить, вызвав краткую справку выдаваемую самой программой:
(указать причины схода со сцены остальных версий: победа x86 (Linux, Windows) над серверными архитектурами, дороговизна дальшней разработки и поддержки собственной ОС (не успевают за рынком и аппаратным обеспечением))
 
  
Свободные:
+
$ <имя программы> --help
*Linux (все архитектуры)
 
*FreeBSD, NetBSD, OpenBSD (все архитектуры в версии NetBSD)
 
- не содержат кода UNIX, свободно распространяются, бесплатны<br>
 
- написаны энтузиастами для того чтобы иметь полноценный UNIX на персоналке<br>
 
  
отдельно стоит Mac OS X (PowerPC) компании Apple (основана на коде FreeBSD)
+
подробное руковосдство пользователя доступно в  виде man-страниц (система помощи):
  
'''Рассматриваем:'''
+
$ man [номер страницы] <имя программы>
*Solaris
 
- работает на SPARC и x86<br>
 
- SPARC - мощная дорогая платформа для высокопроизводительных, высоконадежных серверов (банки, телекомуникацционые компании, большие базы данных (Oracle))<br>
 
(точно встретиться в профессиональной деятелньости)
 
*Linux
 
- низкая стоимость относительно коммерческих UNIX, больше распространен чем BSD (взять % из  netcraft)<br>
 
- работает на персоналках (x86), наиболее широко используется на веб-серверах<br>
 
(указать причины потери популярности BSD: неудобство для вендоров, вялое развитие)
 
  
упомянуть: что студенты обязательно столкнутся либо с Linux либо с Solaris в своей профессиональной деятельности,
+
Система ищет программу с введенным именем в каталогах указанных в переменной PATH в порядке их следования слева направо, и если не находит выдает ошибку.
указать что про линукс в интернете много документации, потому не рассматриваем в практической плоскости
+
Посмотреть текущий путь поиска можно командой:
  
=== Основные пользовательские команды (15-20 мин) ===
+
$ echo $PATH
кратце о файловой системе
+
 
(тонкости и ньюансы: как обозначаются скрытые файлы, обязательные 2 файла ("." и "..") в каждом каталоге)
+
Следует обратить внимание, что текущий каталог («.») по-умолчанию в путь поиска не входит, поэтому для запуска программы находящейся в текущей директории требуется вызывать ее с указанием относительного пути к программе:
*домашная директория и переменные окружения ($HOME, $PATH, $PS, printenv(есть ли в соларис?) )
+
 
*список команд и краткое описание их ключей:
+
$ ./<имя программы>
...
+
 
 +
==== Основные команды (10 мин) ====
 +
*'''date''' - получение текущей даты
 +
$ date
 +
Mon Nov  7 20:49:47 MSK 2005
 +
*'''echo "текст"''' - ввод строки на стандартный выход
 +
$ echo "Hello world!"
 +
Hello world!
 +
*'''pwd''' - вывод абсолюьного пути к текущей директории
 +
$ pwd
 +
/home/init
 +
 
 +
*'''ls''' - листинг текущего каталога (выводит список файлов за исключением скрытых)
 +
*'''ls <путь>''' - листинг каталога путь к которому указан в качестве параметра
 +
ключи:
 +
: -a     - показывать скрытые файлы
 +
: -l     - вывод подробной информации по каждому файлу
 +
т.е. если вы хотите получить подробную информацию о скрытых файлах в данном каталоге, вы должны выполнить:
 +
$ ls –l –a
 +
итого 36
 +
drwx------  4 step step 4096 Авг 26 18:40 ./
 +
drwxr-xr-x  12 root root 4096 Окт 20 13:35 ../
 +
-rw-r--r--  1 step step  24 Янв  5  2004 .bash_logout
 +
-rw-r--r--  1 step step  191 Янв  5  2004 .bash_profile
 +
-rw-r--r--  1 step step  124 Янв  5  2004 .bashrc
 +
drwxr-xr-x  2 step step 4096 Авг 26 18:40 .gimp-1.2/
 +
-rw-r--r--  1 step step  141 Май 15  2001 .mailcap
 +
-rw-r--r--  1 step step 3729 Дек 10  2003 .screenrc
 +
drwx------  2 step step 4096 Сен  8  2003 tmp/
 +
 
 +
 
 +
*'''cd <путь>''' - смена текущей папки на заданную в качестве параметра
 +
Пример:
 +
перейти на каталог вверх:
 +
$ cd ..
 +
 
 +
*'''cp <источник> <адресат>''' - копирование файлов или каталогов
 +
ключи:
 +
: -R - рекурсивно копировать каталоги, т.е. со всем содержимым
 +
 
 +
*'''mv <имя> <новое имя>''' - переименование/перемещение файла или каталога
 +
 
 +
*'''rm <путь>''' - удалить файл или каталог
 +
ключи:
 +
: -R - рекурсивно, т.е. удалять каталоги со всем содержимым
 +
 
 +
*'''mkdir <папка>''' - создать новый каталог c именем <папка>
 +
 
 +
*'''rmdir <папка>''' - удалить каталог c именем <папка>
 +
 
 +
*'''cat <имя файла>''' - вывод содержимого файла на экран
 +
 
 +
*'''tail <имя файла>''' - показывает несколько последних строк файла<br>(удобно для просмотра лог-файлов)
 +
ключи:
 +
: -l <количество строк> (solaris??? проверить)
 +
: -n <количество строк> (linux)
 +
 
 +
*'''more <имя файла>''' - показывать файл постранично<br>удобно для просмотра больших файлов
 +
 
 +
*'''grep <pattern> <files list>'''  - поиск в списке файлов строк соответствующих шаблону
 +
: -i - без учета регистра
 +
: -R - рекурсивно
 +
 
 +
*'''touch <путь к файлу>''' - тронуть файл(установить дату изменения на текущую), если файл не существует – создать (будет создан пустой файл)
 +
 
 +
*'''ln <имя файла> <имя файла ссылки>''' - создать жесткую (hard) ссылку на файл
 +
: -s - создать мягкую (soft) ссылку
 +
 
 +
*'''ps''' - получение списка процессов в системе
 +
 
 +
*'''kill <pid>''' - завершение работы процесса с номером <pid>
 +
 
 +
*'''top''' - показывает топ активных процессов, в реальном времени (обновляет раз в несколько секунд)
 +
 
 +
*'''id''' - показать идентификатор текущего пользователя
 +
 
 +
*'''df''' - показать количество свободного места на дисках
 +
 
 +
*'''du <file list>''' - показать использование места на диске указанными файлами
 +
 
 +
'''Дополнительные возможности:'''<br>
 +
Для запуска команды в фоновом режиме достаточно добавить символ '''&''' в конце набранной команды.
 +
Для того чтобы последовательно выполнить несколько команд одной строкой надо разделить их ''';'''.
 +
 
 +
==== Переменые окружения (environment variables) (5 мин) ====
 +
Поведение программ как внешних так и встроенных могут влиять значения переменных окружения.
 +
Переменные окружения создаются при входе пользователя в систему, и сбрасываются при выходе.
 +
Наиболее значимые: PATH, HOME, LANG, PS1
 +
 
 +
Просмотр значений все переменных:
 +
 
 +
$ '''printenv'''
 +
 
 +
Просмотр одной переменной:
 +
 
 +
$ '''echo $PATH'''
 +
 
 +
Установка значения переменной:
 +
 
 +
$ '''export LANG=ru_RU.KOI8-R'''
 +
 
 +
==== Перенаправление ввода-вывода (5 мин) ====
 +
Большинство команд оболочки расчитаны на то чтобы работать в связках.<br>
 +
Операторы перенаправления ввода-вывода:
 +
*''' $ command > <file>''' - перенаправить вывод (STDOUT) в файл (файл будет перезаписан)
 +
*''' $ command >> <file>''' - перенаправить вывод (STDOUT) в файл (данные будут дописаны в конец файла)
 +
*''' $ command 2> <file>''' - перенаправить вывод ошибок (STDERR)в файл
 +
*''' $ command < <file>''' - взять ввод из файла
 +
*''' $ command1 | command2 | command3 ...''' - потоковая обработка
 +
 
 +
Также существует некоторый набор устройств, активно используемых при потоковой обработке:
 +
*'''/dev/null''' - можно писать сколько угодно, данные исчезают в никуда
 +
*'''/dev/zero''' - можно читать неограниченое количество нулей
 +
*'''/dev/random''' - источник случайных чисел
 +
 
 +
Примеры:
 +
$ echo "Hello World!" > hello.txt
 +
$ cat /etc/passwd | grep 'vano'
 +
$ cat /var/log/httpd/access_log | more
 +
$ ./imagine -o /dev/null
 +
 
 +
=== Пользователи, группы, права доступа, команды для работы с ними (25 мин) ===
 +
==== Управление правами доступа (10 мин) ====
 +
Права доступа на файл/каталог имееют следующий вид:<br>
 +
первый октет – права доступа для владельца,<br>
 +
второй октет – права доступа для группы,<br>
 +
третий октет – права доступа для всех остальных.<br>
 +
Каждый октет состоит из 3-х бит, задающих права доступа на чтение(старший), запись (средний), и выполнение(младший).<br>
 +
Пример:<br>
 +
Если файл должен быть доступен владельцу для чтения и записи, группе на чтение,<br>
 +
а остальным недоступен, то режим достпа к файлу будет  задаваться числом «640»:
 +
+---------------------------------+
 +
| владелец |  группа  | остальные |
 +
|  R W X  |  R W X  |  R W X    |
 +
|  1 1 0  |  1 0 0  |  0 0 0    |
 +
+---------------------------------+
 +
      6          4          0
 +
 
 +
*'''chmod <доступ> <файл>''' - узменение прав доступа на файл/каталог
 +
Примеры:
 +
$ chmod 666 index.html - доступ на чтение и запись всем
 +
$ chmod 755 index.html - доступ на запись автору, на исполнеие и чтение всем
 +
также возможна следующая форма написания команды:
 +
*'''chmod [ugo][+-][rwxst] <файл>''' - сделать файл исполняемым
 +
Примеры:
 +
*'''chmod +x <файл>''' - сделать файл исполняемым
 +
*'''chmod o-r <файл>''' - запретить чтение остальным
 +
 
 +
*'''chown <ключи> <пользователь>[:<группа>] <файл> - смена владельца файла
 +
: -R - рекурсивно
 +
 
 +
*'''chgrp <ключи> <группа> <файл> - смена группы файла
 +
: -R - рекурсивно
 +
 
 +
==== Скрытые и исполняемы файлы (5 мин) ====
 +
В UNIX скрытыми считаются файлы, имя которых начинается с ".", в каждом каталоге минимум 2 таких файла:<br>
 +
: "." - сслыка на самого себя
 +
: ".." - ссылка на родительский каталог
 +
Скрытые файлы не показыватся в стандартном выводе команды '''ls''' (нужено указывать параметр '''-a''')<br>
 +
В основном используются для хранения  настроек прикладных программ в домашней папке пользователя (чтобы не мешались в листингах файлов при работе).
  
=== Пользователи, группы, права доступа, команды для работы с ними (15-20 мин) ===
+
==== Управление пользователями (10 мин) ====
*аттрибуты файла, октеты: User, Group, Other
+
*вся настройка системы производится с помощью правки конфигурационных файлов (аналогия с autoexec.bat, config.sys)
*исполняемые файлы (+x)
+
*список пользователей системы хранится в файле /etc/passwd, групп в файле /etc/group
*списки пользователей (/etc/passwd) и групп (/etc/group)
 
 
*основные команды:
 
*основные команды:
 
...
 
...
Строка 56: Строка 204:
 
...
 
...
  
=== Настройка сети, команды для работы с сетью (10 мин) ===
+
=== Настройка сети, команды для работы с сетью (20 мин) ===
 
разница между ручной настройкой и настройкой при загрузке компа - инизиализациооные скрипты
 
разница между ручной настройкой и настройкой при загрузке компа - инизиализациооные скрипты
 
указать пути ко всем необходимым файлам и их назначение
 
указать пути ко всем необходимым файлам и их назначение
Строка 63: Строка 211:
  
 
== План практического занятия ==
 
== План практического занятия ==
 +
*добавление нового пользователя и рабочей группы с пом. редактора vi (5-10 мин)
 +
*создание папки общего доступа для этой группы (5 мин)
 +
*горячая настройка сетевого интерфейса (5-10 мин)
 +
*включение сервиса ftp и telnet  (5 мин)
 +
*вход на другую машину по telnet и ФТП (5 мин)
 +
опционально:
 +
*просмотр списка активных пользователей на машине
 +
*чат в пределах локальной машины
 +
*ps, top, netstat

Текущая версия на 10:51, 23 апреля 2006

Данный курс состоит из лекции (45 - 90 минут) и практического занятия (90 мимнут)

План лекции

Работа в командной строке (25 мин)

Общая информация (5 мин)

  • основным интерфейсом в ОС семейства UNIX является командная строка (аналогия с command.com и cmd.exe)
  • Консольные оболочки UNIX (shell): sh, bash
    • sh - наиболее распрастраненный из стандартных
    • bash - расширенный sh, удобнее пользоваться (в стандартной поставке Solaris отсутствует, в Linux единственный)
      (работает Backspace, Tab, стрелки вверх и вниз)

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

Команды бывают:

  • встроенные (cd, pwd, echo, alias, unalias, exit, bg, fg, jobs, kill, export, set)
  • внешние (ls, cp, mv, env, top)

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

$ <имя программы> --help

подробное руковосдство пользователя доступно в виде man-страниц (система помощи):

$ man [номер страницы] <имя программы>

Система ищет программу с введенным именем в каталогах указанных в переменной PATH в порядке их следования слева направо, и если не находит выдает ошибку. Посмотреть текущий путь поиска можно командой:

$ echo $PATH

Следует обратить внимание, что текущий каталог («.») по-умолчанию в путь поиска не входит, поэтому для запуска программы находящейся в текущей директории требуется вызывать ее с указанием относительного пути к программе:

$ ./<имя программы>

Основные команды (10 мин)

  • date - получение текущей даты
$ date
Mon Nov  7 20:49:47 MSK 2005
  • echo "текст" - ввод строки на стандартный выход
$ echo "Hello world!"
Hello world!
  • pwd - вывод абсолюьного пути к текущей директории
$ pwd
/home/init
  • ls - листинг текущего каталога (выводит список файлов за исключением скрытых)
  • ls <путь> - листинг каталога путь к которому указан в качестве параметра

ключи:

-a - показывать скрытые файлы
-l - вывод подробной информации по каждому файлу

т.е. если вы хотите получить подробную информацию о скрытых файлах в данном каталоге, вы должны выполнить:

$ ls –l –a
итого 36
drwx------   4 step step 4096 Авг 26 18:40 ./
drwxr-xr-x  12 root root 4096 Окт 20 13:35 ../
-rw-r--r--   1 step step   24 Янв  5  2004 .bash_logout
-rw-r--r--   1 step step  191 Янв  5  2004 .bash_profile
-rw-r--r--   1 step step  124 Янв  5  2004 .bashrc
drwxr-xr-x   2 step step 4096 Авг 26 18:40 .gimp-1.2/
-rw-r--r--   1 step step  141 Май 15  2001 .mailcap
-rw-r--r--   1 step step 3729 Дек 10  2003 .screenrc
drwx------   2 step step 4096 Сен  8  2003 tmp/


  • cd <путь> - смена текущей папки на заданную в качестве параметра

Пример: перейти на каталог вверх:

$ cd ..
  • cp <источник> <адресат> - копирование файлов или каталогов

ключи:

-R - рекурсивно копировать каталоги, т.е. со всем содержимым
  • mv <имя> <новое имя> - переименование/перемещение файла или каталога
  • rm <путь> - удалить файл или каталог

ключи:

-R - рекурсивно, т.е. удалять каталоги со всем содержимым
  • mkdir <папка> - создать новый каталог c именем <папка>
  • rmdir <папка> - удалить каталог c именем <папка>
  • cat <имя файла> - вывод содержимого файла на экран
  • tail <имя файла> - показывает несколько последних строк файла
    (удобно для просмотра лог-файлов)

ключи:

-l <количество строк> (solaris??? проверить)
-n <количество строк> (linux)
  • more <имя файла> - показывать файл постранично
    удобно для просмотра больших файлов
  • grep <pattern> <files list> - поиск в списке файлов строк соответствующих шаблону
-i - без учета регистра
-R - рекурсивно
  • touch <путь к файлу> - тронуть файл(установить дату изменения на текущую), если файл не существует – создать (будет создан пустой файл)
  • ln <имя файла> <имя файла ссылки> - создать жесткую (hard) ссылку на файл
-s - создать мягкую (soft) ссылку
  • ps - получение списка процессов в системе
  • kill <pid> - завершение работы процесса с номером <pid>
  • top - показывает топ активных процессов, в реальном времени (обновляет раз в несколько секунд)
  • id - показать идентификатор текущего пользователя
  • df - показать количество свободного места на дисках
  • du <file list> - показать использование места на диске указанными файлами

Дополнительные возможности:
Для запуска команды в фоновом режиме достаточно добавить символ & в конце набранной команды. Для того чтобы последовательно выполнить несколько команд одной строкой надо разделить их ;.

Переменые окружения (environment variables) (5 мин)

Поведение программ как внешних так и встроенных могут влиять значения переменных окружения. Переменные окружения создаются при входе пользователя в систему, и сбрасываются при выходе. Наиболее значимые: PATH, HOME, LANG, PS1

Просмотр значений все переменных:

$ printenv

Просмотр одной переменной:

$ echo $PATH

Установка значения переменной:

$ export LANG=ru_RU.KOI8-R

Перенаправление ввода-вывода (5 мин)

Большинство команд оболочки расчитаны на то чтобы работать в связках.
Операторы перенаправления ввода-вывода:

  • $ command > <file> - перенаправить вывод (STDOUT) в файл (файл будет перезаписан)
  • $ command >> <file> - перенаправить вывод (STDOUT) в файл (данные будут дописаны в конец файла)
  • $ command 2> <file> - перенаправить вывод ошибок (STDERR)в файл
  • $ command < <file> - взять ввод из файла
  • $ command1 | command2 | command3 ... - потоковая обработка

Также существует некоторый набор устройств, активно используемых при потоковой обработке:

  • /dev/null - можно писать сколько угодно, данные исчезают в никуда
  • /dev/zero - можно читать неограниченое количество нулей
  • /dev/random - источник случайных чисел

Примеры:

$ echo "Hello World!" > hello.txt
$ cat /etc/passwd | grep 'vano'
$ cat /var/log/httpd/access_log | more
$ ./imagine -o /dev/null

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

Управление правами доступа (10 мин)

Права доступа на файл/каталог имееют следующий вид:
первый октет – права доступа для владельца,
второй октет – права доступа для группы,
третий октет – права доступа для всех остальных.
Каждый октет состоит из 3-х бит, задающих права доступа на чтение(старший), запись (средний), и выполнение(младший).
Пример:
Если файл должен быть доступен владельцу для чтения и записи, группе на чтение,
а остальным недоступен, то режим достпа к файлу будет задаваться числом «640»:

+---------------------------------+
| владелец |  группа  | остальные |
|  R W X   |  R W X   |  R W X    |
|  1 1 0   |  1 0 0   |  0 0 0    |
+---------------------------------+
     6          4          0
  • chmod <доступ> <файл> - узменение прав доступа на файл/каталог

Примеры:

$ chmod 666 index.html - доступ на чтение и запись всем
$ chmod 755 index.html - доступ на запись автору, на исполнеие и чтение всем

также возможна следующая форма написания команды:

  • chmod [ugo][+-][rwxst] <файл> - сделать файл исполняемым

Примеры:

  • chmod +x <файл> - сделать файл исполняемым
  • chmod o-r <файл> - запретить чтение остальным
  • chown <ключи> <пользователь>[:<группа>] <файл> - смена владельца файла
-R - рекурсивно
  • chgrp <ключи> <группа> <файл> - смена группы файла
-R - рекурсивно

Скрытые и исполняемы файлы (5 мин)

В UNIX скрытыми считаются файлы, имя которых начинается с ".", в каждом каталоге минимум 2 таких файла:

"." - сслыка на самого себя
".." - ссылка на родительский каталог

Скрытые файлы не показыватся в стандартном выводе команды ls (нужено указывать параметр -a)
В основном используются для хранения настроек прикладных программ в домашней папке пользователя (чтобы не мешались в листингах файлов при работе).

Управление пользователями (10 мин)

  • вся настройка системы производится с помощью правки конфигурационных файлов (аналогия с autoexec.bat, config.sys)
  • список пользователей системы хранится в файле /etc/passwd, групп в файле /etc/group
  • основные команды:

...

Текстовый редактор vi (10 мин)

Без тектового редактора в UNIX не поправишь ни одного конфигурационного файла (вся система на них построена). vi cамый древний, очень нелогичный и неудобный для новичка, зато есть на всех UNIX машинах, потому и изучаем. Краткое руководство: ...

Настройка сети, команды для работы с сетью (20 мин)

разница между ручной настройкой и настройкой при загрузке компа - инизиализациооные скрипты указать пути ко всем необходимым файлам и их назначение Основные команды: ...

План практического занятия

  • добавление нового пользователя и рабочей группы с пом. редактора vi (5-10 мин)
  • создание папки общего доступа для этой группы (5 мин)
  • горячая настройка сетевого интерфейса (5-10 мин)
  • включение сервиса ftp и telnet (5 мин)
  • вход на другую машину по telnet и ФТП (5 мин)

опционально:

  • просмотр списка активных пользователей на машине
  • чат в пределах локальной машины
  • ps, top, netstat