Некоторые сервисы запускаются через «супердемон»
inetd
или более новую его реализацию –
xinetd
. В этом случае в конфигурационном файле
inetd/xinetd
описываются необходимые сервисы: команда запуска, на каком порту слушать, от имени какого пользователя запускать и т. п. После запуска
inetd/xinetd
начинает слушать на указанных портах и при получении запроса запускает соответствующую команду, которой на стандартный поток ввода направляется установленное сетевое соединение. Такой принцип облегчает написание сервиса, а также позволяет более гибко настраивать политику доступа к нему. Например,
xinetd
позволяет задать диапазон адресов, с которых разрешён доступ, максимальное число одновременных запросов к сервису и т. п.
Чтобы узнать, работает ли конкретный сервис, можно проверить, запущен ли соответствующий процесс (за исключением сервисов, запускаемых через
inetd/xinetd
), слушает ли какой-либо процесс нужный порт (если сервис привязан к порту) командой
netstat -lpn
.
Основные (но не все) сервисы для кластера:
Таблица 5: некоторые стандартные сервисы и их порты
Более полный список можно найти в файле
/etc/services
– он содержит соответствие номера порта традиционно используемому сервису. Некоторые сервисы в нём не представлены ввиду не очень широкого распространения, и, конечно, ничто не мешает запустить какой-либо сервис на нестандартном порту, не забывайте об этом. Через супердемон
inetd/xinetd
часто запускаются такие сервисы, как
tftp, echo, ftp
.
Справка
В системе UNIX несколько тысяч команд, однако в обычной работе пользователю достаточно хорошо знать несколько десятков команд. В этом пособии мы кратко рассмотрим небольшой набор наиболее употребительных команд. В первую очередь потребуются команды для работы с каталогами и файлами. Как и ранее, в квадратных скобках будем указывать необязательные параметры.
Самая главная команда, которая вам потребуется, –
man
. Её имя происходит совсем не от английского «человек» (man), а от «руководство, учебник» (manual). Это – основной источник справочной информации по командам, пакетам и многому другому в UNIX и Linux. Вся информация в
man
разделена по разделам, исторически им присвоены номера. Как правило, для получения справки по какой-то команде достаточно набрать
man имя_команды
. Man найдёт первую страницу с заданным именем и отобразит её.
Таблица 6: разделы справки man
Так как в разных разделах могут быть страницы с одинаковыми именами, то иногда надо явно указать номер раздела. Например, по команде
man crontab
отобразится информация по команде
crontab
из раздела 1. Чтобы показать справку по формату файла
crontab
, надо набрать
man 5 crontab
, отобразить список файлов, в которых упомянуто нужное слово –
man -k слово
. И конечно, не забудьте выполнить
man man
.
Кроме
man,
есть ещё команда
info
, которая была призвана заменить
man
, но, несмотря на массу новых возможностей, так и не стала популярной. Но многие аспекты стандартных программ и сервисов описаны в
info
намного подробнее, чем в
man
.
Соглашения об именах файлов
В именах файлов и каталогов можно использовать любые символы, кроме '/' и '
\0
'. Одним из самых распространённых средств работы для UNIX является оболочка – shell. В shell некоторые символы имеют специальное значение (которое можно отменить) – это облегчает работу с файлами. Ниже приведён список спецсимволов shell:
Таблица 7: спецсимволы shell
UNIX не запрещает использовать эти символы в именах файлов, но необходимо экранировать их специальное назначение символом '\' или заключать их в одинарные кавычки
'…'
.
Соглашения о расширениях
Расширение файла – часть имени после последней точки; например, файл '
text.cc
' имеет расширение '
.cc
'. Для большинства программ расширение не имеет принципиального значения, но его наличие облегчает понимание назначения файла. Ниже – наиболее часто встречающиеся расширения:
Таблица 8: распространённые расширения файлов
Важно понимать, что расширение файла не имеет принципиального значения для ОС и большинства программ. Поменяв расширение файла на '
.exe
' или '
.sh
', вы не сделаете его исполняемым. А вот скрипт с именем '
do_it_now
' можно сделать исполняемым, выполнив '
chmod a+x do_it_now
'. Расширения всего лишь упрощают восприятие файлов, давая понять, что это.
Имена, начинающиеся с точки (.), часто присваиваются служебным файлам и каталогам. Эти файлы и каталоги обычно игнорируются программами и файловыми менеджерами по умолчанию. Например, команда
ls
не показывает их, если не указать ключ
'-a'
.
Многие команды допускают в качестве аргумента использование списков имён файлов. Эти списки удобно формировать с помощью шаблонов shell. Рассмотрим их ниже.
Шаблоны
Стандартная оболочка (shell) в UNIX – очень мощный инструмент и кроме запуска команд имеет массу возможностей, упрощающих работу в консоли. Самое простое средство – шаблоны имён файлов. Например, написав команду '
ls *.c
', мы получим список всех файлов с расширением '.c' в текущем каталоге.
Важно понимать, что '
*.c
' – не один аргумент, вместо него сам shell подставит нужный список. Если в каталоге только два файла –
1.c
и
2.с
, то будет выполнена команда '
ls 1.c 2.c
'. Если ни одного файла с подходящим под шаблон именем нет, то будет подставлен сам шаблон (т. е. будет выполнена команда '
ls *.c
').
Таблица 9: шаблоны в shell
Все шаблоны, кроме '
{}
', применяются к реальному списку файлов и выбирают из него только те, которые попадают под шаблон. С помощью скобок '
{}
' можно конструировать более сложные шаблоны.