Технологический семинар: Работа в shell
DESCRIPTION
* Зачем нужен Shell и что такое Bash? * Манипулирование файлами и каталогами * Процессы и переменные среды * Потоки ввода вывода * Создание конвееров * Распараллеливание процессовTRANSCRIPT
Лекция 2. Работа с Shell
www.compscicenter.ru 1
Толстиков Никита [email protected]
СS центр
26.02.2014
www.compscicenter.ru 2 26.02.2014
Командный интерпретатор
www.compscicenter.ru 3 26.02.2014
Командный интерпретатор — это интерфейс взаимодействия между пользователем и операционной системой. Пользователь управляет системой при помощи текстовых команд. Базовые операции определены в стандарте POSIX. Приглашение командной строки: user@server ~$ _ Пример: user@server ~$ whoami user
Shell
www.compscicenter.ru 4 26.02.2014
• sh -‐ Bourne shell • bash -‐ Bourne Again Shell • csh or C shell -‐ shell c СИ подобным синтаксисом • tcsh or TENEX C Shell – расширение csh
Определить установленные: ~$ cat /etc/shells
Пользователи и группы
www.compscicenter.ru 5 26.02.2014
Список пользователей ~$ cat /etc/passwd Список групп: ~$ cat /etc/group UID – идентификатор пользователя. Суперпользователь root UID = 0. GID – идентификатор группы. Системная группа root GID = 0. Добавить пользователя в группу ~$ gpasswd –a user games Сменить пользователя ~$ su vasya Действие от суперпользователя ~$ sudo mkdir /test
Файловая система
www.compscicenter.ru 6 26.02.2014
• Виртуальная файловая система (VFS) — уровень абстракции поверх конкретной реализации файловой системы для обеспечения единообразного доступа ко всем файлам.
• В VFS имеется единое дерево каталогов, а устройства встраиваются (монтируются) в папки.
• Любое устройство в VFS представляется файлом. • Linux работает с большинством из существующих файловых систем. В качестве
основных можно использовать ext2, ext3, ext4, ReiserFS, XFS, JFS.
Структура каталогов
www.compscicenter.ru 7 26.02.2014
• / -‐ корневой каталог • /bin — базовые программы. • /boot — содержит образы ядра и файлы загрузчика. • /etc — конфигурационные файлы. • /dev — файлы устройств. • /home — домашние папки пользователей. • /lib, /lib* — библиотеки и модули ядра. • /mnt, /media — для монтирования устройств. • /opt — для дополнительного ПО. • /proc — информация о процессах. • /root — домашняя папка суперпользователя. • /sbin — программы для суперпользователя.
Структура каталогов
www.compscicenter.ru 8 26.02.2014
• /tmp — для временных файлов. • /sys — информация о ядре. • /usr — файлы программ. • /usr/bin — исполняемые файлы программ. • /usr/share — общие данные всех программ. • /usr/src — код ядра. • /var — меняющиеся данные различных сервисов (база данных, Subversion, …),
логи
Файлы
www.compscicenter.ru 9 26.02.2014
Типы файлов: • Обычные файлы (данные на диске), • Каталоги • Специальные файлы (к примеру, файлы устройств). У одного файла может быть несколько имён (жесткие ссылки). Количество ссылок указывается во втором столбце вывода ~$ ls -‐n Файл существует до тех пор, пока на него есть хотя бы одна ссылка. “Удаление файла” — это удаление одной ссылки. Имена файлов, начинающиеся с . считаются скрытыми.
Файлы устройств
www.compscicenter.ru 10 26.02.2014
Почти любое устройство представлено файлом в VFS (см. каталог /dev). Примеры: • /dev/sda — жесткий диск. • /dev/sdb3 — третий раздел второго жесткого диска. • /dev/cpu — файлы соответствующие процессорам. Файлы потоков ввода/вывода: /dev/stdin, /dev/stdout, /dev/stderr. Существуют специальные фиктивные файлы устройств: /dev/null, /dev/random, /dev/zero, . . . . Работа с устройствами может проходить как обычная работа с файлами.
Каталоги
www.compscicenter.ru 11 26.02.2014
Каталог — это специальный тип файла, содержащий имена файлов. В каждом каталоге есть два специальных файла:
• . — текущий каталог и
• .. — родительский.
У пользователя есть домашний каталог ~. Пути бывают абсолютными (/usr/bin/python) и относительными (downloads/pdfs/, ../../man/). У каталога не может быть жестких ссылок. Зато могут быть мягкие (символические): $ ln -‐s /usr/src/linux-‐3.2.0 /usr/src/linux
Монтирование устройств
www.compscicenter.ru 12 26.02.2014
Монтирование — это подключение файловой в VFS. • Подключение устройства в папку:
$ mount /dev/sda1 /mnt/win8 • Подключение сетевого диска:
$ mount -‐t smbfs //server/folder /mnt/winshare • Подключение .iso образа:
$ mount -‐o loop disk1.iso /mnt/disk • Подключение одного каталога в другой:
$ mount –bind / /mnt/root
Права доступа
www.compscicenter.ru 13 26.02.2014
Каждый файл (не имя файла) имеет владельца (uid) и группу (gid). Изменять можно командами chown и chgrp. У каждого файла есть права доступа: █■⏟𝑟𝑤𝑥 @𝑢𝑠𝑒𝑟 █■⏟𝑟𝑤𝑥 @𝑔𝑟𝑜𝑢𝑝 █■⏟𝑟𝑤𝑥 @𝑜𝑡ℎ𝑒𝑟 , r — чтение, w — запись, x — исполнение. Пример: rwxr-‐xr-‐x. Права также можно обозначить трехзначным числом по следующему правилу: r = 4, w = 2, x = 1. Примеры: 755, 644, 600. Изменяются командой chmod. $ chmod 644 file.txt
Права доступа(каталог)
www.compscicenter.ru 14 26.02.2014
Что означают права доступа для каталогов? • r — узнать список файлов. • w — изменить список файлов. • x — обратиться к содержимому каталога. Пример: $ mkdir test $ touch test/file.txt $ chmod 333 test $ ls test
$ rm test/file.txt ls: невозможно открыть каталог test
Права доступа(каталог)
www.compscicenter.ru 15 26.02.2014
Что означают права доступа для каталогов? • r — узнать список файлов. • w — изменить список файлов. • x — обратиться к содержимому каталога. Пример: $ mkdir test $ touch test/file.txt $ chmod 333 test $ ls test
$ rm test/file.txt ls: невозможно открыть каталог test
Процессы
www.compscicenter.ru 16 26.02.2014
Каждый процессор имеет свой уникальный номер PID Создание процесса: • Новый процесс является копией родительского процесса – fork • Программа запускается функцией – exec • Процесс запуска процессов – fork-‐and-‐exec Все процессы запускаются от самого первого процесса init Команды работы с процессами: • Запуск • Запуск в фоновом режиме • Приостановить процесс • Прервать
Работа с процессами
www.compscicenter.ru 17 26.02.2014
Команды работы с процессами: • Запуск ~$ chrome • Запуск в фоновом режиме ~$ chrome& [1] 4593 • Список процессов в фоновом режиме ~$ jobs • Приостановить процесс: Ctrl-‐Z • Прервать: Ctrl-‐C • Возобновить фоновый процесс ~$ bg • Поместить фоновое задание на передний план ~$ fg • Завершить процесс ~$ kill
Спасибо за внимание
www.compscicenter.ru 18 26.02.2014