Download - Web осень 2013 лекция 2
![Page 1: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/1.jpg)
Использование
linux
Дмитрий Смаль
![Page 2: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/2.jpg)
Вам понадобится Ubuntu
2
![Page 3: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/3.jpg)
1. Создать загрузочную флешку (Unetbootin)
http://unetbootin.sourceforge.net/
2. Установить VirtualBox (диск не менее 20Gb)
3. Установить Ubuntu (12.04 LTS)
http://pingvinus.ru/note/ubuntu-install
4. Желательно установить VirtualBox extension pack
5. Вместо VirtualBox, можно ставить сразу на диск
Установка Ubuntu
3
![Page 4: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/4.jpg)
Терминал / консоль
4
Запуск консоли – Ctrl + Alt + t
Для выхода из консоли можно
Закрыть оболочку командой exit
Прервать поток ввода Ctrl + D
Запуск терминала (текстового) – Ctrl + Alt + F1 .. F3
Обратно в графический интерфейс – Alt + F7
![Page 5: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/5.jpg)
Навигация в консоли
5
Alt + b / Alt + f – перейти на слово назад / вперед
Ctrl + w / Alt + d – удалить слово назад / вперед
Ctrl + u / Ctrl + k – удалить строку назад / вперед
Ctrl + p / Ctrl + n – предыдущая / следующая команда
Ctrl + r blabla – поиск по истории команд (!!!)
![Page 6: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/6.jpg)
Копирование / вставка
6
Через буфер X-windows
src: Просто выделяем текст
dst: Наводим курсор, нажимаем среднюю кнопку
Через буфер оконной системы
src: Выделяем текст и Ctrl + Ins
dst: Наводим курсор и Shft + Ins
Ctrl + c / Ctrl + v могут не работать в консоли
![Page 7: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/7.jpg)
Процессы в Linux
7
![Page 8: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/8.jpg)
Процесс
8
Процесс – экземпляр программы, запущенной в данный
момент на компьютере.
Свойства процесса:
Образ (программа), есть не у всех процессов.
Аргументы командной строки
Переменные окружения
Стандартные потоки ввода/вывода: stdin, stdout, stderr (файлы)
Идентификатор pid – число
Родительский процесс, идентификатор ppid
Код возврата
![Page 9: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/9.jpg)
Программа на Python
9
import sys import os
print "argv: " + " ".join(sys.argv)print "env: " + " ".join(os.environ.keys())
word = sys.stdin.read(3)sys.stdout.write(word + "\n")sys.stderr.write("bug!\n")
print "pid: " + str(os.getpid())print "ppid: " + str(os.getppid())
exit(1)
![Page 10: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/10.jpg)
Запускаем
10
![Page 11: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/11.jpg)
Аргументы командной строки
11
Зачем нужны ?
– задают опции выполнения программы
Как передаются ?
– при запуске программы в виде массива
Как видны внутри программы ?
– массив argv: os.argv, @ARG, char* argv[] и т.д.
Примеры:
–h (помощь) –f (принудительно) –v (больше вывода)
![Page 12: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/12.jpg)
Переменные окружения
12
Зачем нужны ?
– задают опции выполнения программы
Как передаются ?
– при запуске программы в виде словаря / списка
Как видны внутри программы ?
– словарь env: os.environ, %ENV, char** environ и т.д.
В чем отличие от аргументов ?
– редко меняются, т.е. долгосрочные опции.
![Page 13: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/13.jpg)
Примеры переменных
13
PATH – директории на диске, в которых будут
искаться запускаемые программы
USER – имя текущего пользователя
HOME – домашняя директория текущего пользователя
TERM – тип текущего терминала (что бы программа
знала, как форматировать свой вывод)
PYTHON_PATH – специфично для python – список
директорий, в которых python будет искать модули
![Page 14: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/14.jpg)
Список процессов
14
![Page 15: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/15.jpg)
Как происходит запуск процесса ?
15
Процесс запускается 2 шага – fork() и exec()
При fork() – создается полная копия процесса
При exec() – текущий процесс замещается другим
При этом:
Нужно указать новый образ – программу
Нужно указать аргументы командной строки
Можно указать новые переменные окружения
![Page 16: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/16.jpg)
Как происходит запуск процесса ?
16
![Page 17: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/17.jpg)
Состояния процесса в unix
17
![Page 18: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/18.jpg)
Дерево процессов
18
![Page 19: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/19.jpg)
Сигналы
19
Сигнал – «сообщение» отправляемое процессом или операционной системой другому процессу.
Что может сделать процесс ?
Поставить функцию – обработчик
Игнорировать сигнал
Оставить обработчик по-умолчанию
Некоторые сигналы нельзя игнорировать и обрабатывать (SIGKILL)
![Page 20: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/20.jpg)
Отправка сигналов
20
import time
while True:
print "Zzz-zzz-zzz..."
time.sleep(1)
«Плохая программка»
Что делать ?
В той же консоли Ctrl + c – отправит сигнал INT
Закрыть консоль – процесс получит сигнал HUP
В другой консоли: kill –INT 12345 , где 12345 – pidплохой программы
Если дела совсем плохи kill –KILL 12345
![Page 21: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/21.jpg)
Примеры сигналов
21
SIGALRM – «будильник»
SIGHUP – закрытие терминала
SIGTERM – «корректная» остановка процесса
SIGSEGV – ошибка работы с памятью
SIGKILL – безусловное завершение процесс
SIGPIPE – запись в закрытый канал / сокет
SIGCHILD – завершение дочернего процесса
SIGUSR1, SIGUSR2 – на ваше усмотрение
![Page 22: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/22.jpg)
22
![Page 23: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/23.jpg)
SHELL (bash)
23
SHELL – командная оболочка, по сути язык
программирования, ориентированный на запуск других
программ.
bash просто читает программу из stdin и выполняет ее.
Обычно stdin связан с клавиатурой, в stdout/stderr – с экраном.
![Page 24: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/24.jpg)
SHELL (через telnet или ssh)
24
Но так же можно передавать данные stdin/stdout/stderr
через сеть, для bash ничего не изменится.
![Page 25: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/25.jpg)
Примеры команд
25
![Page 26: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/26.jpg)
Переменные
26
Установка и получение
Экспорт в переменные окружения
![Page 27: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/27.jpg)
Запуск программ
27
Программы будут искаться в путях указанных в $PATH.
Переменные окружения – текущее окружение + export
Аргументы командной строки передаются после
команды, разделены пробелами.
Код возврата программы – в переменной $?
![Page 28: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/28.jpg)
Джентельменский набор
28
exit – выход из оболочки
man program – получение справки по программе
ls – просмотр содержимого директории
cd – переход в директорию
pwd – где я нахожусь ?
cat filename – вывод файла в stdout
rm – удаление файла или директории
cp – копирование …
mv – перемещение …
![Page 29: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/29.jpg)
Джентельменский набор
29
find – гибкий поиск файлов и директорий
locate / updatedb – быстрый и простой поиск файла
grep – фильтрация stdin и файлов, поиск содержимого
sort – сортировка stdin или файлов
wc – подсчет строк, слов, символов
xargs – запуск команды для каждой строки stdin
![Page 30: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/30.jpg)
Перенаправление ввода/вывода
30
По умолчанию при запуске процесса файловые
дескрипторы stdin / stdout / stderr наследуются.
Перенаправление stdout в файл
Перенаправления stdin из файла
Перенаправление stderr в никуда.
Вывод stdout будет дописан в results.txt, stderr - тоже
![Page 31: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/31.jpg)
PIPE: конвейеры программ
31
PIPE – односторонний канал передачи данных
В bash позволяет связать stdout одной программы c
stdin другой, образую «конвеер» обработки данных
![Page 32: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/32.jpg)
PIPE: примеры
32
Найти все файлы содержащие add_product, затем
отобрать c расширением .py
Следить за логом ошибок, фильтровать строки
содержащие /admin/
Вывести список уникальных ip адресов, с которых
обращались к нашему web серверу
![Page 33: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/33.jpg)
Условия
33
IF проверяет код возврата программы, 0 – считается истинной ( в отличие от С ), [ - просто другое имя для программы test
![Page 34: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/34.jpg)
Циклы
34
seq – печатает последовательность чисел 1 – 10
![Page 35: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/35.jpg)
Пользователи и файлы в Linux
35
![Page 36: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/36.jpg)
Файловая система
36
# очень выборочно
# системные программы
# настройки программ
# скрипты запуска демонов
# «хомяк»
# подключаемые библиотеки
# «хомяк» суперюзера
# временные файлы
# пользовательские программы
# логи, pid-файлы и т.п.
![Page 37: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/37.jpg)
А что у нас в одной директории?
37
Права доступа
Владелец Группа Размер Название
![Page 38: Web осень 2013 лекция 2](https://reader034.vdocuments.pub/reader034/viewer/2022052507/557ef7e0d8b42ad17d8b5034/html5/thumbnails/38.jpg)
Права доступа
38
типичная директория
типичный файл с данными
типичная программа
Тип файла
Права для владельца
Права для группы
Права для остальных