Информационные технологииStfw.Ru 🔍

Операционные системы Unix/Linux: начало работы

В начале статьи, а также по ходу изложения практического материала в ней, мы попытались затронуть немного теории в довольно упрощенном виде. Мы считаем это необходимым, чтобы дать представление о философии Unix, значительно отличающейся от привычных ОС lynx
🕛 15.11.2004, 22:02
В предыдущей статье мы рассмотрели наиболее распространенные дистрибутивы Linux. Теперь поговорим об основных особенностях операционных систем семейства Unix/Linux и познакомимся с азами работы в них.
В начале статьи, а также по ходу изложения практического материала в ней, мы попытались затронуть немного теории в довольно упрощенном виде. Мы считаем это необходимым, чтобы дать представление о философии Unix, значительно отличающейся от привычных ОС семейства Windows.



Введение
Процессы
Сигналы
Виртуальная память
Межзадачное взаимодействие
Файловая система Unix/Linux
Типы файлов в Unix/Linux
Ссылки на файлы
Команды в Unix/Linux. Удаление файлов. Псевдонимы команд
Монтирование и демонтирование сторонних файловых систем
Файлы в Unix/Linux
Заключение
Ссылки по теме


Введение
Операционные системы Unix/Linux принципиально отличаются от семейства Windows. Отличия касаются не столько интерфейса, сколько внутренней организации работы ОС.


Любую Unix/Linux систему можно условно разделить на три основных уровня:
Аппаратные средства - самый низкий уровень.
Ядро - программа, с включенными в нее драйверами устройств, обеспечивающая доступ к аппаратным средствам системы для других программ.
Пользовательские программы.

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

Взаимодействуя с аппаратными возможностями низкого уровня, ядро реализует следующие элементы операционной системы:
Процессы
Сигналы
Виртуальную память
Межзадачное взаимодействие
Файловую систему

Рассмотрим кратко каждый элемент.


Процессы
Процесс - это абстракция, применяемая в Unix для описания выполняющиейся программы.
Полностью отождествлять понятия «процесс» и «программа» нельзя. Одна программа может выполняться в разных процессах.
Процесс - это системный объект, посредством которого можно контролировать обращения программы к памяти, процессору и ресурсам ввода-вывода.
В отличие от Windows в системах Unix/Linux как можно большее число работы отдается не ядру, а процессам.
Просмотреть список текущих процессов системы можно с помощью команды ps.


Сигналы
Сигналы - это средство связи между процессами, с их помощью одна программа посылает сообщения другой.

Сигналы могут посылаться от одного процесса другому как средство межзадачного взаимодействия.
Сигналы могут посылаться драйвером терминала (консоли), например, для уничтожения процесса по нажатию клавиш Control+C.


Консоль - это интерфейс между пользователем и системой, позволяющий вводить команды с клавиатуры и получать в текстовом виде информацию о их выполнении на экран. Аналогом консоли в Unix является режим командной строки в Windows («сеанс MS-DOS»).
Консоль можно также назвать локальным терминалом.
Терминал - это интерфейс, состоящий из экрана и клавиатуры, которые совместно используются для управления компьютером. Посредством терминала можно вводить команды, которые будут выполняться на удаленной машине, а результаты их работы выводиться на терминал.



Ядро может посылать сигналы, если процесс выполняет недопустимую инструкцию, например, деление на ноль.
Сигналы может посылать пользователь с помощью команды kill.


Виртуальная память Unix/Linux
Unix/Linix поддерживает концепцию виртуальной памяти.

Память в Unix/Linux организована в виде модулей, которые называются «страницы».
Операционная система старается управлять памятью так, чтобы страницы, к которым недавно обращались, хранились в памяти, а менее активные выгружались на диск. При этом страницы памяти могут принадлежать разным процессам, и на диск могут выгружаться не все страницы одного процесса, а только часть. Эта стратегия называется «выгрузка по обращению» - demand paging. Выгрузка по обращению - чрезвычайно эффективный механизм, особенно при больших размерах процессов. Она позволяет гибко оперировать отдельными страницами памяти процесса и делает возможным превышение размером процесса объема доступной физической памяти. Одновременно в основной памяти может размещаться большее число процессов.

Помимо стратегии выгрузки по обращению (demand paging) существует еще стратегия перекачки (подкачки) страниц, называемая свопингом (swapping). При свопинге происходит полная выгрузка на диск всех страниц памяти процесса. Свопинг осуществляется на основе точных записей о каждом процессе, а не на основе анализа статистики использования страниц. Например, если по каким-то причинам наблюдается простаивание отдельного процесса, то по механизму свопинга на диск перекачиваются все страницы памяти данного процесса, независимо от давности обращения к ним. Стратегия свопинга исторически более древняя. Она достаточно эффективна, когда системе существенно не хватает памяти.



Межзадачное взаимодействие
Межзадачное взаимодействие фактически является взаимодействием между процессами системы (поскольку задача в Unix - это сочетание процесса и данных).

ОС Unix/Linux - многозадачные операционные системы. Это означает, что система может выполнять несколько задач одновременно. На самом деле в Unix в каждый момент времени ресурсы центрального процессора выделяются только одной задаче. Но ни одна из задач не может «захватить» время центрального процессора более, чем ей позволено. Время центрального процессора динамически передается следующему и следующему процессу, обеспечивая одновременную работу большого их числа.
Многозадачность, при которой процесс не может захватить ресурсы центрального процессора по собственному усмотрению, и при которой система сама определяет, сколько времени выделить тому или иному процессу, называется вытесняющей.

В системах Unix/Linux существующие процессы не являются равноправными. То есть время центрального процессора распределяется не одинаково, а в зависимости от приоритета процесса. Наиболее высокий приоритет имеет процесс init, являющийся родительским для всех остальных процессов, кроме тех, которые создаются самим ядром.

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


Файловая система Unix/Linux

Файловой системой называют определённый способ организации ресурсов операционной системы (файлов, каталогов, устройств и прочего) и алгоритм управления ими.
Понятием «файловая система» в Unix/Linux также обозначают конкретное множество файлов и каталогов, организованных определенным способом.

Применительно к системам Unix/Linux файловую систему можно представить состоящей из следующих компонентов:
Пространство имен - способы именования объектов файловой системы и их организации в виде иерархии.
Интерфейс программирования приложений (API) - набор системных вызовов, предназначенных для перемещения между объектами файловой системы и для управления ими.
Модель безопасности - схема защиты объектов файловой системы и схема организации их совместного.
Реализация файловой системы - программный код, связывающий вышеперечисленные логические модели файловой системы с дисковой подсистемой.
Визуально структуру файловой системы Unix/Linux можно представить как дерево, вырастающее из одной точки. Этой точкой является корень файловой системы (root), обозначаемый как «/». Таким образом, полные (абсолютные) пути к файлам в ОС Unix/Linux всегда начинаются с «/»,
например,

/home/user1/test.txt

От корня файловой системы «растут» каталоги, образующие файловое дерево. По этой причине структуру файловой системы Unix/Linux называют «древовидной».

Помимо абсолютного пути к файлу, начинающегося с «/» (например /usr/bin/lynx), для обращения к файлу можно использовать относительные пути. Относительные пути отсчитываются в зависимости от того места в структуре каталогов, где в настоящий момент находится тот, кто пытается обратиться к файлу (пользователь, программа и т.д.).
При этом
./ обозначает текущее местоположение,
../ обозначает переход на один уровень вверх по дереву каталогов,
~ обозначает путевое имя начального каталога (как правило, начального каталога пользователя, под аккаунтом которого вы вошли в систему).

Например, находясь в каталоге /home/user1/, можно обратиться к файлу этого же каталога так:
./file.txt
или так:
file.txt
Первое обращение будет более корректным.

Находясь в этом же каталоге можно обратиться к файлу /home/user2/test.txt таким образом:
../user2/test.txt

Находясь в любом месте файловой системы, можно обратиться в файлу file.txt, расположенному в вашем начальном каталоге, так:
~/file.txt

Как вы заметили, имена каталогов в Unix/Linux разделяются прямым слешем - «/», в отличие от DOS и Windows, где используется обратный слеш: «\».
Пример:
C:\Program Files\Opera - это в Windows,
/usr/share/opera - это в Unix/Linux.

Файловое дерево в Unix может быть произвольного размера, то есть содержать произвольное число каталогов, каждый из которых может содержать любое число подкаталогов.
Существует только два ограничения.
Первое - имя отдельного каталога не должно превышать 255 символов.
Второе - абсолютный путь к файлу не должен превышать 1023 символа.
Впрочем, второе ограничение условно и является ограничением не самой файловой системы, а системных вызовов, которые не могут иметь длину аргумента больше 1023. Можно задать путь к файлу, превышающий 1023 символа, но, например, переход к такому файлу из корня файловой системы не удастся сделать за один прием. Необходимо будет повторить команду cd (переход по каталогам) столько раз, сколько потребуется, чтобы каждый раз ее аргумент не превышал 1023 символа.

Следует обязательно запомнить, что для Unix/Linux регистр в именах файлов (а также, как будет показано ниже, в именах команд и их ключей) имеет принципиальное значение.
Например, "president" , "PRESIDENT" и "PrEsIdEnT" - это три разных файла, в отличие от операционных систем Microsoft.

Теоретически, операционной системе Unix/Linux не принципиально, как назван тот или иной каталог. Более того, администратор может менять названия и структуру любых каталогов ОС, включая каталоги ядра и конфигурации системы, хотя этого делать не рекомендуют. Тем не менее, в целях некоторой стандартизации работы в ОС семейства Unix/Linux существуют соглашения в названиях основных каталогов системы. Этих соглашения строго не документированы, но производители операционных систем Unix/Linux стараются следовать им, чтобы облегчить работу с той или иной ОС. Следует помнить, что несмотря на наличие условных соглашений, структура каталогов в конкретной операционной системе может быть (и, скорее всего, будет) несколько не той, что вы увидите ниже.


Рис. 1. Возможный вид списка файлов и директорий в корневом каталоге Unix/Linux.

Рассмотрим структуру файловой системы Linux, определяющуюся так называемым стандартом Filesystem Hierarchy Standard (FHS).

Таблица 1. Стандартные каталоги системы Linux.

/bin содержит командные оболочки и основные утилиты
/boot ядро системы и основные загрузочные файлы
/dev псевдофайлы устройств компьютера
/etc файлы конфигурации системы
/etc/X11 файлы конфигурации графического сервера XFree
/home личные каталоги пользователей
/lib системные библиотеки
/mnt внешние файловые системы, такие как CD-ROM, floppy, разделы Windows
/opt программы сторонних разработчиков
/proc виртуальные файлы с информацией о текущем состоянии системы
/root личный каталог администратора системы
/sbin системные программы
/usr основной каталог для программ и библиотек
/usr/share/doc документация
/var рабочие файлы программ, очереди, журналы
/tmp временные файлы


Типы файлов в Unix/Linux
Все файлы в Unix/Linux имеют одинаковый формат - байтовый поток, то есть представляют собой простую последовательность байтов. По этой причине Unix/Linux может распространять файловую концепцию не только на собственно файлы, но и на все компоненты операционной системы: каталоги, устройства, драйвера, интерфейсы, сокеты, ссылки на файлы и т.д. Файловая концепция по отношению ко всем компонентам операционной системы позволяет упростить их организацию и управление. Практически любой компонент системы рассматривается Unix/Linux как файл, и ОС оперирует с ним как с файлом.
Так, каталог представляется системе файлом, содержащим информацию о каталоге.

Среди множества файлов в Unix/Linux можно выделить четыре их основных типа:
Обычные файлы - последовательность байтов (текстовые документы, исполняемые программы, библиотеки и др.).
Файлы каталогов - именованные ссылки на другие файлы.
Файлы байт-ориентированных устройств - файлы, позволяющие связанным с ними драйверам выполнять собственную буфферизацию ввода-вывода.
Файлы блок-ориентированных устройств - файлы, обрабатываемые драйверами, осуществляющими буфферизацию с помощью ядра.


Ссылки на файлы
Ещё с давних времён работа с файлами в системах Unix была организована следующим образом. Все файлы на диске нумеровались. Для этого создавалась специальная запись - узел (inode), содержащая служебную информацию о файле. Имя файла в состав этой информации не включалось, а связывалось с узлом с помощью ссылки (link). Ссылки оформлялись как пары вида «имя файла - номер узла» и хранились в каталогах. Найдя по ссылке в каталоге узел, ядро ОС проводило операции с файлом, не обращая никакого внимания на его имя, т.к. всю информацию о файле ядро извлекало из узла.

В настоящее время эта концепция сохранилась в таких объектах файловой системы, как ссылки на файлы.

Ссылка на файл - это особый файл с информацией о файле.

Существуют «жесткие» и «мягкие» ссылки на файлы (hard links и symbolic links или прямые ссылки и символические ссылки).

Жесткие ссылки указывают непосредственно на индексный дескриптор файла.

Индексный дескриптор - это особая стуктура, в которой файловая система хранит информацию о файле. Каждый индексный дескриптор содержит около сорока информационных полей, например таких как: тип файла, владелец файла, группа владельца файла, код прав доступа к файлу, размер файла, время последнего обращения к файлу, время последней модификации файла и др. Большая часть информационных полей используется только ядром ОС. Чтобы упростить понимание термина «индексный дескриптор», можно подразумевать под ним уникальный номер, которым система обозначает конкретный файл. Этим номером является индекс таблицы, в которой перечислены все файлы системы.

Мягкие (или символические) ссылки указывают на файл по имени.
Аналогом символических ссылок в Windows являются ярлыки, с тем различием, что они интерпретируются файловым менеджером Windows Explorer, а символические ссылки - непосредственно ядром ОС.

Благодаря ссылкам, физически одному и тому же файлу можно присвоить несколько имен (псевдонимов).
Это часто бывает удобно. Например, можно присвоить легконабирающееся имя файлу, имеющему длинное путевое имя или даже расположенному на другой файловой системе.

В качестве примера использования жесткой ссылки рассмотрим присвоение файлу /home/user1/2003/november/documents/main/old/linux_faq.txt имени /home/user1/linux_faq.txt:

ln /home/user1/2003/november/documents/main/old/linux_faq.txt /home/user1/linux_faq.txt

После такого присвоения к файлу можно обращаться по одному из имен, причем системе не важно, по какому именно. Более того, можно физически переместить этот файл в другое место, но он все равно останется доступен по присвоенной ему ссылке /home/user1/linux_faq.txt. Но и это еще не все. Можно удалить файл, обращаясь к нему по первоначальному имени, но при этом удалится только само первоначальное имя файла, а файл будет доступен системе по второму имени.
Это происходит потому, что каждое имя файла, созданное жесткой ссылкой, указывает на один и тот же индексный дескриптор файла, с которым собственно и «общается» операционная система.
Чтобы действительно сделать файл недоступным системе (удаленным), необходимо удалить все жесткие ссылки на него, которых может быть произвольное количество. В этом смысле жесткие ссылки можно использовать для защиты от случайного удаления важных файлов.

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

Мягкие (символические) ссылки удобны для указаний на устройства (принтер, дисковод).
Например, вместо обращения /mnt/cd_rom/ можно использовать созданную ссылку cd_rom. Для обращения к объекту файловой системы Windows, подключенной к Linux, вместо /mnt/windows/Documents and Settings/user/Мои документы/file.txt можно создать ссылку win_file.txt. После физического удаления файла символические ссылки, в отличие от прямых, работать не будут, т.к. они не связаны с его индексным дескриптором, который становится недоступным при удалении первоначального имени файла.

Для операций над ссылками существует команда ln (и ее аргументы) - сокращение от слова «link» (англ.) - ссылка. С ее помощью можно создать жесткую или символическую ссылку на файл.
Пример:

ln /home/user1/impotant_doc.txt /home/user1/impotant_doc_bak.txt
создаем жесткую ссылку на файл /home/user1/impotant_doc.txt, присваивая ему второе имя /home/user1/impotant_doc_bak.txt.

ln -s /mnt/windows/Documents and Settings/user/Мои документы/file.txt /home/user1/windows_file.txt
создаем символическую ссылку на файл, физически расположенный на другой файловой системе, таким образом, делая его доступным из домашнего каталога пользователя user1.

В некоторых системах аналогом команды ln -s для создания символической ссылки существует отдельная команда symlink.


Команды в Unix/Linux. Удаление файлов. Псевдонимы команд
Как вы обратили внимание, аргументы команд в Unix/Linux отделяются от имени команды знаком «-», в отличие от Windows, где для этой цели используется прямой слеш «/».

Пример:

ls -a
Unix-команда ls (сокращение от слова list (англ.) - список) - просмотр списка файлов в каталоге - с аргументом -a, обеспечивающим вывод также и скрытых файлов.

DIR /ah
Windows/DOS команда DIR - просмотр списка файлов в каталоге - с аргументом /a и его атрибутом h, которые позволяют просмотреть также и скрытые файлы.

Большинство названий Unix/Linux команд происходят от сокращения того или иного английского слова,
например:

ls - от слова list (список) - показать список файлов в каталоге,
ln - от слова link (ссылка) - создание ссылки на файл,
cp - от слова copy (копировать) - копирование файла,
mv - от слова move (перемещать) - перемещение/переименование файла,
rm - от слова remove (удаление) - удаление файла.

Дадим еще несколько пояснений по поводу удаления файлов в Unix/Linux.

В Unix-системах нет операции удаления файла в том смысле, какой существует в Windows. Есть только удаление ссылки на узел - unlink - и ссылки на пустой каталог - rmdir. Сам же файл автоматически удаляется тогда, когда делается недоступным для системы. Это означает, что не должно остаться, во-первых, ни одной ссылки на него, а во-вторых, ни одной работающей с ним активной программы.

К слову, именно поэтому в Unix/Linux можно обойтись без перезагрузки практически при любом изменении системы (за исключением замены ядра ОС). Чтобы обновить системную библиотеку, вы стираете её прежнюю версию (т.е. освобождаете соответствующую ссылку) и записываете под тем же именем новую. Ядро откладывает момент удаления библиотеки до тех пор, пока не закончит работу последняя из программ, её использующая (что может произойти спустя долгое время).

Следует хорошо запомнить, что удаленный файл в Unix/Linux практически невозможно восстановить. Также в Unix/Linux не существует чего-либо похожего на «Корзину» Windows.
Более того, по умолчанию команда rm, осуществляющая удаление файлов, не запрашивает подтверждение на удаление (чтобы система запрашивала подтверждение, необходимо вводить команду rm с опцией -i, то есть rm -i). Таким же образом ведет себя команда unlink, точным аналогом которой является команда rm.

Поэтому будьте крайне внимательны, используя команду rm, особенно, если вы находитесь в системе под аккаунтом администратора (root). Система не спросит у вас подтверждения даже, если вы укажете ей удалить файл, отсутствие которого сделает ОС неработоспособной. И даже больше, Unix/Linux позволит удалить всю файловую систему и не спросит, действительно ли вы хотите это сделать.

Возьмите себе за правило делать резервные копии любого файла, который вы ходите редактировать. Некоторые текстовые редакторы, к примеру, gedit, умеют делать это автоматически.

Пользователям, привыкшим к Windows, может показаться слишком недоброжелательным такое поведение ОС Unix/Linux. Однако, это не совсем так. Правильнее сказать, что Unix/Linux недоброжелательны к тем, кто не думает и не старается познакомиться с ОС прежде, чем начать работу в ней. Остальным же пользователям система предоставляет огромные и чрезвычайно гибкие возможности.

Например, если вы привыкли к командам DOS, можно «научить» Unix/Linux «переводить» их в Unix-команды без вашего участия. Это обеспечивается назначением командам псевдонимов - алиасов. Псевдонимы назначаются с помощью команды alias и удаляются с помощью команды unalias.

Выглядит это так:
alias DIR='ls -la'
Мы присвоили команде ls с аргументами -al псевдоним DIR и теперь при вводе DIR будет отображаться список всех файлов в каталоге и их атрибутов, как если бы мы набрали ls -la.
Команда
alias
без аргументов покажет текущие назначенные псевдонимы, а команда:
unalias DIR
удалит псевдоним DIR.

В качестве псевдонима можно назначить имя существующей в системе команды, например:

alias rm='rm -i'

Теперь при вводе rm будет запрашиваться подтверждение на удаление файлов, так как система сначала смотрит, не назначен ли вводимому имени команды псевдоним. То есть в данном случае ввод rm для системы интерпретируется как rm -i.

Псевдонимы будут «жить» в течение одного сеанса работы с системой. Чтобы система помнила псевдонимы в последующих сеансах, их надо вносить в скрипты стартовых сценариев. Подробнее на этом в данной статье мы останавливаться не будем.

Вернемся к команде rm - удаление файла - и приведем несколько примеров:

rm file.txt - удалить файл file.txt.
rm -i file.txt - удалить файл file.txt, предварительно запросив подтверждение на его удаление.
rm -d catalog - удалить пустой каталог catalog (аналогично команде rmdir).
rm -r catalog - удалить каталог catalog и все файлы и подкаталоги в нем.
rm -r / - удалить корневую файловую систему (никогда не делайте).

Как уже упоминалось, в Unix/Linux регистр при вводе имени команды имеет принципиальное значение.

Если в OC Windows команду DEL можно набрать в произвольном регистре или даже сочетая верхний и нижний регистр одновременно: DEL, DeL, dEl и т.д., то в Unix/Linux так сделать не получится. Если команда rm существует, то команды RM в Unix нет.
Это же правило - принципиальное значение регистра - распространяется и на аргументы команд. Один и тот же символ будет являться разным аргументом в зависимости от того, в каком регистре он набран.

Пример:
ls -r - отобразить список файлов, отсортировав их в обратном порядке,
ls -R - отобразить список файлов в каталоге, включая файлы, расположенные в подкаталогах.


Монтирование и демонтирование сторонних файловых систем
Как видно из таблицы 1, к файловой системе Unix/Linux могут быть подключены сторонние файловые системы, например, файловые системы других ОС или файловые системы, расположенные на внешних носителях - флоппи-дисках, CD-ROM и др. Чтобы сторонняя файловая система была доступна ОС Unix/Linux, необходимо осуществить операцию ее монтирования. Фактически, монтирование - это указание того, куда системе следует адресовываться при обращении к объектам сторонней файловой системы. Для системы это указание называется точкой монтирования.

Теоретически можно указать системе произвольное место точки монтирования, но на практике для монтирования сторонних файловых систем существует каталог /mnt. В нем необходимо создать подкаталог, который будет служить точкой монтирования.
Например, файловую систему Windows, физически расположенную на первом логическом разделе того же винчестера (на диске C) можно сделать доступной для Unix/Linux, примонтировав ее с помощью команды mount (предварительно нужно создать каталог /mnt/windows):

mount -t vfat /dev/hda1 /mnt/windows (пример для Linux), mount -t msdos /dev/hda1 /mnt/windows (пример для Unix FreeBSD),

где,
ключ -t и аргумент vfat (msdos) означают тип монтируемой сторонней файловой системы (в данном случае - FAT),
/dev/hda1 - первый раздел первого жесткого диска, к которому система обращается с помощью файла устройства,
/mnt/windows - файл, представляющий собой точку монтирования.

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

Монтирование флоппи-диска (flopp)
Монтирование FAT в Linux Red Hut 7.3
Никак не монтируется третий винт под Linux'om
NTFS под linux: как сделать читаемой Win-патришен
Конфигурация /etc/fstab при монтировании FAT32 раздела

www.mgul.ac.ru/~t-alex/Linux/Automount-Howto/t1.html
linuxland.itam.nsc.ru/misc/mount/mount02.htm
linuxman.h1.ru/linart/mount.html
citforum.ru/operating_systems/linux/HOWTO/mini/Automount/
tldp.org/HOWTO/Filesystems-HOWTO.html (англ.)
linux-ntfs.sourceforge.net/info/ntfs.html (англ.)


Файлы в Unix/Linux
Имя файла в Unix/Linux может содержать любые буквы, цифры, знаки подчеркивания, точки и запятые.
Длина имени файла не должна превышать 255 символов.
Если в начале имени файла поставить точку, то он будет восприниматься системой как скрытый, и по умолчанию его видно не будет.

Мы уже сталкивались в данной статье с командой ls - просмотр списка файлов в каталоге. Давайте вернемся к ней еще раз и посмотрим, какую информацию о файлах можно увидеть с ее помощью. Чтобы получить подробную информацию о файлах (файле), необходимо ввести команду ls с ключом l (рис. 2).


Рис. 2. Просмотр атрибутов файлов с помощью команды ls в Unix/Linux.

Команда показала нам, что в каталоге расположено три доступных для просмотра файла. Первая строка - «total 4» - указывает общее число 512-байтовых блоков, используемых файлами в каталоге.
Далее идут три строки с информацией о файлах. Рассмотрим посимвольно каждую строчку.

Первый символ указывает на тип файла.
В первой строке символ d означает, что файл является каталогом (директорией, directory).
Во второй строке символ «-» означает, что перед нами обычный файл.
В третьей строке символ l говорит о том, что данный файл является символической ссылкой (link) на другой файл.
Рассмотренные нами типы файлов также обозначаются следующими символами:
b - файл блок-ориентированного устройства,
c - файл байт-ориентированного устройства.

Следующие девять символов - это маска доступа к файлу для его владельца, членов группы владельца и остальных пользователей. Каждый файл в Unix/Linux может быть доступен (недоступен) для чтения (r - read), записи (w - write) и выполнения (x - execution). Несколько более подробно об этом можно почитать в теме «Что такое chmod (права, пермишены) и какие chmod ставить на файлы и директории». Также рекомендуем почитать статью Администрирование пользователей в системах Unix.
В нашем примере файл каталога catalog доступен для чтения, записи и выполнения владельцу, а также для чтения и выполнения членам группы владельца и остальным пользователям (чтобы войти в каталог в Unix/Linux, необходимо иметь разрешение на исполнение его файла).
Файл test.txt доступен для чтения и записи владельцу, а также для чтения членам группы владельца и остальным пользователям.

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

Следующее поле указывает имя владельца файла (в нашем примере это пользователь root), а затем - имя группы, к которой принадлежит владелец файла (в нашем примере это группа wheel).

Далее идет поле, указывающее размер файла в байтах (в нашем примере 512, 852 и 8 байт соответственно).
Затем - поле с аббревиатурой месяца последнего изменения файла (в нашем примере - Nov - ноябрь), потом - числа месяца последнего изменения файла (а нашем примере - 23), и далее - часов и минут последнего изменения файла ( в нашем примере - 03:52, 04:02 и 04:04 соответственно).
Под датой последнего изменения файла система понимает не только дату последнего изменение его содержимого, но и дату изменение любого из атрибутов файла, например, смены прав доступа.

В последнем поле приведено имя файла. Для файла, являющегося символической ссылкой, система также показала, на какой именно файл он ссылается.

Если в Windows тип файла определяется исключительно его расширением, то в Unix/Linux само по себе расширение не имеет никакого значения. Файл может иметь расширение, не иметь расширения, иметь два, три и более расширений (иметь в имени две, три и более точки), для системы это только имя файла, не более того. Стандартных расширений принято придерживаться для удобства работы. Но вы легко можете создать простой текстовый файл и присвоить ему расширение gif или tar. При этом система не будет пытаться оперировать с таким файлом как с картинкой или архивом, т.к. ОС «общается» не с именем файла, а с его индексным дескриптором, о чем мы говорили выше.

Для удобства пользователей приняты некоторые соглашения в названиях файлов. Так, файлы, содержащие исходный код на языке С принято называть с расширением .c. Еще раз повторяем, что этих соглашений можно не придерживаться, на работе системы это не отразится.

Приведём небольшой список часто используемых и встречающихся в Linux файлов.

Таблица 2. Часто встречаемые файлы в Linux.
Сжатые и упакованные файлы
.bz2 файл, сжатый при помощи bzip2
.gz файл, сжатый при помощи gzip
.tar файл, сжатый при помощи tar (сокращение для tape archive), известный также как tar file
.tbz файл, сжатый при помощи tar и bzip2
.tgz файл, сжатый при помощи tar и gzip
.zip файл, сжатый при помощи компрессии ZIP, часто используемой в приложениях MS-DOS. Большинство сжатых файлов в Linux используют компрессиию gzip, поэтому .zip архивы встречаются редко
Форматы файлов
.au аудио-файл
.gif изображение в формате GIF
.html/.htm документ HTML
.jpg изображение в формате JPEG
.pdf электронный образ документа; PDF обозначает Portable Document Format
.png изображение в формате PNG (сокращение для Portable Network Graphic)
.ps файл PostScript; отформатированный для печати
.txt текстовый файл, plain-text
.wav звуковой файл
.xpm изображение в формате XPM
Системные файлы
.conf конфигурационный файл. Конфигурационные файлы иногда используют также расширение .cfg.
.lock файл lock; определяет, какая программа или устройство находится в использовании
.rpm файл формата Red Hat Package Manager, используемый для установки программ
Файлы программирования и скрипты
.c файл содержащий исходный текст на языке C
.cpp файл содержащий исходный текст на языке C++
.h «заголовочный» файл на языке C или C++
.- объектный файл программы
.pl скрипт на языке Perl
.s- библиотека
.sh скрипт программной оболочки SHELL, например Bash
.tcl скрипт на языке TCL


Заключение
Итак, в данной статье мы познакомились с некоторыми особенностями операционных систем Unix/Linux и получили самые начальные сведения для работы в них.

В заключение приведем список тех команд, которые мы упомянули в нашей статье, и добавим к ним еще несколько, являющихся наиболее распространенными при работе в ОС Unix/Linux.

Следует также отметить, что в Unix/Linux очень хорошо организована справочная документация. Она называется «страницы справочного руководства» и вызывается командой man, принимающей в качестве аргумента имя команды (функции, устройства, системного вызова и др.), по которой вы хотите получить справку.
Например:
man ls
выдаст справку по команде ls.

В сети можно найти переведенные на русский язык страницы справочного руководства, например:

http://ln.com.ua/~openxs/projects/man/solaris8/index.html
http://ln.com.ua/~openxs/projects/man/uw2/index.html
http://www.opennet.ru/man.shtml
http://www.opennet.ru/man_1.shtml
http://www.citforum.ru/operating_systems/manpages/index.shtml
http://www.citforum.ru/operating_systems/unixuser/pril.shtml#2


Таблица 3. Некоторые наиболее распространенные команды Unix/Linux.

pwd вывод полного имени текущей рабочей директории
ls вывод списка файлов в каталоге
ls -l вывод списка файлов в каталоге и их атрибутов
ls -a вывод списка файлов в каталоге, включая скрытые
ls -lat вывод списка файлов с их атрибутами, отсортированного по времени последнего изменения
cd переход по дереву каталогов
du отображение статистики использования диска (покажет список всех каталогов и их размер)
cp копирование файла
mv переименование/перемещение файла
mkdir создание каталога
rm удаление файла
unlink удаление файла (воспринимает те же аргументы, что и команда rm)
rm -d удаление пустого каталога
rmdir удаление пустого каталога
rm -r удаление каталога, всех файлов и подкаталогов в нем
ln создание жесткой ссылки на файл
ln -s создание символической ссылки на файл
mount монтирование файловой системы
umount демонтирование файловой системы
locate быстрый поиск файла по имени; поиск осуществляется в базе предварительно проиндексированных системой файлов
find поиск файла
uname вывод информации об операционной системе (прежде всего - ее имя)
alias назначение командам псевдонимов
ps просмотр списка текущих процессов системы
man обращение к страницам справочного руководства


Ссылки по теме «Начало работы с операционной системой Linux»
Большая коллекция ссылок по Linux на Ru.Board

Администрирование системы Linux
FAQ по Linux для "чайников"
Из DOS/Windows в Linux HOWTO
Linux: от включения питания до приглашения Bash
Использование RPM
Установка программы из исходных файлов или что мне делать с этим file.tar.gz?
Руководство по файловым системам ReiserFS,tmpfs, devfs, ext3 и XFS
Стандарт на структуру каталогов файловой системы
Линмодем HOWTO (winmodem под Linux)
Основы работы в текстовом режиме
Cyrillic-HOWTO (настройка кириллицы в Линукс)
Font HOWTO
Шрифты в дистрибутивах ALT Linux


Авторы статьи: lynx, Demetrio
Рецензенты: Zmey, greys
Литературный редактор: dg

Разное в ИТ   Теги: Linux, Unix, Ос

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉