Автор Тема: /dev/initctl и /dev/log  (Прочетена 706 пъти)

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
/dev/initctl и /dev/log
« -: Oct 20, 2010, 12:00 »
Имам няколко въпроса за тези два файла. Не, че не рових из интернет, но обикновено намирах някакви теми, свързани с проблеми и без добри обяснения, така че подозирам, че тук може да получа по-хубави отговори.

1. За какво се използва всеки от тези два файла, каква информация има вътре, кой пише в тях и кой (и защо) ги чете :)

2. Защо /dev/initctl е fifo файл?

3. Защо /dev/log е socket?

(Отговорът на 1 логично трябва да определя и отговорите на 2 и 3:))

4. (offtopic) Мрежовите сокети (тези, дето създаваме с домейн AF_INET) считат ли се също за тип файл (на базата на това, че ги достъпваме по файлов дескриптор и пишем и четем с read() и write()) или само Unix domain сокетите се считат за тип файл? Тук нямам предвид дали участват във файловата система в някоя директория под някакво име, а примерно дали за всеки отделен екземпляр се заделя inode. Например според wikipedia неименуваният pipe не е вид файл, а само именувания, но нас са ни учили, че и двете са, просто първото остава "скрито", иначе си има inode и всички нужно.
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: /dev/initctl и /dev/log
« Отговор #1 -: Oct 20, 2010, 12:22 »
Базирано на знанията ми по соларис:
/dev/log е файл, който може да се използва като устройство към което да се изпращат логовете, за да се опрости операцията и да се унифицира.
П.П. Предупреждавам че горното не е задължително да има нещо общо с действителността в Линукс :)
П.П.П. По дефиниция файла трябва да се намира във файлова система, така че мрежовите сокети не би трябвало да се считат (в Линукс) за файлове в общия смисъл на думата
Активен

0x2B|~0x2B

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: /dev/initctl и /dev/log
« Отговор #2 -: Oct 20, 2010, 12:26 »
П.П.П. По дефиниция файла трябва да се намира във файлова система, така че мрежовите сокети не би трябвало да се считат (в Линукс) за файлове в общия смисъл на думата
Може ли линк към дефиницията :) Значи файл не е всичко, за  което заделяме inode, така ли?
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: /dev/initctl и /dev/log
« Отговор #3 -: Oct 20, 2010, 14:08 »
П.П.П. По дефиниция файла трябва да се намира във файлова система, така че мрежовите сокети не би трябвало да се считат (в Линукс) за файлове в общия смисъл на думата
Може ли линк към дефиницията :) Значи файл не е всичко, за  което заделяме inode, така ли?
За съжаление дефиницята е моето разбиране на нещата :)
Активен

0x2B|~0x2B

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: /dev/initctl и /dev/log
« Отговор #4 -: Oct 20, 2010, 14:20 »
За съжаление май и това е официалната дефиниция :D
Активен

triel

  • Напреднали
  • *****
  • Публикации: 36
    • Профил
Re: /dev/initctl и /dev/log
« Отговор #5 -: Oct 20, 2010, 20:34 »
Имам няколко въпроса за тези два файла. Не, че не рових из интернет, но обикновено намирах някакви теми, свързани с проблеми и без добри обяснения, така че подозирам, че тук може да получа по-хубави отговори.

1. За какво се използва всеки от тези два файла, каква информация има вътре, кой пише в тях и кой (и защо) ги чете :)

/sbin/telinit използва /dev/initctl, за да комуникира със /sbin/init. За повече информация: man 8 init

/dev/log се използва от user space програми, за да предават информация към syslogd. Устройството бива отворено за писане при извикване на openlog() (ако се използва флаг LOG_NDELAY), или при първото използване на syslog() от дадена програма. От своя страна syslogd (или syslog-ng, etc.) отварят /dev/log за четене още при стартиране. Тук не мога да посоча източник на информацията, тъй като тя е събирана от различни места с течение на времето. Евентуално man 3 syslog би могъл да помогне донякъде.

2. Защо /dev/initctl е fifo файл?

3. Защо /dev/log е socket?

(Отговорът на 1 логично трябва да определя и отговорите на 2 и 3:))

Логично би трябвало да го определи, но... в един идеален свят. Имам някакво мнение по въпроса, но е чиста спекулация, така че ще го запазя за себе си.

4. (offtopic) Мрежовите сокети (тези, дето създаваме с домейн AF_INET) считат ли се също за тип файл (на базата на това, че ги достъпваме по файлов дескриптор и пишем и четем с read() и write()) или само Unix domain сокетите се считат за тип файл? Тук нямам предвид дали участват във файловата система в някоя директория под някакво име, а примерно дали за всеки отделен екземпляр се заделя inode. Например според wikipedia неименуваният pipe не е вид файл, а само именувания, но нас са ни учили, че и двете са, просто първото остава "скрито", иначе си има inode и всички нужно.

AFAIK, AF_INET sockets също си имат inodes (under the hood, разбира се), т.е. по твоята дефиниция би трябвало да са файлове. А ако погледнем по-широко на нещата и разгледаме операционна система като Plan9 например, то там нещата не се случват "под капака", а всичко си е достъпно чрез файловата система, включително и AF_INET sockets.
Активен