---
##
- [1. Философия UNIX: «Everything is a file»]
 - [2. Как работает VFS — Virtual File System]
 - [3. Файловая иерархия Linux]
 - [4. /dev — устройства как файлы]
 - [5. /proc — процессы и ядро]
 - [6. /sys — драйверы и атрибуты]
 - [7. Управление системой через файлы]
 - [8. Сокеты, TTY и файловые дескрипторы]
 - [9. Память как файл]
 - [10. FIFO, каналы и пайпы]
 - [11. Плюсы и минусы подхода]
 - [12. Чек-лист практики]
 - [13. Полезные ссылки и man-страницы]
 
## 1. Философия UNIX: «Everything is a file»
В 1970-х создатели UNIX решили:
Это значит, что:
- Жёсткий диск, веб-камера, сетевой порт, процесс и даже сокет TCP/IP — всё имеет файловый интерфейс.
 - Мы используем одинаковые вызовы: 
open(),read(),write(),ioctl(),close(). 
Это делает систему универсальной: если ты умеешь читать файл, значит умеешь читать температуру процессора, управлять сетью и работать с USB-устройствами.
---
## 2. Как работает VFS — Virtual File System
VFS — слой ядра, который абстрагирует доступ к разным источникам данных:
- EXT4, XFS, Btrfs, ZFS — обычные файловые системы
 /procи/sys— виртуальные системы/dev— устройства как файлы- Сетевые сокеты
 - Пайпы и FIFO
 
VFS делает так, что приложение видит всё как файлы, хотя ядро под капотом работает с совершенно разными объектами.
---
## 3. Файловая иерархия Linux
Linux использует единую иерархию — нет разделения на диски (C:, D
/.| Путь | Назначение |
|--------|-------------------------------------------|
|
/    | Корень всей системы                       ||
/dev | Файлы устройств                            ||
/proc| Виртуальные файлы процессов и ядра        ||
/sys | Драйверы, устройства, параметры системы   ||
/etc | Конфигурационные файлы                     ||
/home| Домашние каталоги пользователей          ||
/var | Логи, базы данных, очереди               ||
/tmp | Временные файлы                           ||
/run | Временные сокеты и данные процессов      |Пример:
		Bash:
	
	tree -L 1 /
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── proc
├── sys
└── var
	---
## 4. /dev — устройства как файлы
Всё оборудование отображается как файлы.
Примеры устройств:
- Жёсткие диски: 
/dev/sda,/dev/nvme0n1 - USB: 
/dev/bus/usb/001/002 - Веб-камера: 
/dev/video0 - Звук: 
/dev/snd/ - Клавиатура/мышь: 
/dev/input/* 
Посмотрим диск:
		Bash:
	
	ls -lh /dev/sda
brw-rw---- 1 root disk 8, 0 Sep  9 18:42 /dev/sda
	b→ блочное устройствоrw→ права8,0→ идентификатор
Прочитаем первые 512 байт MBR:
		Bash:
	
	sudo dd if=/dev/sda bs=512 count=1 | hexdump -C
	---
## 5. /proc — процессы и ядро
/proc — виртуальная файловая система, которую ядро создаёт «на лету». Содержит информацию о процессах и параметрах ядра.
Полезные файлы:
		Bash:
	
	cat /proc/cpuinfo      # Информация о CPU
cat /proc/meminfo      # Оперативная память
cat /proc/uptime       # Время работы системы
cat /proc/partitions   # Разделы дисков
	Информация о процессах:
		Bash:
	
	ls /proc             # PID процессов
ls /proc/$$/fd       # Файлы текущего shell
cat /proc/$$/status  # Статус shell-процесса
	---
## 6. /sys — драйверы и атрибуты
/sys (sysfs) — интерфейс к драйверам и железу.Примеры:
		Bash:
	
	ls /sys/class/net         # Сетевые интерфейсы
ls /sys/block            # Диски и разделы
ls /sys/class/thermal    # Датчики температуры
	Чтение температуры CPU:
		Bash:
	
	cat /sys/class/thermal/thermal_zone0/temp
	Обычно значение делится на 1000:
42000 → 42.0°C.---
## 7. Управление системой через файлы
Изменение параметров ядра = запись значения в файл.
Пример: включаем IP forwarding:
		Bash:
	
	echo 1 > /proc/sys/net/ipv4/ip_forward
	Альтернатива:
		Bash:
	
	sysctl -w net.ipv4.ip_forward=1
	Меняем лимит открытых файлов:
		Bash:
	
	echo 65535 > /proc/sys/fs/file-max
	Сделать изменения постоянными:
		Bash:
	
	sudo nano /etc/sysctl.conf
	---
## 8. Сокеты, TTY и файловые дескрипторы
Файловые дескрипторы — числовые ссылки на открытые файлы:
0— stdin1— stdout2— stderr
Список дескрипторов текущего shell:
		Bash:
	
	ls -l /proc/$$/fd
	Сетевые соединения — тоже файлы:
		Bash:
	
	lsof -i -P -n
	Отправляем сообщение в чужой терминал:
		Bash:
	
	echo "Привет!" > /dev/pts/1
	---
## 9. Память как файл
Linux предоставляет доступ к памяти как файлу:
/dev/mem→ физическая память/proc/kcore→ дамп ядра
Пример:
		Bash:
	
	sudo hexdump -C /dev/mem | head
	---
## 10. FIFO, каналы и пайпы
Linux позволяет соединять процессы через пайпы:
		Bash:
	
	dmesg | grep error
	Создание именованного канала:
		Bash:
	
	mkfifo mypipe
echo "data" > mypipe &
cat mypipe
	---
## 11. Плюсы и минусы подхода
###
- Универсальный интерфейс
 - Простота API
 - Лёгкость автоматизации
 - Мощные пайплайны команд
 
###
/procи/sysпугают новичков- Ошибочная запись может сломать ядро
 - Разные ядра → разные атрибуты
 
---
## 12. Чек-лист практики
- [ ] Проверить CPU → 
cat /proc/cpuinfo - [ ] Посмотреть диски → 
lsblk - [ ] Изучить температуру CPU → 
cat /sys/class/thermal/thermal_zone0/temp - [ ] Найти сетевые сокеты → 
ss -tulpn - [ ] Проверить процессы → 
ps aux | less - [ ] Настроить sysctl → 
sysctl -a | less 
---
## 13. Полезные ссылки и man-страницы
- Документация Linux VFS
 man 5 procman 5 sysfsman 2 openman 2 readman 2 writeman 7 unixman 7 fifo
---
##
Linux строится на фундаментальной идее:
Эта философия:
- упрощает разработку,
 - делает систему гибкой,
 - открывает доступ к мощнейшим инструментам.
 
Если ты умеешь читать файлы — ты уже умеешь управлять системой.
	