справочные системы Linux
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
справочные системы Linux
Вопрос тех. документации Linux достаточно актуальный, на то есть разные причины:
1. хорошего уровня техническая документация отсутствует,
2. с одной стороны, это неизбежно из-за "колхозного" характера развития проектов GNU и Linux ...
3. а с другой стороны, потому, что ... если не "сокрытие", то уж "неразглашение" информации - это обязательная черта opensource как новой модели бизнеса, для тех брандов IT, которые поддерживают (финансово подогревают ) эту модель (IBM, Oracle, Google), см.: Бизнес-модели в IT производстве.
Но при отсутствии упорядоченной технической информации, в GNU/Linux есть множество источников разбросанной информации, откуда можно извлечь всё!
Если ... а). знать откуда извлекать и б). уметь оттуда извлекать.
Вся эта информация находится внутри самого проекта GNU/Linux в виде справочных систем.
Причём, не так важно, представлена эта справочная система в виде файлов в самой системе, или в виде URL на HTTP ресурс, где представлена та же информация.
У меня возникло намерение (и потребность) собрать в одно место перечисление справочных систем Linux ... потому, что об одних из них знают все - man-система, а о других просто забывают, или никогда и не слышали из ново-пришедших в мир Linux.
Кое-что о справочных системах я писал в проекте книги: Linux-инструменты для Windows-программистов, но на сегодня информации существенно больше, нужно бы дополнить
1. хорошего уровня техническая документация отсутствует,
2. с одной стороны, это неизбежно из-за "колхозного" характера развития проектов GNU и Linux ...
3. а с другой стороны, потому, что ... если не "сокрытие", то уж "неразглашение" информации - это обязательная черта opensource как новой модели бизнеса, для тех брандов IT, которые поддерживают (финансово подогревают ) эту модель (IBM, Oracle, Google), см.: Бизнес-модели в IT производстве.
Но при отсутствии упорядоченной технической информации, в GNU/Linux есть множество источников разбросанной информации, откуда можно извлечь всё!
Если ... а). знать откуда извлекать и б). уметь оттуда извлекать.
Вся эта информация находится внутри самого проекта GNU/Linux в виде справочных систем.
Причём, не так важно, представлена эта справочная система в виде файлов в самой системе, или в виде URL на HTTP ресурс, где представлена та же информация.
У меня возникло намерение (и потребность) собрать в одно место перечисление справочных систем Linux ... потому, что об одних из них знают все - man-система, а о других просто забывают, или никогда и не слышали из ново-пришедших в мир Linux.
Кое-что о справочных системах я писал в проекте книги: Linux-инструменты для Windows-программистов, но на сегодня информации существенно больше, нужно бы дополнить
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
1. Система man.
Эту систему, как раз, знают все!
Система man - это не Linux-изобретение, она появилась чуть ли не с самого рождения UNIX, и присутствует в любой UNIX-like OS: *BSD, Solaris, MINIX, QNX ...
Вся справочная система man разбита на секции по принадлежности. Если не возникает неоднозначности (термин не встречается в нескольких секциях), номер секции можно не указывать, иначе номер секции указывается как параметр (номер секции может указываться всегда, это не будет ошибкой):
Вот грубое разбиение всей справочной системы по секциям.
Результат вызова man с указанием секции и без указания может быть различным:
- это будет вызов из секции 2 о системном вызове int syslog()
- а это буде вызов из секции 3 о библиотечном вызове void syslog()
Часто говоря о термине (команде, файле, ...) в скобках () указывают № секции man, где описывается этот термин:
То, какие страницы man будут присутствовать у вас в системе, в каком порядке они будут искаться, на каком языке представляться... - это всё настраиваемые вещи (можно настроить так, что при наличии обширных иерархий файлов man на любой запрос будет ответ: "отсутствует страница"). Есть несколько разных способов настройки путей поиска man. Один из них - переменная:
И это поместить в один из файлов: $HOME/.bash, /etc/rc.d/rc.local, /etc/profile, /etc/profile.d/*
В показанном примере:
- определено 3 фаловых иерархии поиска man;
- сначала поиск будет производится среди русскоязычных страниц man;
- только если предыдущий поиск неудачный, поиск продолжится среди оригинальных системных страниц man;
- ...
Интерактивные (через браузер) собрания man в сети (часто свежее файловых + с лучшей системой поиска):
- http://linux.die.net/man/
Эту систему, как раз, знают все!
Система man - это не Linux-изобретение, она появилась чуть ли не с самого рождения UNIX, и присутствует в любой UNIX-like OS: *BSD, Solaris, MINIX, QNX ...
Вся справочная система man разбита на секции по принадлежности. Если не возникает неоднозначности (термин не встречается в нескольких секциях), номер секции можно не указывать, иначе номер секции указывается как параметр (номер секции может указываться всегда, это не будет ошибкой):
Код: Выделить всё
$ man 1 man
...
The standard sections of the manual include:
1 User Commands
2 System Calls
3 C Library Functions
4 Devices and Special Files
5 File Formats and Conventions
6 Games et. Al.
7 Miscellanea
8 System Administration tools and Deamons
Результат вызова man с указанием секции и без указания может быть различным:
Код: Выделить всё
bash-4.2$ man syslog
...
Код: Выделить всё
bash-4.2$ man 3 syslog
...
Часто говоря о термине (команде, файле, ...) в скобках () указывают № секции man, где описывается этот термин:
Код: Выделить всё
logger(1), setlogmask(3), syslog.conf(5), syslogd(8)
Код: Выделить всё
export MANPATH=/usr/share/man/ru:/usr/share/man:/home/olej/solarisstudio12.3/man
В показанном примере:
- определено 3 фаловых иерархии поиска man;
- сначала поиск будет производится среди русскоязычных страниц man;
- только если предыдущий поиск неудачный, поиск продолжится среди оригинальных системных страниц man;
- ...
Интерактивные (через браузер) собрания man в сети (часто свежее файловых + с лучшей системой поиска):
- http://linux.die.net/man/
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
2. Справочная система info
Иерархическая древовидная (менюшная в текстовом режиме) система справки.
Это система не дублирует man, в ней есть вещи, отсутствующие в man.
Кроме того, эта система иерархичная, древовидная, "менюшная", с последовательным уточнением (что иногда хорошо, а иногда и плохо ) - позволяющая дойти до тонких деталей.
Иерархическая древовидная (менюшная в текстовом режиме) система справки.
Код: Выделить всё
$ info info
-----Info: (*manpages*)ifconfig, строк: 169
--Top-------------------------------------------
Добро пожаловать в Info версии 4.8. ? -- справка, m выбирает пункт меню.
File: info.info, Node: Top, Next: Getting Started, Up: (dir)
Info: An Introduction
*********************
The GNU Project distributes most of its on-line manuals in the "Info
format", which you read using an "Info reader". You are probably using
an Info reader to read this now.
...
Кроме того, эта система иерархичная, древовидная, "менюшная", с последовательным уточнением (что иногда хорошо, а иногда и плохо ) - позволяющая дойти до тонких деталей.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
3. Подсказки apropos ("кстати")
Ищет все упоминания любого заказанного вами термина, где он упоминается во всей иерархии man:
В скобках, как обычно, указывается секция man, где встречен ваш термин.
После этого просто набираете: man ...
Ищет все упоминания любого заказанного вами термина, где он упоминается во всей иерархии man:
Код: Выделить всё
bash-4.2$ apropos /proc
slabinfo (5) - сводная таблица использования блоков кэша (slab) ядра
nfsiostat (8) - Emulate iostat for NFS mount points using /proc/self/mountstats
proc_flush_task (9) - Remove dcache entries for task from the /proc dcache.
proc_scsi_read (9) - handle read from /proc by calling host's proc_info command
proc_scsi_write (9) - handle writes to /proc/scsi/scsi
proc_scsi_write_proc (9) - Handle write to /proc by calling host's proc_info
scsi_exit_devinfo (9) - remove /proc/scsi/device_info & the scsi_dev_info_list
scsi_proc_host_add (9) - Add entry for this host to appropriate /proc dir
scsi_proc_host_rm (9) - remove this host's entry from /proc
scsi_proc_hostdir_add (9) - Create directory in /proc for a scsi host
scsi_proc_hostdir_rm (9) - remove directory in /proc for a scsi host
После этого просто набираете: man ...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
4. База данных терминов whatis
Достаточно похожая на apropos (но результаты разные) система поиска терминов.
Вот вам секция, а дальше - man ...
Базу данных поиска нужно предварительно сформировать!
Это действие :
- делается с правами root;
- потребует заметно продолжительного времени (несколько минут, или десятков даже ... не думайте, что ваша программа зависла );
- делается всего один раз ... или освежается - когда у вас на диске накопится изрядное количество новых иерархий файлов man.
Достаточно похожая на apropos (но результаты разные) система поиска терминов.
Код: Выделить всё
$ whatis ifconfig
ifconfig (8) - configure a network interface
Базу данных поиска нужно предварительно сформировать!
Код: Выделить всё
# makewhatis
...
- делается с правами root;
- потребует заметно продолжительного времени (несколько минут, или десятков даже ... не думайте, что ваша программа зависла );
- делается всего один раз ... или освежается - когда у вас на диске накопится изрядное количество новых иерархий файлов man.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
5. Встроенная справка программ.
Хорошим стилем у программистов UNIX считается включение краткой (а иногда и не очень) в исполнимый код программ. Этой же практики придерживаются и разработчики используемых в Linux GNU утилит, и других программ...
Обычно это опции (ключи) --help, --version:
Хорошим стилем у программистов UNIX считается включение краткой (а иногда и не очень) в исполнимый код программ. Этой же практики придерживаются и разработчики используемых в Linux GNU утилит, и других программ...
Обычно это опции (ключи) --help, --version:
Код: Выделить всё
$ rlogin --help
usage: rlogin host [-option] [-option...] [-k realm ] [-t ttytype] [-l username]
where option is e, 7, 8, noflow, n, a, x, f, F, c, 4, PO, or PN
Код: Выделить всё
$ gcc --version
gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Copyright (C) 2006 Free Software Foundation, Inc.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
6. Поиск исполнимых программ и связанных с ними файлов.
Иногда нужно быстро восстановить месонахождение (путь) исполнимой программы, или таким образом определить установлена ли такая программа.
Для этого есть команда which:
Команда ищет файл программы на путях, перечисленных в переменной $PATH.
Другая команда, whereis, пытается найти в файловой системе все исходные, бинарные файлы и man-секции, относящиеся к указанной программе; whereis не пользуется $PATH, она ищет файлы по своим критериям (имеет много модифицирующих опций). Сравните:
После такого поиска можно начинать пользоваться man.
Иногда нужно быстро восстановить месонахождение (путь) исполнимой программы, или таким образом определить установлена ли такая программа.
Для этого есть команда which:
Код: Выделить всё
bash-4.2$ which java
/opt/oracle/jdk1.7.0_05/bin/java
Другая команда, whereis, пытается найти в файловой системе все исходные, бинарные файлы и man-секции, относящиеся к указанной программе; whereis не пользуется $PATH, она ищет файлы по своим критериям (имеет много модифицирующих опций). Сравните:
Код: Выделить всё
bash-4.2$ whereis java
java: /bin/java /usr/bin/java /etc/java /lib/java /usr/lib/java /usr/share/java /opt/oracle/jdk1.7.0_05/bin/java /opt/oracle/jdk1.7.0_05/jre/bin/java /usr/share/man/man1/java.1.gz
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: справочные системы Linux
7. Справочник по коду ядра Linux.
Очень часто бывает нужен, иногда совсем коротко, для уточнения констант, вызовов API...
Можно, конечно (как иногда советуют):
- download с kernel.org архив исходных кодов ядра *.tar.bzi2 в /usr/src ...
- разархивировать там...
И при случае искать там поиском...
... до тех пор, пока не появится новая версия ядра, и начинаем делать всё по-новой...
Но умные люди создали интернет-справочники по коду ядра:
1. http://lxr.free-electrons.com/source/
2. http://lxr.linux.no/
3. http://www.mjmwired.net/kernel/Documentation - документация по ядру
Позволяют:
- искать нужные файлы, имена, термины...
- быстро переходить от версии к версии ядра...
- производя сравнения реализаций в разных версиях.
Очень часто бывает нужен, иногда совсем коротко, для уточнения констант, вызовов API...
Можно, конечно (как иногда советуют):
- download с kernel.org архив исходных кодов ядра *.tar.bzi2 в /usr/src ...
- разархивировать там...
И при случае искать там поиском...
... до тех пор, пока не появится новая версия ядра, и начинаем делать всё по-новой...
Но умные люди создали интернет-справочники по коду ядра:
1. http://lxr.free-electrons.com/source/
2. http://lxr.linux.no/
3. http://www.mjmwired.net/kernel/Documentation - документация по ядру
Позволяют:
- искать нужные файлы, имена, термины...
- быстро переходить от версии к версии ядра...
- производя сравнения реализаций в разных версиях.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя