LINUX.ORG.RU

Как понять, что все в Linux- это файлы?

 , ,


1

2

Недавно я узнал, что «в Linux файлом является абсолютно все». Понятно, когда речь идет о каком-то статическом файле, картинке или текстовом файле, тут все ясно.

Но пишут, что процесс или сетевое соединение это тоже файл. Я это представляю как некие переменные/временные данные, которые записывает одна программа/процесс (когда начинает свою работу), и считывает (при надобности) другая. Т.е. некие файлы, в которые постоянно (может, ежесекундно) что-то записывается/перезаписывается.

Но хотелось бы увидеть воочию такой файл «сетевого соединения» или файл «процесса». Открыть его, посмотреть что внутри.

1. Где найти такие файлы в Ubuntu?

2. Есть ли просмотрщик (консольный), который «рефрешит» этот файл ежесекундно, чтобы убедиться что в таком файле постоянно что-то меняется?

3. А в Windows не все- файл? Те же процессы и сетевые соединения там в виде чего представлены?

Файл это абстрактный интерфейс, а не буквально файл, который данные на диске, под твоей типичненькой NTFS.

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

А как можно «потрогать» этот абстрактный интерфейс? Хочу заглянуть внутрь файла «сетевого соединения» или файла «процесса».

shkolnik_2019
() автор топика
Ответ на: комментарий от targitaj

Там много файлов и каталогов. Дай хоть один пример файла сетевого соединения и процесса, и чем их открыть для просмотра (без вреда системе).

shkolnik_2019
() автор топика

Это рекламный слоган. Так сделали в план 9, а в юникс от этого ушли довольно далеко. Хотя какие-то обрезки в файлах можно найти.

В windows всё объект. Там проработанная объектная модель. Местами такую строят и в линуксе, например в KDE/Gnome.

anonymous
()
Ответ на: комментарий от anonymous

Рекламный слоган? Я это читал в книжке по Linux пол года назад, а недавно то же самое прочел в статье про Linux. Ну пусть по-твоему, покажите мне где находится сетевое соединение и процесс, и как/чем его открыть и посмотреть что внутри.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

потрогай stdin, stdout - они могут быть обычным файлом, пайпом, сетевым сокетом

трогать сетевые сокеты удобно читая книжку Йон Снейдер «Эффективное программирование TCP/IP», если ее осилишь - далеко пойдешь

anto215 ★★
()
  1. Где найти такие файлы в Ubuntu?

В /dev и /proc

  1. Есть ли просмотрщик (консольный), который «рефрешит» этот файл ежесекундно, чтобы убедиться что в таком файле постоянно что-то меняется?

man progress

anonymous
()
Ответ на: комментарий от shkolnik_2019

Вот тебе ещё Как открыть TCP-/UDP-сокет средствами командной оболочки bash0

Ну и в принципе можешь и дальше сам изучать вывод поисковика по запросу /dev сокет

Но в принципе во всём многообразии тебе реально понадобится только утилиты dd,fdisk,gdisk и mount для работы с файлами блочных устройств(то есть манипуляция образами дисковых разделов) и снятыми с них образами разделов и дисков..

torvn77 ★★★★★
()
Ответ на: комментарий от shkolnik_2019

А как можно «потрогать» этот абстрактный интерфейс? Хочу заглянуть внутрь файла «сетевого соединения» или файла «процесса».

Сетевого соединени… Ну например: cat /proc/net/tcp. Но это не будет познавательно для тебя.

Если хочется с необычными файлами поиграться, есть попроще примеры. Скажем, /dev/tty2 (tty3, tty4 и т.д.) — файл виртуальной консоли. Например, сделай echo "Hello World" > /dev/tty2 из-под рута, а потом переключись на вторую консоль (Ctrl+Alt+F2). Скажем /dev/sda (скорее всего так) — файл твоего жёсткого диска. С него ты можешь считать ВЕСЬ жёсткий диск, как единый файл. А забив его нулями, ты забьёшь нулями, соответственно, жёсткий диск (не делай этого — потеряешь данные). Ну ещё есть, например генератор случайных чисел — /dev/urandom. Можешь сделать например head -1 /dev/urandom — получишь строку случайно каши (каждый раз разную, хотя сам ты файл не менял). Хватит пока таких примеров? Больше — смотри все файлы в /dev и в /proc.

anonymous
()
Ответ на: комментарий от anonymous

Да, более чем достаточно, спасибо. Самое интересное попробую в виртуалке.

shkolnik_2019
() автор топика
Ответ на: комментарий от anonymous

Можешь сделать например head -1 /dev/urandom — получишь строку случайно каши

К стати есть команды для генерации пароля:

Смешанные: unset pw; declare pw;while [ ${#pw} -lt 4 ]; do pw="$pw$(dd if=/dev/urandom bs=1 count=1 2>/dev/null | grep '[a-fA-F0-9]')"; done; echo $pw Только прописные: unset pw; declare -l pw;while [ ${#pw} -lt 4 ]; do pw="$pw$(dd if=/dev/urandom bs=1 count=1 2>/dev/null | grep '[a-fA-F0-9]')"; done; echo $pw Только заглавные: unset pw; declare -u pw;while [ ${#pw} -lt 4 ]; do pw="$pw$(dd if=/dev/urandom bs=1 count=1 2>/dev/null | grep '[a-fA-F0-9]')"; done; echo $pw

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

К стати есть команды для генерации пароля

У меня тоже есть! Кастомный.

head /dev/urandom | tr -dc 'A-Za-z0-9`\-\=[];,./' | head -c 13; echo ''

Как на работе требуют, 13 знаков минимум, с заглавными, прописными, цифрами и символами. Оставляю только те символы, которые мне не сложно набирать на телефоне.

yvv ★★☆
()

в Linux файлом является абсолютно все

Это не так (в частности, сетевым интерфейсам никакие файлы не соответствуют).

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Даже если файл как бы есть, уложиться в простые операции read/write и тестовые потоки не получается. Появляются всякие ioctl и т.п. и абстракция хромает

pawnhearts ★★★★★
()

proc

Угу. Этакий виртуальный файл в виртуальном каталоге. По сути читаешь память в человекопонятном виде. Устаревшее, как говно мамонта. Для управления не используется уже очень давно. Да и для чтения не актуален. И /dev тоже всего лишь особые ссылки на драйвера. Читать их человеку совершенно бессмысленно. Но как написано! Устройство представляет собой файл в /dev. В настоящее время это тоже виртуальный файл, который хранится в памяти. Раньше были реальные файлы в /dev и хранились на диске, затем появился DevFS, а сейчас udev. Файл он потому, что ядро его воспринимает как имя файла, но файла как такового может и не существовать. Это вопрос пространства имен (https://en.wikipedia.org/wiki/Linux_namespaces). В данном случае, filesystem namespace.

anonymous
()
Ответ на: комментарий от anonymous

Да и вообще, школьник, забей на линукс. Линукс это большая жопа без ручки, он и ручку поглатил. В нем нет никакого UNIX’а, он GNU’тый до безобразия. Используя бесплатный линукс ты всего лишь являешься тестером работоспособности кода для коммерческих дистрибутивов. Хорошего бесплатно тебе никто и никогда не даст.

А если ты фанатик it, то поверь мне на слово, it только в рашке и сшашке что-то особое. На самом деле херня особо редкая. Я хз почему все рвутся в этот it, но она того не стоит и не стоит. Умного в it нет почти ничего. Если только ради денег, то кроликов разводить на много выгоднее.

loxo

anonymous
()
Ответ на: комментарий от greenman

Устарело, как и сам Алексей.

Собственно, Алексей пример того, до чего доживают it’шники. Вроде и знает много, а не нужен уже. В 30 лет это уже предпенсионый возраст. В 40 лет если ты гений или удачно пристроил свою задницу и особо ничего не делаешь. В 50 лет ты у дел, если начальник или сисадмин, но уже больной и тупой, все на самотек.

anonymous
()
Ответ на: комментарий от shkolnik_2019

А как можно «потрогать» этот абстрактный интерфейс?

cat

te111011010
()
  1. уверовать в это - через это понимание что всё в Linux файл станет пониманием аксиомы.

  2. все(более чем в Linux встречающемся в природе в диких условиях) файл в Plan9 и его (более менее чистых(т.е где с точки той оси plan9( ака pLANix ака plaNIX ака uNIX т.е reseach unix ver 10) )в стволе основном предков )потомках - и успешно(вполне для тех задач) используется у BigCorp ( ака «делай зла» и прочее сектанство :( ) - golang как баребон

  3. и да анекдот - «а то так и останешься подавателям ключа на 12» - применим ко многим ещё окончательно не проффесионализированным областям полезной деятельности.

qulinxao3
()

я узнал, что «в Linux файлом является абсолютно все»

Тебя обманули, это про Plan9.

pinus_nigra
()
Ответ на: комментарий от shkolnik_2019

Ну пусть по-твоему, покажите мне легион устал.

байка «дайте ему лединец»

в практике трейдофф здесь_и_сейчас делает не самые красивые(с точки зрения архитектуры) решения самыми красивыми с точки равновесия[по Нэшу(?)] по экономике внедрения.

в долгую(иногда до нескольких столетий :( время перехода растягивается) красивые по архитектуре более экономичны ибо менее требовательны к девелоперам(в части сопряжения более умопостигаемых интерфейсов)

qulinxao3
()
Ответ на: комментарий от anto215

потрогай stdin, stdout - они могут быть … сетевым сокетом

очень любопытно, че это такое я сейчас прочитал. покажешь, как такое делается без неткатов и башизмов?

t184256 ★★★★★
()

Недавно я узнал, что «в Linux файлом является абсолютно все».

Врут. В линуксе этого никогда не было. И в юниксе перестало быть с появлением сокетов.

Где в самом деле «файл есть всё» – так это в plan9. В том числе и мышка и монитор и сетевое соединение и по-моему даже cpu.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от greenman

Глава 8. Файл как он есть

Еще раз повторюсь, устарело невероятно и к тому же речь исключительно про файловую систему как таковую.

Что такое объект? Это данные и метод их обработки. Данные бывают разные. Описание каталога тоже данные. Потрогать их cat’ом не получится. Уточнение, что за данные, содержится в атрибутах файла (смотреть stat) и в т.н. магии, а точнее, идентификационной сигнатуре (смотреть file). Принадлежность текстовых файлов определяется дополнительно. Как же обработывают эти данные? В Windows метод обработки вызывается по суффиксу файла, например, *.exe, *.pdf. В DE Linux метод обработки данных в начале определяется по суффиксу файла (привязка файлов, ассоциация), затем по магии, если и магия ничего не дала, считается текстовым файлом. Для примера, создадим пустой файл touch file и попробуем его открыть в диспетчере файлов. Будет предложено выбрать приложение для обработки данных. Но стоит добавить к нему суффикс .pdf и DE попытается открыть его как pdf. Исходя из этого, для DE Linux файлы тоже являются объектами.

anonymous
()
Ответ на: комментарий от beastie

В том числе и мышка

А что не так с мышкой? Оно везде - файл, даже в ms-dos-е, так как просто тупо генерирует последовательность байткодов от движения и нажатий кнопочек.

vodz ★★★★★
()
Ответ на: комментарий от qulinxao3

в него писать можно и это приводит к очень простым способам автоматизации gui

Вы путаете два понятия. Писать в мышку надо, чтобы её инициализировать, поменять скорость и чувствительность. А для прикладного ПО мышка виртуальная, некий программный pointer, включающий в себя события от мыши, стилуса, тачпада и их эмуляции, по своему протоколу, но тоже по сути двунаправленный stream со своим байткодом.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от greenman

http://www.linuxcenter.ru/lib/books/posixbook/

Книга 2005го, информация по состоянию на год так 2000-ый. Устарело на 20 лет, а 20 лет — это, например, дорога от огромных ламповых шкафов без ос, которым задачи скармливались перфолентами, до графических интерфейсов и домашних компов.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Устарело на 20 лет, а 20 лет — это, например, дорога от огромных ламповых шкафов без ос, которым задачи скармливались перфолентами, до графических интерфейсов и домашних компов.

Все аналогии врут. Первые автомобили 130 лет назад были электрические, мало чем отличиющиеся от сегодняшних, ну аккумы были свинцовые и вместо IGBT в контроллерах были реостаты. А в 2000 году Интернет был самым свободным, не чета сегодняшнему, никакой цензуры и сплошной рост доткомов в надежде, что когда-то окупится и потому почти коммунизм с бесплатной информацией. Какие лампы?

vodz ★★★★★
()
Ответ на: комментарий от greenman

Конкретно тут разве что небольшие анахронизмы, вроде «обнаружатся такие файлы, как cdrom, mouse, modem, audio», но в этой главе куча ссылок на 10 главу, в которой, по нынешним временам, написана уже дичь.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

Лучше прочесть эту «дичь», делая поправки на современность, чем тыкаться, как мокрые котята. Черпая разрозненные знания из хаутушек.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от beastie

Можно скопировать CPU и получить удвоение мощности.

anonymous
()

в Linux файлом является абсолютно все

Это не так. Так было в ранних unix, но и там от этой абстракции постепенно отошли, а linux появился уже после того, как всё перестало быть файлом.

Но в двух словах суть такова, что все ресурсы системы доступны через файловый интерфейс. В частности устройства представляются в виде файлов в каталоге /dev, различные системные внутренности в виде файлов в /proc и /sys и т.д. Собственно даже каталоги это тоже особый вид файла. Это должно позволять по изначальной задумке работать с устройствами и внутренностями системи с помощью обычных файловых команд, обеспечивая универсальность, а также уменьшить объём системного API. Классический пример (который сейчас уже не работает) cat file.wav > /dev/dsp

Сейчас в linux остался компромиссный вариант. Что сущности по прежнему представляются как файлы, но для того, чтобы управлять связанными с файлами сущностями часто нужно использовать специальные операции через ioctl/fcntl/mmap и т.п. «неклассический» файловый доступ, что не позволяет теперь просто делать cat и т.п.

Кроме того некоторые вещи вообще не имеют файлового представления, в частности сетевые соединения. С ними можно работать только через системный API.

А в Windows не все- файл

Там такой подход в принципе не используется и полагаются полностью на системный API.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от t184256

не пойму, ты прикалываешься или чо?

inetd/xinetd может запустить любой скрипт в качестве внешнего сервера. скрипту он отдаст готовый сокет, подцепленный к stdin, stdout, stderr.

может не скрипт запустить, а ftpd или апач например, если тебе неохота их держать постоянно запущенными.

anto215 ★★
()
Ответ на: комментарий от vodz

Первые автомобили 130 лет назад были электрические, мало чем отличиющиеся от сегодняшних

Ну да, мало чем.

В начале была работа «О применении электромагнетизма для приведения в движение машины». За ней лодка поплала на электродвигателе. Потом самоходка по железной дороге. И современная лодка, и самоходка по железке ну совсем не отличаются от первых.

anonymous
()
Ответ на: комментарий от no-such-file

Классический пример (который сейчас уже не работает)

Почему не работает? Я сам не пробовал, но, по описанию, osspd позволяет такое делать.

cat file.wav > /dev/dsp

К слову, этот классический пример — классический обман. В том смысле, что воспроизводится не wav-файл, /dev/dsp принимает сырой поток, просто исторически сложилось, что в WAV кладут LPCM 2ch/44.1kHz/16bit, что и ожидает звуковушка по умолчанию, при этом и заголовок содержит количество байт, кратное 4, что даёт всего лишь несколько незаметных уху мусорных семплов. Если же положить в файл file.wav mono/22.05kHz/8bit, то результат cat'а будет обескураживающим.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от Deleted

Можно, конечно. Мой поинт несколько в другом — этот сырой поток всё равно должен подходить под ожидания /dev/dsp. А эти ожидания настраиваются через ioctl. То есть обычными файловыми утилитами в общем случае воспроизвести звук не получится, тебе всё равно потребуется поговорить с /dev/dsp не как с простым файлом, а как со звуковым устройством.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от vodz

I mean :)

в системах где систематически проводится интерфейс «всё есть файл» через файл в который поступают состояние с устройства и чтением из которого можно сии состояния учитывать в пользовательской программе как например управляющие события можно(при должном перенаправлении файлов - через теже пайпы и т.п) эмулировать события - т.е. как

в той классической (ака бородатой шутке) что всё есть обьект эквивалентно всё есть файл с «драйверами» событий открыть создать прочитать и записать - т.е есть возможно взаимно однозначное соответствие между «файловым» vs «обьектным» взглядом

т.е ровно то классическое отвязывание от специфики терминального устройства возогнаное до универсального интерфейса открыть/создать/прочитать/записать уровня файла и ещё пару тройку методов жонглирования локальными и глобальными пространствами имён

qulinxao3
()
Ответ на: комментарий от anonymous

Да и вообще, школьник, забей на линукс. Линукс это большая жопа без ручки, он и ручку поглатил. В нем нет никакого UNIX’а, он GNU’тый до безобразия. Используя бесплатный линукс ты всего лишь являешься тестером работоспособности кода для коммерческих дистрибутивов. Хорошего бесплатно тебе никто и никогда не даст.

Linux выполняет мои задачи и экономит время. Он свободный, открытый и делает все что мне надо. А винда для этих задач не подходит, т.к. закрытая и шпионит, еще и тонна телеметрии в комплекте за твои же деньги. Ты что, Палпатин от мира винды?

А если ты фанатик it, то поверь мне на слово, it только в рашке и сшашке что-то особое. На самом деле херня особо редкая. Я хз почему все рвутся в этот it, но она того не стоит и не стоит. Умного в it нет почти ничего. Если только ради денег, то кроликов разводить на много выгоднее.

Я пока никуда не рвусь, но вот скажи мне, мил человек. А что не херня? Садовником? Продавцом? Кому живется весело, вольготно на Руси?

shkolnik_2019
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.