====== Работа в командной строке UNIX ====== * "UNIX в основном простая операционная система, но нужно быть гением, чтобы понять её простоту" (Денис Ритчи) * "Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий" (Козьма Прутков) ===== Программа курса ===== * [[http://www.specialist.ru/course/yuncom|Linux/FreeBSD. Уровень «На старт». Эффективная работа в командной строке]] ===== Offline материалы к курсу ===== * [[http://val.bmstu.ru/unix/Docs/unix1_materials.zip]] ===== Видео уроки ===== * [[Видео уроки#Работа в системе Linux/FreeBSD]] ===== Модуль 0. Подготовка стенда в классе. ===== * Узнать свой номер стенда ipconfig /all route delete 172.16.1.0 -p * Удалить виртуалки * Удалить профили putty * Отключить не используемые адаптеры * Записать логин пароль и IP (сообщить преподавателю) рабочей станции * Проверить наличие дистрибутивов и образов ===== Модуль 1. Знакомство с UNIX ===== ==== Теория ==== История и стандарты * [[https://ru.wikipedia.org/wiki/Bell_Labs|Лаборатории Белла]] * [[https://ru.wikipedia.org/wiki/Space_Travel_(игра)|Space Travel]] * [[https://ru.wikipedia.org/wiki/UNIX|UNIX]] * Список команд 1-й редакции UNIX (1971) ''cat, chdir, chmod, cp, ed, find, mail, mkdir, mkfs, mount, mv, rm, rmdir, wc, who.'' * [[https://ru.wikipedia.org/wiki/UNIX_System_V|UNIX System V]] * [[https://ru.wikipedia.org/wiki/BSD|UNIX BSD]] * [[https://ru.wikipedia.org/wiki/POSIX|POSIX]] * [[https://ru.wikipedia.org/wiki/История_Linux|История Linux]] * [[https://ru.wikipedia.org/wiki/FreeBSD|FreeBSD]] * [[https://ru.wikipedia.org/wiki/Plan_9|Plan 9]] * [[Организация системы UNIX]] * [[https://youtu.be/jAhvVBpx3IM|Видео: Как пользователи использовали UNIX :)]] Подключение к UNIX * [[https://ru.wikipedia.org/wiki/Телетайп|Телетайп]] * [[https://ru.wikipedia.org/wiki/Текстовый_терминал|Текстовый_терминал]] * [[https://ru.wikipedia.org/wiki/RS-232|Интерфейс RS-232]] * [[https://ru.wikipedia.org/wiki/Telnet|Telnet]] * [[https://ru.wikipedia.org/wiki/SSH|Протокол SSH]] * [[https://ru.wikipedia.org/wiki/X_Window_System|X Window System]] * [[https://ru.wikipedia.org/wiki/XDM|X Display Manager]] Работа в командной строке * [[https://ru.wikipedia.org/wiki/Интерфейс_командной_строки|Интерфейс командной строки]] * [[https://ru.wikipedia.org/wiki/Bash|Bourne again shell]] ==== Лабораторные работы ==== Входное тестирование - скачать свежий образ netinst под архитектуру amd64 с сайта * https://www.debian.org/ Подключение к уже установленной и настроенной системе * [[https://youtu.be/7lE8Y8U4M0g|Видео урок: Принцип работы терминала UNIX]] * [[https://www.tutorialspoint.com/unix_terminal_online.php|Unix Terminal Online]] * [[http://www.freeemulator.com/online-terminal-emulator/|ONLINE TERMINAL EMULATOR]] * getty/login (демонстрирует преподаватель) * putty, winscp (во 2-м модуле) * ssh из unix в unix (после развертывания собственной системы) Принципы работы в системе * [[https://youtu.be/jAhvVBpx3IM|Видео урок: Как пользователи использовали UNIX :)]] * [[Структура команд UNIX]] * [[Документация UNIX]] ==== Вопросы ==== - Какие Windows программы могут быть использованы для подключения к UNIX системе по протоколу ssh? - Что определяют аргументы команды/утилиты? - Что определяют ключи/опции команды/утилиты? - Какая команда используется для чтения UNIX документации? - Как осуществляется поиск в UNIX документации? ===== Модуль 2. Файлы в UNIX ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/Файловая_система|Файловая система]] * [[https://ru.wikipedia.org/wiki/Unix_File_System|Unix File System]] * [[https://ru.wikipedia.org/wiki/Ext|Linux Extended File System]] * [[https://ru.wikipedia.org/wiki/Procfs|procfs]] * [[https://ru.wikipedia.org/wiki/Udev|udev]] * [[Структура файловой системы]] ==== Лабораторные работы ==== * [[Команды для работы с файловой системой]] * [[Команды чтения содержимого файлов]] * [[Текстовые редакторы ed, sed, vi, vim]] ([[https://youtu.be/r8e7F46un7A|Видео урок]]) * [[Текстовый редактор nano]] * [[Настройка командных интерпретаторов]] (комбинации клавиш, повтор и автоподстановка команд) * [[Команды фильтры]] (выполнить работу в теме перенаправления ввода вывода) * [[Регулярные выражения]] ([[https://youtu.be/BhbDsKetNn8|Видео урок]]) * [[Утилиты diff и patch]] ([[https://youtu.be/vqPaHyisBB0|Видео урок]]) * [[Система контроля версий rcs]] ([[https://youtu.be/QyhaKdgg4LE|Видео урок]]) * [[Генератор отчетов awk]] ([[https://youtu.be/4PkkMzB7fIM|Видео урок]]) * [[Команда tar]] (выполнить работу в конце курса) * Команды scp, wget (в лабораторных работах следующего модуля) ==== Вопросы ==== - Что обозначают ключи «a», «l» в команде ls? - Какой командой можно создать файл? - Что означает символы "~", ".", "..", "/" в имени файла? - Что обозначают ключи "h/H", "v", "r/R" во многих командах? - Какие команды используются для анализа занятого места на диске/в каталоге? - Какой командой можно удалить непустой каталог? - Какие команды могут быть использованы для поиска файлов? - Какие команды используются для просмотра содержимого файлов? - Какая программа может быть использована для копирования файлов между UNIX и Windows по протоколу ssh? - Какой ключ команды tail позволяет "в онлайне" наблюдать процесс появления новых записей в файле? - Какая последовательность клавиш позволяет выйти из редактора vi без сохранения изменений? - Какой командой можно найти содержимое в файле по шаблону? - Какой ключ команды sort позволит отсортировать данные по числовому столбцу? - Что обозначают символы "^", "$", ".", "|" в регулярных выражениях? - Что обозначают ключи "c", "t", "x", "z", "f" в команде tar - Что появится на экране в результате последовательности команд: mkdir dir1; cd dir1/; touch echo ls; * - Каким образом можно определить тип файла в UNIX? ===== Модуль 3. Процессы в UNIX ===== ==== Теория ==== * [[Процессы UNIX]] ==== Лабораторные работы ==== * [[Перенаправление потоков ввода/вывода]] * [[Переменные окружения#Управление процессами через переменные окружения]] * [[Настройка командных интерпретаторов]] (управление приглашением ко вводу PS1) * [[Коды завершения]] * Развертывание виртуальной машины в VirtualBox * Лабораторная работа [[Использование Asterisk в офисной телефонии#2.1 Установка системы server]] из курса по Asterisk * [[Пакет screen]] * [[Управление ПО в Linux]], [[Сервис Asterisk#Установка]] сервиса Asterisk * [[Сигналы]], [[Управление сервисами в Linux]], [[Сервис Asterisk#Настройка базового функционала IP PBX]] # asterisk -x 'sip show users' # ps ax | grep asterisk # kill -s HUP НОМЕР_ПРОЦЕССА # kill -s HUP `cat /var/run/asterisk/asterisk.pid` * Управление заданиями bg, fg, jobs (демонстрирует преподаватель) ==== Вопросы ==== - Что обозначают ключи "a", "x" в команде ps? - Что такое STDIN, STDOUT, STDERR и какие у них номера? - Что обозначают элементы "<", ">", "2>", "&1", "|" в выражениях shell - Объясните, как работает конструкция :> file1 - Чем отличается команда set от команды env? - Что влияет на выбор языка интерфейса в *NIX программах? - Как посмотреть код завершения процесса и какое он должен иметь значение, если не было ошибок? - Что обозначают элементы "&&", "||", ";", "&" в выражениях shell - Объясните, что происходит при использовании комбинаций "Ctrl C", "Ctrl D", "Ctrl Z"? - Как обрабатываются сигналы "HUP", "INT", "TERM", "KILL", "TSTP" процессами? ===== Модуль 4. Система безопасности и права доступа ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C|Компьютерная безопасность - Википедия]] * [[https://ru.wikipedia.org/wiki/%D0%A3%D1%87%D1%91%D1%82%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C|Учётная запись - Википедия]] * [[Система безопасности UNIX#Управление маской доступа]] * [[http://help.ubuntu.ru/wiki/%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0_unix|Права доступа Unix, SUID, SGID, Sticky биты]] ==== Лабораторные работы ==== * [[Система безопасности UNIX]] === Управление атрибутами доступа к файлам === Задание: исправить владельца файла конфигурации sip.conf # ps axu | grep asterisk # ls -l /etc/asterisk/sip.conf # cp /etc/asterisk/sip.conf . # ls -l sip.conf # rm /etc/asterisk/sip.conf # cp sip.conf /etc/asterisk/ # service asterisk restart # asterisk -x 'sip show users' # chown asterisk:asterisk /etc/asterisk/sip.conf или # chmod +r /etc/asterisk/sip.conf # service asterisk restart # asterisk -x 'sip show users' ==== Вопросы ==== - Что обозначают ключ "u" в команде ps? - Для чего предназначены команды chmod, chown? - Что определяет маска 640 или -rw-r----- для файла? - Что обозначает бит "x" для файла и каталога - Что обозначает значение атрибута EUID=0 для процесса? ===== Модуль 5. Программирование на shell ===== ==== Теория ==== * [[https://ru.wikipedia.org/wiki/Bourne_shell|Bourne shell из Википедии]] ==== Лабораторные работы ==== * [[https://youtu.be/GxVmukxVUo0|Видео урок]] * [[Переменные окружения#Присваивание значений переменным окружения в shell]] * [[Средства программирования shell]] * [[Сервис Asterisk#Конференц связь]] * [[Планирование выполнения заданий в Linux#Сервис cron]] ==== Вопросы ==== - Объясните, результаты выражений: a=1;a=a+1;echo $a a=1;a=$a+1;echo $a a=1;a='$a+1';echo $a a=1;a=$(($a+1));echo $a a=Hello;a=$a World;echo $a a=Hello;a=$a\ World;echo $a a=Hello;a='$a World';echo $a a=Hello;a="$a World";echo $a a=/bin;a="ls $a | wc -l";echo $a a=/bin;a='ls $a | wc -l';echo $a a=/bin;a=`ls $a | wc -l`;echo $a a=/bin;a=$(ls $a | wc -l);echo $a - Что определяет комбинация "#!" в начале файла? - Что содержит значение переменных $0, $1, $! - Объясните результат выражения: echo '#!/bin/ls' > ex1; chmod +x ex1; ./ex1 - В чем разница и что общего при запуске скрипта следующими способами: ./script.sh . script.sh sh script.sh - Объясните элементы выражения while :;do - Что обозначают операторы continue, break, exit в sh программах? - Чем завершаются операторы if, case, do в sh программах? - Какой оператор поможет запретить прекращение выполнения скрипта комбинацией клавиш "Ctrl C"? - Какой оператор поможет получить ввод пользователя в sh программе? - Объясните элементы выражений while [ $i -lt 254 ] while test $i -lt 254 - Чем оперирует цикл for в sh программах? - Какой оператор позволяет открывать файлы в sh программах? - Какой оператор необходим для написания на sh искусственного интеллекта? ===== Модуль 6. Дополнительные лабораторные работы ===== * [[Сервис SSH#Аутентификация с использованием ключей ssh]] * [[Пакет screen]] ([[https://youtu.be/YXSC7KeIq3E|Видео урок]])