Unix
== Unix і DevOps ==
Приклади:
</blockquote>
Linux успадкував або повторив багато Unix-ідей:
Unix і C розвивалися разом.;== Unix і інтернет ==
<blockquote>
→ Команди й програми
* shell scripts;
* pipes;
* logs as text;
* config files;
* cron;
* ssh;
* small tools;
* automation;
* command-line pipelines;
* monitoring;
* deployment scripts.;[[Category:POSIX]]
'''У Unix-світі документація часто живе прямо в системі.; Вони дозволяють будувати складну обробку даних із маленьких простих команд.'''
</blockquote>
'''Unix''' — одна з найвпливовіших технологій в історії компʼютерів.; → Web / Desktop / Mobile client
== Unix і мережа ==
</syntaxhighlight>
ps aux | grep nginx
<syntaxhighlight lang="bash">
</syntaxhighlight>
== Висновок ==
</syntaxhighlight>
* ZFS;
* DTrace;
* zones;
* enterprise-сценаріям;
* SPARC;
* серверній інфраструктурі.; bg
== Bell Labs ==
* The Open Group — UNIX: https://www.unix.org/
* The Single UNIX Specification V5 / 2024: https://www.unix.org/overview.html
* The Open Group — UNIX Standard: https://www.opengroup.org/membership/forums/platform/unix
* The Open Group — UNIX Certification Program: https://www.opengroup.org/certifications/unix
* POSIX / The Open Group Base Specifications: https://pubs.opengroup.org/onlinepubs/9799919799/
* Dennis Ritchie — The Evolution of the Unix Time-sharing System: https://www.nokia.com/bell-labs/about/dennis-m-ritchie/hist.pdf
* The Unix Heritage Society: https://www.tuhs.org/
* FreeBSD: https://www.freebsd.org/
* OpenBSD: https://www.openbsd.org/
* NetBSD: https://www.netbsd.org/
Одна з відомих ідей Unix — '''everything is a file'''.; * PID;
* parent process;
* child process;
* signals;
* foreground process;
* background process;
* daemon.; |-
| 1
| історичний розвиток Unix і Bell Labs
|-
| 2
| Unix-філософія
|-
| 3
| Shell і командний рядок
|-
| 4
| Файлова платформа
|-
| 5
| Права доступу й користувачі
|-
| 6
| Процеси й сигнали
|-
| 7
| Pipes і redirect
|-
| 8
| grep, sed, awk, find
|-
| 9
| Shell scripts
|-
| 10
| cron і daemons
|-
| 11
| POSIX
|-
| 12
| C і системні виклики
|-
| 13
| TCP/IP і sockets
|-
| 14
| BSD, Linux, macOS, Solaris
|}
== Сигнали ==
Приклади:
Це означає, що багато обʼєктів системи представлені через файлову модель:
'''chmod''' змінює права доступу.;== Файлова платформа Unix ==
'''root''' — суперкористувач Unix-системи.; Приклад:
* популяризацією Unix;
* книгою про мову C разом із Dennis Ritchie;
* AWK;
* Unix-документацією;
* поясненням Unix-філософії.; '''У побуті Linux часто називають Unix-подібною системою.; |-
| '''man'''
| Документація
|-
| '''ls'''
| Перегляд файлів
|-
| '''cd'''
| Перехід у каталог
|-
| '''pwd'''
| Поточний каталог
|-
| '''cat'''
| Виведення файлу
|-
| '''grep'''
| Пошук тексту
|-
| '''find'''
| Пошук файлів
|-
| '''chmod'''
| Права доступу
|-
| '''ps'''
| Процеси
|-
| '''kill'''
| Сигнали процесам
|-
| '''ssh'''
| Віддалений доступ
|-
| '''cron'''
| Задачі за розкладом
|}
BSD вплинув на:
!; !; Команда
Він повʼязаний із:
Unix — це прадід багатьох сучасних операційних систем і водночас набір ідей, які досі живуть у Linux, macOS, BSD, Android, серверах і DevOps.;<blockquote>
Подивитись процеси:
каталоги;
* web server;
* database server;
* mail server;
* file server;
* application server;
* scientific computing;
* enterprise systems;
* telecom;
* banking;
* universities.; Статус
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
!; Команда
</syntaxhighlight>
Unix має сильну базову модель безпеки:
'''illumos''' — відкрита гілка, що походить від OpenSolaris.; Головна ідея Unix — створити просту, переносиму й багатокористувацьку операційну систему, у якій програми можна без зайвих зусиль поєднувати між собою.;<pre>
'''Unix — це не тільки операційна платформа.;</syntaxhighlight>
'''Unix — це платформа, яка стала філософією.; !; '''Unix дав світу модель операційної системи, а C дала спосіб переносити цю модель між різним обладнанням.'''
Unix-програми мають стандартні потоки.; У ширшому технічному й історичному сенсі Unix — це ціла традиція операційних систем, побудованих навколо ідей простоти, текстових інтерфейсів, файлів, процесів, pipes, shell, прав доступу й переносимості.; Unix виник наприкінці 1960-х років у Bell Labs і вплинув на Linux, BSD, macOS, iOS, Android, Solaris, AIX, HP-UX, сучасні сервери, командний рядок, C, POSIX, DevOps, інтернет-інфраструктуру й культуру відкритих систем.; '''Ken Thompson''' — один із головних творців Unix.;[[Category:Unix]]
</blockquote>
Історично використовувалась у enterprise-середовищах:
'''Linux''' не походить безпосередньо від оригінального Unix-коду, але є собою Unix-подібною системою.;</blockquote>
man ls
Але Android не є собою звичайним Unix-дистрибутивом.; '''Dennis Ritchie''' — співтворець Unix і творець мови C.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" | Ключове
| '''Мова C і Unix розвивалися разом'''
| Переписування Unix мовою C зробило систему переносимішою між апаратними платформами.; Багато ранньої інтернет-інфраструктури працювало на Unix або Unix-подібних системах.; Теза
Окремо варто відзначити філософія проєктування, стандарт сумісності і одна з найважливіших ідей в історії компʼютерних систем виступає ключовою рисою '''Unix''' або '''UNIX'''.; '''macOS''' має Unix-подібну основу Darwin і в різні періоди мала UNIX-сертифікацію для певних версій.; Значення
У контексті Unix Bell Labs важливі з цієї причини, що там працювали:
Знайти всі log-файли, вибрати рядки з error і порахувати їх:
<syntaxhighlight lang="bash">
Приклад запуску backup щодня о 02:00:
невеликі утиліти;
</blockquote>
команди;
[[Category:Bell Labs]]
Of course it runs NetBSD
</blockquote>
|-
| '''1'''
| Команди користувача
|-
| '''2'''
| Системні виклики
|-
| '''3'''
| Бібліотечні функції
|-
| '''4'''
| Спеціальні файли
|-
| '''5'''
| Формати файлів
|-
| '''6'''
| Ігри
|-
| '''7'''
| Огляди, conventions
|-
| '''8'''
| Адміністративні команди
|}
chmod +x script.sh
<blockquote>
== Приклад Unix-стилю ==
<blockquote>
|-
| '''Простота концепцій'''
| Файли, процеси, shell, pipes і permissions створюють зрозумілу модель
|-
| '''Композиційність'''
| Команди можна поєднувати в pipelines
|-
| '''Переносимість'''
| C і POSIX-ідеї допомогли переносити програми між системами
|-
| '''Стабільність'''
| Unix-системи історично сильні в довготривалих серверних сценаріях
|-
| '''Багатокористувацька модель'''
| Unix із самого початку був розрахований на кількох користувачів
|-
| '''Сильна CLI-культура'''
| Shell і команди зручні для автоматизації
|-
| '''Вплив на сучасне IT'''
| Linux, macOS, BSD, Android і DevOps несуть Unix-спадщину
|}
find .;== Brian Kernighan ==
ps aux
-rwxr-xr--
== AIX ==
!; chmod 755 script.sh
== Команди Unix ==
Приклади:
* web server;
* cron;
* sshd;
* syslog;
* database server;
* mail server;
* print service.; Чи підходить Unix-підхід?; -name "*.conf"
<blockquote>
Важливі елементи:
<pre>
|-
| '''Складність для новачків'''
| Shell, права, процеси й конфігурації потребують навчання
|-
| '''Історична фрагментація'''
| Різні Unix-гілки мали різні команди, API й інструменти
|-
| '''Комерційні Unix-системи можуть бути дорогими'''
| AIX, HP-UX, Solaris у enterprise-сценаріях повʼязані з обладнанням і підтримкою
|-
| '''Не всі системи однаково сумісні'''
| POSIX і SUS допомагають, але деталі можуть відрізнятися
|-
| '''CLI має змогу бути небезпечним'''
| Потужні команди без зайвих зусиль використати неправильно
|-
| '''Менше масового desktop-ПЗ'''
| Класичні Unix-системи не стали головною домашньою desktop-платформою
|}
'''Brian Kernighan''' — важлива постать Unix-культури, автор і співавтор класичних книг та інструментів.; → Backend на Linux/Unix-like server
== Процеси ==
→ Hardware
* Unix-подібну основу;
* Terminal;
* shell;
* POSIX-інтерфейси;
* графічний Apple UI;
* AppKit;
* Swift;
* Apple ecosystem.; Елемент
Unix-системи сильно вплинули на еволюція мережевої інфраструктури.; Помилка
!; Зміст
[[Category:Shell]]
|-
| '''sh'''
| Класична Bourne shell
|-
| '''bash'''
| Bourne Again Shell, дуже поширена в Linux-світі
|-
| '''zsh'''
| Зручна інтерактивна shell, популярна в macOS і серед розробників
|-
| '''ksh'''
| KornShell, історично важлива shell
|-
| '''csh / tcsh'''
| C shell і її еволюція
|-
| '''fish'''
| Friendly Interactive Shell, зручна сучасна shell
|}
== Головна ідея Unix ==
Встановити права 755:
'''POSIX — це спроба формалізувати Unix-поведінку так, щоб програми могли працювати на різних системах.'''
<pre>
#!/bin/sh
== Рекомендований шлях вивчення Unix ==
'''AIX''' — Unix-система IBM.;</blockquote>
/
== Unix у порівнянні з іншими ОС ==
{| class="wikitable"
</syntaxhighlight>
!; Пояснення
Права:
Знайти файли:
echo "Hello" > output.txt;
|
; /proc
</syntaxhighlight> Pipes — це клей Unix-світу.; платформа kill -TERM 1234 Douglas McIlroy — один із людей, повʼязаних із концепцією pipes і Unix-філософією.; характеристика |
; * shell;
процеси; </syntaxhighlight>
</syntaxhighlight>
У строгому сучасному значенні '''UNIX®''' — це не без ускладнень будь-яка Unix-подібна платформа, а сертифікована платформа, яка відповідає вимогам The Open Group.; це сімейство операційних систем.; '''Unix-філософія''' — це набір принципів проєктування програм і систем.; Секція
* запускати команди;
* працювати з файлами;
* перенаправляти потоки;
* використовувати pipes;
* писати скрипти;
* автоматизувати задачі;
* керувати процесами;
* запускати програми.; Сигнал
застосовується для:
Переглянути документацію:
|
== POSIX ==
printf("Hello, Unix\n");
</blockquote>
<pre>
!; Shell
== Unix у корпоративному світі ==
|-
| Історична платформа Bell Labs і її нащадки
| Незалежне Unix-подібне ядро, створене Лінусом Торвальдсом
|-
| має змогу означати сертифікований UNIX®
| Зазвичай не є собою сертифікованим UNIX®
|-
| Комерційні й академічні гілки
| Open source-екосистема дистрибутивів
|-
| AIX, Solaris, HP-UX, BSD-гілки
| Debian, Ubuntu, Fedora, Arch, RHEL та інші
|}
Але безпека залежить від адміністрування:
== Простими словами ==
== FreeBSD ==
}
{| class="wikitable"
!; → Unix kernel
== Типові помилки новачків у Unix-like системах ==
* сервери;
* промислові системи;
* корпоративні застосунки;
* бази даних;
* великі організації.; Термін
Основні поняття:
== Користувачі й права доступу ==
'''Root має майже повну владу над системою.; Приклад:
!; Потік
Unix-системи історично використовувались у великих корпоративних середовищах.; '''Single UNIX Specification''' або '''SUS''' — специфікація The Open Group, яка визначає вимоги до систем, що можуть бути сертифіковані як UNIX®.; {| class="wikitable"
return 0;
хвилина година день_місяця місяць день_тижня команда
* OpenSSH;
* security-first підходу;
* якісній документації;
* консервативному дизайну;
* чистій архітектурі.; {| class="wikitable"
!; The Open Group управляє UNIX trademark licensing program.; !; програмування забезпечується через Unix зʼявився в Bell Labs наприкінці 1960-х років.; -name "*.log" -type f -print0 | xargs -0 grep -i "error" | wc -l
* переносимості програм;
* shell;
* системних викликів;
* файлових операцій;
* процесів;
* потоків;
* утиліт;
* сумісності між Unix-like системами.;== Джерела ==
man printf
Shell надає можливість:
* серверна технічна архітектура;
* Linux-сервери;
* shell-автоматизація;
* backup scripts;
* cron/systemd timers;
* логування;
* text-based configuration;
* API-сервіси;
* бази даних;
* Docker і Kubernetes;
* CI/CD;
* monitoring;
* POSIX-сумісні інструменти.; man grep
!; * серверів;
* мережевих систем;
* storage;
* firewalls;
* appliances;
* ZFS-сценаріїв;
* високонавантажених систем.; {| class="wikitable"
* shell;
* pipes;
* C;
* ієрархічна файлова платформа;
* small tools;
* text processing;
* переносимість;
* документація через man pages.;<syntaxhighlight lang="bash">
Зробити файл виконуваним:
Manual pages зазвичай поділяються на секції.; Ключові етапи:
Типова схема:
<syntaxhighlight lang="bash">
Pipes стали однією з найважливіших ідей Unix, бо дозволили зʼєднувати програми між собою.; Що робить
→ Database
права доступу;
Приклади історично важливих або повʼязаних із UNIX систем:
<syntaxhighlight lang="bash">
'''OpenBSD''' — BSD-система з сильним акцентом на безпеку, аудит коду й простоту.; з цієї причини працювати постійно під root — погана практика.'''
== BSD ==
* робити одну річ добре;
* поєднувати програми через текстові потоки;
* використовувати прості формати;
* писати програми, які можна комбінувати;
* уникати зайвої складності;
* робити інструменти придатними для автоматизації.; Основні поняття:
== Unix і C ==
</syntaxhighlight>
cat names.txt | sort | uniq -c
ps aux
'''Shell''' — командна оболонка Unix.; Призначення
cat access.log | grep "error" | wc -l
!;
Unix використовує ієрархічну файлову систему.; Для K2 ERP Unix важливий не обовʼязково як конкретна ОС для встановлення, а як історична й технічна основа багатьох серверних практик.; Сортування і підрахунок: Важливі акцентиПоточний каталог: ls -l
Приклад: Формат: man sh
|
- | істотно | Unix і Unix-like — не одне й те саме | Linux є собою Unix-подібною системою, але не обовʼязково сертифікованим UNIX®.; !; Unix має сильну традицію документації через manual pages.;</syntaxhighlight>
Dennis Ritchie | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Назва | Unix / UNIX | |||||||||||||||||||||||||||
| Тип | Сімейство операційних систем, стандарт, філософія проєктування | |||||||||||||||||||||||||||
| Походження | Bell Labs | |||||||||||||||||||||||||||
| Початок розробки | 1969 рік | |||||||||||||||||||||||||||
| Ключові постаті | Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy та інші дослідники Bell Labs | |||||||||||||||||||||||||||
| Основна мова реалізації | C та assembly у ранніх версіях | |||||||||||||||||||||||||||
| Сучасний власник торговельної марки UNIX® | The Open Group | |||||||||||||||||||||||||||
| Актуальна специфікація | Single UNIX Specification Version 5 / 2024 | |||||||||||||||||||||||||||
| Повʼязані стандарти | POSIX, Single UNIX Specification | |||||||||||||||||||||||||||
| Нащадки й родичі | BSD, Solaris, AIX, HP-UX, illumos, macOS, Linux-подібні системи | |||||||||||||||||||||||||||
| Ключові ідеї | Everything is a file, pipes, shell, process model, permissions, portability |
ssh user@example.com
Типові каталоги:
Сертифікованими UNIX можуть бути тільки системи, які пройшли відповідну процедуру The Open Group.; Його внесок критично важливий:<blockquote>
man grep
== Pipes ==
Unix виріс після досвіду Multics — великого й амбітного проєкту операційної системи.; Параметр
== illumos ==
* web servers;
* DNS;
* email;
* TCP/IP;
* scripting;
* log processing;
* server administration;
* open systems;
* remote access;
* network tools.; !; Linux
* IBM AIX;
* HP-UX;
* Oracle Solaris;
* macOS у певних версіях;
* інші системи, що проходили сертифікацію.;== Android і Unix ==
</blockquote>
pwd
- звичайні файли;
- каталоги;
- пристрої;
- термінали;
- pipes;
- sockets;
- псевдофайлові системи.;</syntaxhighlight>
command > output.log 2>&1
Мінімальний набір Unix-команд
Типові ідеї:
Команда:
- сервер бази даних;
- application server;
- batch jobs;
- інтеграції;
- обмін файлами;
- планові задачі;
- резервне копіювання;
- middleware;
- monitoring;
- enterprise storage;
- банківські й промислові системи.; |-
| Працювати постійно під root | Можна випадково пошкодити систему |
| Копіювати команди без розуміння | Команда має змогу змінити права, видалити файли або зламати конфігурацію |
| Ігнорувати man pages | Втрачається головне джерело документації |
| Не брати змінні в лапки у shell | Пробіли й спецсимволи можуть зламати скрипт |
| Плутати Unix, Linux і macOS | Це повʼязані, але різні системи |
| Не робити backup | Помилки адміністратора або диска можуть призвести до втрати даних |
</syntaxhighlight>
Якщо сучасний сервер — це місто, то Unix — це один із перших вдалих планів такого міста: вулиці-файли, мешканці-процеси, правила-дозволи, транспорт-pipes і диспетчер-shell. man chmod Команди: |- | Linux | Unix-подібна open source-екосистема, не прямий нащадок оригінального Unix-коду |- | BSD | Історично ближча Unix-гілка з університетської традиції Berkeley |- | macOS | Unix-подібна платформа Apple з графічним інтерфейсом і Darwin-основою |- | Windows | Має іншу історію й архітектуру, хоча підтримує роботу багато Unix-подібних інструментів через WSL |- | Android | Використовує Linux kernel, але має власну Android-модель застосунків |- | Solaris / AIX / HP-UX | Комерційні enterprise Unix-системи |}
користувачі;
== Стандартні потоки ==
{| class="wikitable"
|-
| Серверна інфраструктура
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| автоматизація процесів через shell
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| Обробка логів
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| DevOps
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| ERP backend і сервери
| style="background:#d4edda; color:#155724; font-weight:bold;" | Добре
|-
| Навчання системному програмуванню
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| Масовий домашній gaming desktop
| style="background:#f8d7da; color:#721c24; font-weight:bold;" | Не ключовий сценарій
|-
| Windows-only програми й драйвери
| style="background:#f8d7da; color:#721c24; font-weight:bold;" | Не напряму
|}
== Сертифіковані UNIX-системи ==
Root має змогу:
!; Значення
'''chown''' змінює власника файлу.; Етап
* раннім Unix;
* файловою системою;
* shell;
* системним програмуванням;
* мовою B;
* ранніми інструментами;
* загальною архітектурою системи.; Недолік
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
== Unix і K2 ERP ==
* TCP/IP stack;
* sockets;
* modern Unix;
* FreeBSD;
* OpenBSD;
* NetBSD;
* macOS;
* інтернет-інфраструктуру.;== chmod ==
<pre>
[[Category:DevOps]]
ls -la
→ Queue / Cache / Storage
!; Пояснення
'''cron''' — класичний Unix-механізм запуску задач за розкладом.; Каталог
'''Unix-філософія каже: не створюй одну гігантську програму для всього.;
Приклад C-програми:
Ця команда поєднує:
== Man pages ==
|-
| '''ls'''
| Показує файли
|-
| '''cd'''
| Переходить у каталог
|-
| '''pwd'''
| Показує поточний каталог
|-
| '''cp'''
| Копіює файли
|-
| '''mv'''
| Переміщує або перейменовує файли
|-
| '''rm'''
| Видаляє файли
|-
| '''cat'''
| Виводить вміст файлу
|-
| '''grep'''
| Шукає текст
|-
| '''find'''
| Шукає файли
|-
| '''sed'''
| Потоковий редактор
|-
| '''awk'''
| Обробка тексту й колонок
|-
| '''sort'''
| Сортує рядки
|-
| '''uniq'''
| Прибирає або рахує повтори
|-
| '''wc'''
| Рахує рядки, слова, символи
|-
| '''chmod'''
| Змінює права доступу
|-
| '''chown'''
| Змінює власника
|-
| '''ps'''
| Показує процеси
|-
| '''kill'''
| Надсилає сигнал процесу
|}
== Unix і сервери ==
<blockquote>
{| class="wikitable"
Кожна запущена програма є собою процесом.; Для чого
'''NetBSD''' — BSD-система, відома переносимістю на багато апаратних платформ.; '''macOS цікава тим, що під красивим графічним інтерфейсом Apple ховається Unix-подібна основа з shell, процесами, правами й системними інструментами.'''
!;</blockquote>
!;<syntaxhighlight lang="bash">
Unix-система мислить так:
Типова схема:
Unix-ідеї в DevOps:
| ; Unix навчив індустрію, що операційна платформа має змогу бути не тільки набором внутрішніх механізмів, а й культурою роботи: прості інструменти, текстові потоки, переносимість, автоматизація процесів, документація й повага до командного рядка.; Це стиль мислення: маленькі інструменти, текстові потоки, файли як універсальна абстракція і можливість поєднувати прості речі у складні системи.
Знайти текст: Приклади: Корисні приклади
NetBSDPOSIX важливий для: pipes; Solariscommand 2> errors.log
{| class="wikitable"
Переглянути файли:
<syntaxhighlight lang="bash">
Рекурсивно:
C стала мовою, яка дозволила:
|-
| '''stdin'''
| 0
| Стандартне введення
|-
| '''stdout'''
| 1
| Стандартне виведення
|-
| '''stderr'''
| 2
| Стандартний потік помилок
|}
Популярні shell:
Приклад скрипта:
== Unix і безпека ==
</syntaxhighlight> Single UNIX Specificationchown
'''Рекурсивні команди з правами адміністратора потрібно виконувати обережно, бо вони можуть змінити багато файлів одразу.'''
Приклади redirect:
<syntaxhighlight lang="bash">
== HP-UX ==
→ System calls
</pre>
<blockquote>
* змінювати системні файли;
* керувати користувачами;
* встановлювати програми;
* змінювати права;
* запускати системні служби;
* керувати мережею;
* виконувати адміністративні дії.; Саме там сформувалися багато ідей, які сьогодні здаються звичними:
!; як ілюстрація, Linux зазвичай називають Unix-like, але не UNIX® у строгому торговельно-стандартизованому сенсі.'''
Результат:
<blockquote>
Користувачі K2 ERP
файли;
== Shell ==
|-
| '''UNIX®'''
| Торговельна марка The Open Group
|-
| '''SUS'''
| Single UNIX Specification
|-
| '''POSIX'''
| Набір стандартів переносимих інтерфейсів
|-
| '''Certification'''
| бізнес-процес підтвердження відповідності системи вимогам UNIX
|}
<syntaxhighlight lang="bash">
grep -R "error" .; |}
== OpenBSD ==
Bell Labs — дослідницька лабораторія, де народилися Unix, мова C та багато інших фундаментальних технологій.;</syntaxhighlight> скрипти;
| ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|