ФЭНДОМ


mntgenПравить

Mntgen - это простая программа, которая создает (в действительности, делает вид что создает) каталог во время перехода в него. Обычно она применяется для каталога /n, куда монтируются все виды сетевых сервисов. Из-за того что серивсов и сетей может быть огромное множество, не очень удобно создавать каталоги для всех этих сервисов. С помощью mntgen, вы можете получить пустой каталог /n и иметь возможность монтировать сервисы как подкаталоги. Следующий пример иллюстрирует применение mntgen. Во-первых, исследуем /n без mntgen:

% cd /n
% ls -l
%

% ls -ld test
ls: stat test: 'test' file does not exist
%

% cd test
cd: test: 'test' file does not exist
%

% bind '#m' /n/mouse
bind: /n/mouse: '/n/mouse' does not exist
% 

Как вы видите, /n пуст. Теперь то же самое, но без mntgen:

% mount {mntgen} /n
%

% cd /n/
%

% ls -ld test
d-r-xr-xr-x M 2 me me 0 Jan 01  1970 test
%

% ls -ld another
d-r-xr-xr-x M 2 me me 0 Jan 01  1970 another
%

% cd more
% pwd
/n/more
%

% bind '#m' /n/mouse
% ls -l /n/mouse
---w--w--w- m 0 mjl mjl 0 Apr 15 20:37 /n/mouse/cursor
--rw-rw-rw- m 0 mjl mjl 0 Apr 15 20:37 /n/mouse/pointer
% 

ftpfsПравить

Ftpfs - это ftp-клиент, реализованный в виде файлового сервера. Он просто представляет файлы ftp-сервера в виде файловой системы. Пример должен говорить сам за себя:

% ftpfs -a none@example.org -m /n/ftp ftp.openbsd.org
220 openbsd.srv.ualberta.ca FTP server ready.
331 Guest login ok, send your email address as password.
%
% cd /n/ftp
% cd pub/OpenBSD
% ls -l
d-rwxr-xr-x M 6 0     0       1024 Sep 28  2008 4.2
d-rwxr-xr-x M 6 0     0       1024 Sep 28  2008 4.3
d-rwxr-xr-x M 6 0     0       1024 Sep 04  2008 4.4
d-rwx------ M 6 0     0        512 Mar 09 17:04 4.5
d-rwxr-xr-x M 6 318   0        512 Feb 19 23:24 OpenBGPD
d-rwxr-xr-x M 6 318   0        512 Jan 16 06:05 OpenNTPD
d-rwxrwxr-x M 6 0     122     4608 Feb 22 17:34 OpenSSH
--rw-r--r-- M 6 0     121      238 Feb 07  1997 README
d-rwxr-xr-x M 6 20001 20001 454144 Apr 17 01:03 distfiles
d-rwxr-xr-x M 6 308   0       2048 Jan 12 04:20 doc
--rw-r--r-- M 6 0     0       8741 Sep 03  2008 ftplist
d-rwxr-xr-x M 6 0     100     1024 Apr 07 03:59 patches
d-rwxr-xr-x M 6 0     122      512 Aug 31  2008 snapshots
d-rwxr-xr-x M 6 0     100     1024 Apr 07 21:07 songs
d-rwxr-xr-x M 6 0     121      512 Jun 28  2008 tmp
d-rwxr-xr-x M 6 0     100      512 Jan 07  2005 tools
%

tarfsПравить

Tarfs монтирует tar-файл (в режиме только-чтение). Tar является простым файловым форматом, однако традиционная дисковая "файловая система" в действительности программа такого же типа, только с другим форматом файла (плюс к этому она реализуют запись).

% tarfs gps.tar /n/tar
% cd /n/tar
% ls -l
d-rwxrwxr-x M 16 0 0 0 Jul 07  2006 gps
% cd gps
% ls -l
--rw-rw-r-- M 16 0 0   287 Mar 04  2006 dat.h
--rw-rw-r-- M 16 0 0  4501 Mar 04  2006 gpsevermore.c
--rw-rw-r-- M 16 0 0 18924 Apr 09  2006 gpsfs.c
--rw-rw-r-- M 16 0 0   219 Mar 04  2006 mkfile
--rw-rw-r-- M 16 0 0  2795 Mar 04  2006 util.c
% wc gpsfs.c
   1010    2713   18920 gpsfs.c
% cd
% unmount /n/tar

memfsПравить

Memfs - это файловая система, которая хранит файлы в оперативной памяти. Идельна для монтирования к /tmp:

% ls -l /tmp/test
ls: stat /tmp/test: '/tmp/test' does not exist
%

% mount -bc {memfs -s} /tmp
%

% echo test >/tmp/test
% ls -l /tmp/test
--rw-r--r-- M 20 mjl memfs 5 Apr 17 22:43 /tmp/test
%

% unmount /tmp
% ls -l /tmp/test
ls: stat /tmp/test: '/tmp/test' does not exist
%

/net, or #IПравить

Сетевой стек предоставляется драйвером устройства "#I". У него имеется по каталогу на каждый протокол, например, tcp. Когда "#I" монтируется по умолчанию в /net, tcp-стек становится доступен в /net/tcp. Библиотечные функции, которые имеют дело сетевыми соединениями (такие как dial и announce, для соединения и обслуживания) могут быть реализованы при помощи обычных вызовов open/read/write к файлам в каталоге /net/tcp. Чтобы продемонстрировать легкость, с которой может быть использован /net/tcp, давайте рассмотрим следующий шелл-скрипт, который осуществляет HTTP-запрос:

<>[3]/net/tcp/clone {
        dir=/net/tcp/^`{cat <[0=3]}
        echo connect 74.125.77.99!80 >$dir/ctl &&
        {
                echo 'GET /search?q=inferno-os&btnI=I''m+Feeling+Lucky HTTP/1.1' &&
                echo 'connection: close' &&
                echo 'host: www.google.com' &&
                echo ''
        }>$dir/data
        cat $dir/data
}

И результат его работы:

HTTP/1.1 302 Found
Location: http://www.vitanuova.com/inferno/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Date: Sat, 18 Apr 2009 19:57:52 GMT
Server: gws
Content-Length: 230
Connection: close

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.vitanuova.com/inferno/">here</A>.
</BODY></HTML>

Это демонстрация мощи хорошо спроектированной абстракции, и такого превосходного инструмента как командный интерпретатор Inferno. В подобной манере, можно сделать dns-запрос при помощи /net/dns, и более общее преобразование сетевых адресов посредством /net/cs.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики