18
Лекция 2. Работа с Shell www.compscicenter.ru 1 Толстиков Никита [email protected] СS центр 26.02.2014

Технологический семинар: Работа в Shell

Embed Size (px)

DESCRIPTION

* Зачем нужен Shell и что такое Bash? * Манипулирование файлами и каталогами * Процессы и переменные среды * Потоки ввода вывода * Создание конвееров * Распараллеливание процессов

Citation preview

Page 1: Технологический семинар: Работа в Shell

Лекция  2.  Работа  с  Shell  

www.compscicenter.ru   1  

Толстиков  Никита  [email protected]  

СS  центр    

26.02.2014  

Page 2: Технологический семинар: Работа в Shell

www.compscicenter.ru   2  26.02.2014  

Page 3: Технологический семинар: Работа в Shell

Командный  интерпретатор  

www.compscicenter.ru   3  26.02.2014  

Командный  интерпретатор  —  это  интерфейс  взаимодействия  между  пользователем  и  операционной  системой.  Пользователь  управляет  системой  при  помощи  текстовых  команд.  Базовые  операции  определены  в  стандарте  POSIX.    Приглашение  командной  строки:  user@server  ~$  _    Пример:  user@server  ~$  whoami  user      

Page 4: Технологический семинар: Работа в Shell

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    

Page 5: Технологический семинар: Работа в Shell

Пользователи  и  группы  

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  

Page 6: Технологический семинар: Работа в Shell

Файловая  система  

www.compscicenter.ru   6  26.02.2014  

•  Виртуальная  файловая  система  (VFS)  —  уровень  абстракции  поверх  конкретной  реализации  файловой  системы  для  обеспечения  единообразного  доступа  ко  всем  файлам.  

•  В  VFS  имеется  единое  дерево  каталогов,  а  устройства  встраиваются  (монтируются)  в  папки.  

•  Любое  устройство  в  VFS  представляется  файлом.  •  Linux  работает  с  большинством  из  существующих  файловых  систем.  В  качестве  

основных  можно  использовать  ext2,  ext3,  ext4,  ReiserFS,  XFS,  JFS.    

Page 7: Технологический семинар: Работа в Shell

Структура  каталогов  

www.compscicenter.ru   7  26.02.2014  

•  /  -­‐  корневой  каталог  •  /bin  —  базовые  программы.  •  /boot  —  содержит  образы  ядра  и  файлы  загрузчика.  •  /etc  —  конфигурационные  файлы.  •  /dev  —  файлы  устройств.  •  /home  —  домашние  папки  пользователей.  •  /lib,  /lib*  —  библиотеки  и  модули  ядра.  •  /mnt,  /media  —  для  монтирования  устройств.  •  /opt  —  для  дополнительного  ПО.  •  /proc  —  информация  о  процессах.  •  /root  —  домашняя  папка  суперпользователя.  •  /sbin  —  программы  для  суперпользователя.  

Page 8: Технологический семинар: Работа в Shell

Структура  каталогов  

www.compscicenter.ru   8  26.02.2014  

•  /tmp  —  для  временных  файлов.  •  /sys  —  информация  о  ядре.  •  /usr  —  файлы  программ.  •  /usr/bin  —  исполняемые  файлы  программ.  •  /usr/share  —  общие  данные  всех  программ.  •  /usr/src  —  код  ядра.  •  /var  —  меняющиеся  данные  различных  сервисов  (база  данных,  Subversion,  …),  

логи  

Page 9: Технологический семинар: Работа в Shell

Файлы  

www.compscicenter.ru   9  26.02.2014  

Типы  файлов:  •  Обычные  файлы  (данные  на  диске),    •  Каталоги  •  Специальные  файлы  (к  примеру,  файлы  устройств).    У  одного  файла  может  быть  несколько  имён  (жесткие  ссылки).  Количество  ссылок  указывается  во  втором  столбце  вывода        ~$  ls  -­‐n    Файл  существует  до  тех  пор,  пока  на  него  есть  хотя  бы  одна  ссылка.    “Удаление  файла”  —  это  удаление  одной  ссылки.      Имена  файлов,  начинающиеся  с  .  считаются  скрытыми.  

Page 10: Технологический семинар: Работа в Shell

Файлы  устройств  

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,  .  .  .  .    Работа  с  устройствами  может  проходить  как  обычная  работа  с  файлами.  

Page 11: Технологический семинар: Работа в Shell

Каталоги  

www.compscicenter.ru   11  26.02.2014  

Каталог  —  это  специальный  тип  файла,  содержащий  имена  файлов.    В  каждом  каталоге  есть  два  специальных  файла:  

•  .  —  текущий  каталог    и  

•   ..  —  родительский.  

У  пользователя  есть  домашний  каталог  ~.    Пути  бывают  абсолютными  (/usr/bin/python)  и  относительными  (downloads/pdfs/,  ../../man/).    У  каталога  не  может  быть  жестких  ссылок.    Зато  могут  быть  мягкие  (символические):  $  ln  -­‐s  /usr/src/linux-­‐3.2.0  /usr/src/linux  

Page 12: Технологический семинар: Работа в Shell

Монтирование  устройств  

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  

Page 13: Технологический семинар: Работа в Shell

Права  доступа  

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  

Page 14: Технологический семинар: Работа в Shell

Права  доступа(каталог)  

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  

Page 15: Технологический семинар: Работа в Shell

Права  доступа(каталог)  

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  

Page 16: Технологический семинар: Работа в Shell

Процессы  

www.compscicenter.ru   16  26.02.2014  

Каждый  процессор  имеет  свой  уникальный  номер  PID    Создание  процесса:  •  Новый  процесс  является  копией  родительского  процесса  –  fork  •  Программа  запускается  функцией  –  exec  •  Процесс  запуска  процессов  –  fork-­‐and-­‐exec    Все  процессы  запускаются  от  самого  первого  процесса  init    Команды  работы  с  процессами:  •  Запуск  •  Запуск  в  фоновом  режиме  •  Приостановить  процесс  •  Прервать  

Page 17: Технологический семинар: Работа в Shell

Работа  с  процессами  

www.compscicenter.ru   17  26.02.2014  

Команды  работы  с  процессами:  •  Запуск  ~$  chrome  •  Запуск  в  фоновом  режиме  ~$  chrome&  [1]  4593  •  Список  процессов  в  фоновом  режиме  ~$  jobs  •  Приостановить  процесс:  Ctrl-­‐Z  •  Прервать:  Ctrl-­‐C  •  Возобновить  фоновый  процесс  ~$  bg  •  Поместить  фоновое  задание  на  передний  план  ~$  fg  •  Завершить  процесс  ~$  kill  

Page 18: Технологический семинар: Работа в Shell

Спасибо  за  внимание  

www.compscicenter.ru   18  26.02.2014