31
Операционные системы GNU/Linux Чинков Михаил CodeInside

Операционные системы GNU/Linux

Embed Size (px)

Citation preview

Операционные системы GNU/Linux

Чинков МихаилCodeInside

Понятие операционной системы

Абстракции операционной системы● Процессы● Потоки● Адресное пространство● Файлы (файловая система)

Linux GNU/Linux

История

1970-е гг. - операционная система UNIX

https://github.com/dspinellis/unix-history-repo

История

1983 г - GNU Project

История

1987 г - MINIX OS

История

● 17.09.1991 г. - первый релиз ядра Linux

● 1992 г. - первый дистрибутив Linux (Slackware)

● 14.03.1994 г. - Linux 1.0● Текущая версия ядра

(vanilla) - 4.6.4

Архитектура

Системные вызовы● open, close, read, write, lseek● fork+execve, exit● mkdir, rmdir, link, unlink● kill● fsync

Дистрибутивы Linux

Дистрибутив - операционная система, включающая в себя ядро (Linux), пользовательские приложения, библиотеки, компиляторы, утилиты, а также установщик системы.

● Библиотеки/компиляторы/интерпретаторы● Версия ядра● Пакеты/пакетный менеджер● Графическая среда пользователя (DE)● Разработчики (community/enterprise)

Дистрибутивы Linux

Пакет - набор файлов, необходимый программе для установки, запуска и выполнения: исполняемые файлы, библиотеки, конфигурационные файлы, документация.

Пакетный менеджер - инструмент, следящий за конфликтами и зависимостями между пакетами.

Дистрибутивы Linux

distrowatch.com

Русские народные дистрибутивы

Производные (оно повсюду!!!)

● Embedded Linux● Android● Mac OS X

Почему Linux нужен

● Open source community● Удобное окружение/ПО для

разработки● Мощная командная строка● Продуктивность● Удобство в установке и поддержке ПО● Не требует финансовых затрат● Кастомизация 1000%

… и тысячи других причин

Почему Linux не нужен

● Игры● Прикладное ПО (Photoshop, Компас)● Проект на .NET● Нужен Active Directory● “Мы закупили лицензию Windows на

10 лет, чо мы как лохи будем (с).”

Bash

● Автоматизация рутинных операций● Понимание принципов работы утилит● Повеселиться от души

ЦПУ

● strace/ltrace● ps aux● kill -9● pidstat● uptime● cat /proc/cpuinfo

Память

● cat /proc/meminfo● vmstat● free -m● sar -r● top

Файлы

● ext4● Btrfs● XFS

● ZFS● F2FS● ReiserFS

Файлы

● find, locate● rm -rf /*● tar, gzip/guizip, bzip/bunzip● iostat

Сеть

● ssh● ip add/ifconfig● netstat● tcpdump● wireshark

Другие команды

● работа с текстом (grep/sed/awk)● pipe (UNIX-way)● cron● vi/emacs/nano● curl/wget● screen/tmux● watch● screenfetch

Безопасность

● rwx-биты доступа● ACL● sudo● getty + login● SELinux

DevOps-инструменты

● Системы управления конфигурациями (Ansible/Chef/Puppet/Saltstack)

● Виртуализация (Vagrant/Packer)● Git● Continuous Integration

(Jenkins/TeamCity/TravisCI)● Docker

Советы (ИМХО)

● Не меряйтесь дистрибутивами● Не заходите на хост с root-а● Не бойтесь● Не промывайте людям мозги своим Linux-ом● Не злоупотребляйте howto-шничеством (курите маны)● Сохраняйте спокойствие, если что-то сломалось (бэкапы)● Вырубите свап (sysctl -w vm.swappiness=0)● Минимальные привилегии для запуска системных команд из приложения● Соблюдайте в системе UNIX-way композицию (микросервисы)● Делитесь трудами и знаниями (open source)

Источники

● Э. Таненбаум “Современные операционные системы” (4-е издание)● Роберт Лав "Linux. Системное программирование" (2-е издание)● Mendel Cooper “Advanced Bash-Scripting Guide”

Источники

● https://kernel.org/● http://www.thegeekstuff.com/● http://stackshare.io/● http://explainshell.com/● https://github.com/jnv/lists (MUST SAVE)

Самопиарhttps://myopsblog.wordpress.com/

Всем спасибо

Вопросы?