39
Использование linux Дмитрий Смаль

Web осень 2013 лекция 2

Embed Size (px)

Citation preview

Page 1: Web осень 2013 лекция 2

Использование

linux

Дмитрий Смаль

Page 2: Web осень 2013 лекция 2

Вам понадобится Ubuntu

2

Page 3: Web осень 2013 лекция 2

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

Терминал / консоль

4

Запуск консоли – Ctrl + Alt + t

Для выхода из консоли можно

Закрыть оболочку командой exit

Прервать поток ввода Ctrl + D

Запуск терминала (текстового) – Ctrl + Alt + F1 .. F3

Обратно в графический интерфейс – Alt + F7

Page 5: Web осень 2013 лекция 2

Навигация в консоли

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

Копирование / вставка

6

Через буфер X-windows

src: Просто выделяем текст

dst: Наводим курсор, нажимаем среднюю кнопку

Через буфер оконной системы

src: Выделяем текст и Ctrl + Ins

dst: Наводим курсор и Shft + Ins

Ctrl + c / Ctrl + v могут не работать в консоли

Page 7: Web осень 2013 лекция 2

Процессы в Linux

7

Page 8: Web осень 2013 лекция 2

Процесс

8

Процесс – экземпляр программы, запущенной в данный

момент на компьютере.

Свойства процесса:

Образ (программа), есть не у всех процессов.

Аргументы командной строки

Переменные окружения

Стандартные потоки ввода/вывода: stdin, stdout, stderr (файлы)

Идентификатор pid – число

Родительский процесс, идентификатор ppid

Код возврата

Page 9: Web осень 2013 лекция 2

Программа на 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

Запускаем

10

Page 11: Web осень 2013 лекция 2

Аргументы командной строки

11

Зачем нужны ?

– задают опции выполнения программы

Как передаются ?

– при запуске программы в виде массива

Как видны внутри программы ?

– массив argv: os.argv, @ARG, char* argv[] и т.д.

Примеры:

–h (помощь) –f (принудительно) –v (больше вывода)

Page 12: Web осень 2013 лекция 2

Переменные окружения

12

Зачем нужны ?

– задают опции выполнения программы

Как передаются ?

– при запуске программы в виде словаря / списка

Как видны внутри программы ?

– словарь env: os.environ, %ENV, char** environ и т.д.

В чем отличие от аргументов ?

– редко меняются, т.е. долгосрочные опции.

Page 13: Web осень 2013 лекция 2

Примеры переменных

13

PATH – директории на диске, в которых будут

искаться запускаемые программы

USER – имя текущего пользователя

HOME – домашняя директория текущего пользователя

TERM – тип текущего терминала (что бы программа

знала, как форматировать свой вывод)

PYTHON_PATH – специфично для python – список

директорий, в которых python будет искать модули

Page 14: Web осень 2013 лекция 2

Список процессов

14

Page 15: Web осень 2013 лекция 2

Как происходит запуск процесса ?

15

Процесс запускается 2 шага – fork() и exec()

При fork() – создается полная копия процесса

При exec() – текущий процесс замещается другим

При этом:

Нужно указать новый образ – программу

Нужно указать аргументы командной строки

Можно указать новые переменные окружения

Page 16: Web осень 2013 лекция 2

Как происходит запуск процесса ?

16

Page 17: Web осень 2013 лекция 2

Состояния процесса в unix

17

Page 18: Web осень 2013 лекция 2

Дерево процессов

18

Page 19: Web осень 2013 лекция 2

Сигналы

19

Сигнал – «сообщение» отправляемое процессом или операционной системой другому процессу.

Что может сделать процесс ?

Поставить функцию – обработчик

Игнорировать сигнал

Оставить обработчик по-умолчанию

Некоторые сигналы нельзя игнорировать и обрабатывать (SIGKILL)

Page 20: Web осень 2013 лекция 2

Отправка сигналов

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

Примеры сигналов

21

SIGALRM – «будильник»

SIGHUP – закрытие терминала

SIGTERM – «корректная» остановка процесса

SIGSEGV – ошибка работы с памятью

SIGKILL – безусловное завершение процесс

SIGPIPE – запись в закрытый канал / сокет

SIGCHILD – завершение дочернего процесса

SIGUSR1, SIGUSR2 – на ваше усмотрение

Page 22: Web осень 2013 лекция 2

22

Page 23: Web осень 2013 лекция 2

SHELL (bash)

23

SHELL – командная оболочка, по сути язык

программирования, ориентированный на запуск других

программ.

bash просто читает программу из stdin и выполняет ее.

Обычно stdin связан с клавиатурой, в stdout/stderr – с экраном.

Page 24: Web осень 2013 лекция 2

SHELL (через telnet или ssh)

24

Но так же можно передавать данные stdin/stdout/stderr

через сеть, для bash ничего не изменится.

Page 25: Web осень 2013 лекция 2

Примеры команд

25

Page 26: Web осень 2013 лекция 2

Переменные

26

Установка и получение

Экспорт в переменные окружения

Page 27: Web осень 2013 лекция 2

Запуск программ

27

Программы будут искаться в путях указанных в $PATH.

Переменные окружения – текущее окружение + export

Аргументы командной строки передаются после

команды, разделены пробелами.

Код возврата программы – в переменной $?

Page 28: Web осень 2013 лекция 2

Джентельменский набор

28

exit – выход из оболочки

man program – получение справки по программе

ls – просмотр содержимого директории

cd – переход в директорию

pwd – где я нахожусь ?

cat filename – вывод файла в stdout

rm – удаление файла или директории

cp – копирование …

mv – перемещение …

Page 29: Web осень 2013 лекция 2

Джентельменский набор

29

find – гибкий поиск файлов и директорий

locate / updatedb – быстрый и простой поиск файла

grep – фильтрация stdin и файлов, поиск содержимого

sort – сортировка stdin или файлов

wc – подсчет строк, слов, символов

xargs – запуск команды для каждой строки stdin

Page 30: Web осень 2013 лекция 2

Перенаправление ввода/вывода

30

По умолчанию при запуске процесса файловые

дескрипторы stdin / stdout / stderr наследуются.

Перенаправление stdout в файл

Перенаправления stdin из файла

Перенаправление stderr в никуда.

Вывод stdout будет дописан в results.txt, stderr - тоже

Page 31: Web осень 2013 лекция 2

PIPE: конвейеры программ

31

PIPE – односторонний канал передачи данных

В bash позволяет связать stdout одной программы c

stdin другой, образую «конвеер» обработки данных

Page 32: Web осень 2013 лекция 2

PIPE: примеры

32

Найти все файлы содержащие add_product, затем

отобрать c расширением .py

Следить за логом ошибок, фильтровать строки

содержащие /admin/

Вывести список уникальных ip адресов, с которых

обращались к нашему web серверу

Page 33: Web осень 2013 лекция 2

Условия

33

IF проверяет код возврата программы, 0 – считается истинной ( в отличие от С ), [ - просто другое имя для программы test

Page 34: Web осень 2013 лекция 2

Циклы

34

seq – печатает последовательность чисел 1 – 10

Page 35: Web осень 2013 лекция 2

Пользователи и файлы в Linux

35

Page 36: Web осень 2013 лекция 2

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

36

# очень выборочно

# системные программы

# настройки программ

# скрипты запуска демонов

# «хомяк»

# подключаемые библиотеки

# «хомяк» суперюзера

# временные файлы

# пользовательские программы

# логи, pid-файлы и т.п.

Page 37: Web осень 2013 лекция 2

А что у нас в одной директории?

37

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

Владелец Группа Размер Название

Page 38: Web осень 2013 лекция 2

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

38

типичная директория

типичный файл с данными

типичная программа

Тип файла

Права для владельца

Права для группы

Права для остальных

Page 39: Web осень 2013 лекция 2

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

Дмитрий Смаль, [email protected]