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

Материал из Библиотека ТК МГТУ им. Н. Э. Баумана
Перейти к: навигация, поиск
()
()
 
(не показано 17 промежуточных версий этого же участника)
Строка 2: Строка 2:
  
 
== План лекции ==
 
== План лекции ==
=== Работа в командной строке (15-20 мин) ===
+
=== Работа в командной строке (25 мин) ===
==== Общая информация ====
+
==== Общая информация (5 мин) ====
 
*основным интерфейсом в ОС семейства UNIX является командная строка (аналогия с command.com и cmd.exe)
 
*основным интерфейсом в ОС семейства UNIX является командная строка (аналогия с command.com и cmd.exe)
 
*Консольные оболочки UNIX (shell): sh, bash<br>
 
*Консольные оболочки UNIX (shell): sh, bash<br>
 
**sh - наиболее распрастраненный из стандартных
 
**sh - наиболее распрастраненный из стандартных
 
**bash - расширенный sh, удобнее пользоваться (в стандартной поставке Solaris отсутствует, в Linux единственный) <br>(работает Backspace, Tab, стрелки вверх и вниз)
 
**bash - расширенный sh, удобнее пользоваться (в стандартной поставке Solaris отсутствует, в Linux единственный) <br>(работает Backspace, Tab, стрелки вверх и вниз)
''Коммандный интерпретатор'' - программа которая читает построчно команды пользователя и выполняет их, выводя результат на экран
+
''Коммандный интерпретатор'' - программа которая читает построчно команды пользователя и выполняет их, выводя результат на экран.
  
 
Команды бывают:
 
Команды бывают:
 
*встроенные (cd, pwd, echo, alias, unalias, exit, bg, fg, jobs, kill, export, set)
 
*встроенные (cd, pwd, echo, alias, unalias, exit, bg, fg, jobs, kill, export, set)
*внешние (ls, cp, mv, printenv, top)
+
*внешние (ls, cp, mv, env, top)
  
 
Подавляющее большинство команд принимают различные ключи, модифицирующие их поведение.
 
Подавляющее большинство команд принимают различные ключи, модифицирующие их поведение.
 
Список основных ключей для программы можно получить, вызвав краткую справку выдаваемую самой программой:
 
Список основных ключей для программы можно получить, вызвав краткую справку выдаваемую самой программой:
$ <имя программы> --help
+
 
 +
$ <имя программы> --help
 +
 
 
подробное руковосдство пользователя доступно в  виде man-страниц (система помощи):
 
подробное руковосдство пользователя доступно в  виде man-страниц (система помощи):
$ man [номер страницы] <имя программы>
 
  
Также на поведение программ влияют значения переменных окружения (environment variables),
+
$ man [номер страницы] <имя программы>
список которых можно посмотреть по команде:
 
$ printenv
 
Наиболее значимые: PATH, HOME, LANG, PS1
 
  
Система ищет программу с введенным именем в каталогах указанных в переменной PATH в порядке их следования слева направо, и если е находит выдает ошибку.
+
Система ищет программу с введенным именем в каталогах указанных в переменной PATH в порядке их следования слева направо, и если не находит выдает ошибку.
 
Посмотреть текущий путь поиска можно командой:
 
Посмотреть текущий путь поиска можно командой:
$ echo $PATH
+
 
 +
$ echo $PATH
  
 
Следует обратить внимание, что текущий каталог («.») по-умолчанию в путь поиска не входит, поэтому для запуска программы находящейся в текущей директории требуется вызывать ее с указанием относительного пути к программе:
 
Следует обратить внимание, что текущий каталог («.») по-умолчанию в путь поиска не входит, поэтому для запуска программы находящейся в текущей директории требуется вызывать ее с указанием относительного пути к программе:
 +
 
$ ./<имя программы>
 
$ ./<имя программы>
  
==== Основные команды ====
+
==== Основные команды (10 мин) ====
 
*'''date''' - получение текущей даты
 
*'''date''' - получение текущей даты
 
  $ date
 
  $ date
Строка 89: Строка 89:
  
 
*'''more <имя файла>''' - показывать файл постранично<br>удобно для просмотра больших файлов
 
*'''more <имя файла>''' - показывать файл постранично<br>удобно для просмотра больших файлов
 +
 +
*'''grep <pattern> <files list>'''  - поиск в списке файлов строк соответствующих шаблону
 +
: -i - без учета регистра
 +
: -R - рекурсивно
  
 
*'''touch <путь к файлу>''' - тронуть файл(установить дату изменения на текущую), если файл не существует – создать (будет создан пустой файл)
 
*'''touch <путь к файлу>''' - тронуть файл(установить дату изменения на текущую), если файл не существует – создать (будет создан пустой файл)
 
  
 
*'''ln <имя файла> <имя файла ссылки>''' - создать жесткую (hard) ссылку на файл
 
*'''ln <имя файла> <имя файла ссылки>''' - создать жесткую (hard) ссылку на файл
Строка 104: Строка 107:
 
*'''id''' - показать идентификатор текущего пользователя
 
*'''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>
 +
В основном используются для хранения  настроек прикладных программ в домашней папке пользователя (чтобы не мешались в листингах файлов при работе).
 +
 
 +
==== Управление пользователями (10 мин) ====
 
*вся настройка системы производится с помощью правки конфигурационных файлов (аналогия с autoexec.bat, config.sys)
 
*вся настройка системы производится с помощью правки конфигурационных файлов (аналогия с autoexec.bat, config.sys)
*демоны из них читают конфигурацию при запуске, и пишут журналы в лог-файлы
 
 
*список пользователей системы хранится в файле /etc/passwd, групп в файле /etc/group
 
*список пользователей системы хранится в файле /etc/passwd, групп в файле /etc/group
 
*аттрибуты файла, октеты: User, Group, Other
 
*исполняемые файлы (+x), скрытые файлы
 
*списки пользователей (/etc/passwd) и групп (/etc/group)
 
 
*основные команды:
 
*основные команды:
 
...
 
...
 
 
  
 
=== Текстовый редактор vi (10 мин) ===
 
=== Текстовый редактор vi (10 мин) ===
Строка 123: Строка 204:
 
...
 
...
  
=== Настройка сети, команды для работы с сетью (10 мин) ===
+
=== Настройка сети, команды для работы с сетью (20 мин) ===
 
разница между ручной настройкой и настройкой при загрузке компа - инизиализациооные скрипты
 
разница между ручной настройкой и настройкой при загрузке компа - инизиализациооные скрипты
 
указать пути ко всем необходимым файлам и их назначение
 
указать пути ко всем необходимым файлам и их назначение

Текущая версия на 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