Для чего нужны глобальные файлы
Перейти к содержимому

Для чего нужны глобальные файлы

  • автор:

Глобальная файловая система — Global file system

В информатика, глобальная файловая система исторически относилась к распределенному виртуальному пространству имен, построенному на наборе локальных файловых систем для обеспечения прозрачного доступа к множеству потенциально распределенных систем. Эти глобальные файловые системы имели одинаковые свойства, такие как интерфейс блокировки, отсутствие буферизации и т. Д., Но гарантировали, что одно и то же имя пути соответствует одному и тому же объекту на всех компьютерах, развертывающих файловую систему. Также называемые распределенными файловыми системами, эти файловые системы полагаются на перенаправление в распределенные системы, поэтому задержка и масштабируемость могут влиять на доступ к файлам в зависимости от того, где находятся целевые системы.

История

Файловая система Andrew попыталась решить эту проблему для университетской среды, используя кэширование и модель слабой согласованности для достижения локального доступа к удаленным файлам.

Совсем недавно появились глобальные файловые системы, которые объединяют облако или любое хранилище объектов, управление версиями и локальное кэширование для создания единой унифицированной, глобально доступной файловой системы, которая не полагается на перенаправление на устройство хранения, но обслуживает файлы из локального кеша, сохраняя единую файловую систему и все метаданные в хранилище объектов. Как описано в патентах Google, преимущества этих глобальных файловых систем включают возможность масштабирования с хранилищем объектов, использование моментальных снимков, хранящихся в хранилище объектов, для управления версиями вместо резервного копирования и создание централизованно управляемого консолидированного хранилища. репозиторий в хранилище объектов.

Конфигурационные файлы в Linux

Конфигурационные файлы в Linux

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

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

2. Глобальные конфигурационные файлы

Глобальные конфигурационные файлы определяют поведение всей системы.

Эти файлы обычно находятся в корневом разделе (/) и требуют доступа суперпользователя.

2.1. Каталог/etc/

Большинство глобальных конфигурационных файлов находятся в каталоге /etc.

Каталог /etc/ больше похож на файловую систему и имеет множество подкаталогов, каждый из которых содержит связанные с ним файлы конфигурации.

Ниже приведен список наиболее полезных из этих подкаталогов:

  • /etc/X11/ — специфические файлы конфигурации xorg
  • /etc/cups/ — подкаталог, содержащий конфигурацию для общей системы печати UNIX
  • /etc/xdg/ — глобальные конфигурации для приложений, следующих спецификации freedesktop.org
  • /etc/ssh/ — используется для настройки поведения сервера OpenSSH для всей системы
  • /etc/apparmor.d/ — содержит файлы конфигурации для системы AppArmor
  • /etc/udev/ — конфигурация, связанная с udev

2.2. Каталог /etc/opt/

Каталог /etc/opt/ должен содержать глобальную конфигурацию для приложений, установленных внутри /opt/. Но в Linux это не является обязательным. В результате мы часто можем видеть, что каталог /opt/ заполнен установленным пользователем программным обеспечением, а /etc/opt/ остается пустым.

2.3. Каталог /etc/default/

Конфигурационные файлы в каталоге /etc/default/ исторически содержали настройки для служб/демонов для использования с системами инициализации, такими как upstart. Но с появлением systemd этот каталог теперь содержит в основном настройки для пользовательских приложений.

Система не перезаписывает файлы внутри /etc/default/. Это означает, что если мы определим поведение приложений здесь, они останутся неизменными при обновлении системы.

2.4. Важные файлы глобальной конфигурации

К наиболее полезным файлам глобальной конфигурации относятся:

  • /etc/resolv.conf — используется для определения используемого DNS-сервера (серверов)
  • /etc/bash.bashrc — используется для определения команд, которые будут выполняться при запуске пользователем оболочки bash
  • /etc/profile — оболочка входа в систему выполняет команды в сценарии .profile при запуске системы
  • /etc/dhcp/dhclient.conf — хранит информацию о сети, необходимую DHCP клиентам
  • /etc/fstab — определяет, куда монтировать все разделы, доступные системе
  • /etc/hostname — задает имя хоста для машины
  • /etc/hosts — файл, который отображает IP-адреса на их имена хостов
  • /etc/hosts.deny — удаленным хостам, перечисленным здесь, запрещен доступ к машине
  • /etc/mime.types — список MIME-TYPES и связанных с ними расширений имен файлов
  • /etc/motd — настройка текста, отображаемого при входе пользователя на хост
  • /etc/timezone — установка локального часового пояса
  • /etc/sudoers — файл sudoers управляет правами пользователей, связанными с sudo
  • /etc/httpd/conf и /etc/httpd.conf.d — конфигурация для веб-сервера apache
  • /etc/default/grub — содержит конфигурацию, используемую update-grub для генерации /boot/grub/grub.cfg
  • /boot/grub/grub.cfg — команда update-grub автоматически генерирует этот файл, используя настройки, определенные в /etc/default/grub

3. Конфигурация для конкретного пользователя

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

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

Следует отметить, что пользовательские конфигурации всегда имеют больший приоритет, чем глобальные. Таким образом, приложение всегда будет отдавать предпочтение пользовательскому конфигу, пока он существует.

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

3.1. Традиционные конфигурации

Обычно, если приложение имело один файл конфигурации, он хранился в каталоге /home/<username>/.<app_name>. Но если файлов было больше одного, то конфигурации хранились в каталоге /home/<username>/.<app_name>.

Ярким примером такого поведения является редактор vim.

3.2. Конфигурационные файлы, соответствующие стандарту XDG

freedesktop.org решил, что старая система была беспорядочной, и разработал спецификацию базового каталога XDG.

Согласно стандарту XDG, все пользовательские файлы конфигурации хранятся в каталоге $XDG_CONFIG_HOME (обычно /home/<username>/.config).

Внутри $XDG_CONFIG_HOME каждое приложение создает свои собственные подкаталоги для хранения конфигураций.

Редактор NeoVim и многие активно разрабатываемые приложения теперь следуют спецификации базового каталога XDG. Это также очень удобно для пользователей, так как резервное копирование единственного каталога $XDG_CONFIG_HOME сохраняет все конфигурации.

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

Некоторые из наиболее часто используемых пользовательских файлов конфигурации являются:

  • $HOME/.xinitrc — позволяет установить директивы для запуска оконного менеджера при использовании команды startx
  • $HOME/.vimrc — конфигурация vim
  • $HOME/.bashrc — сценарий, выполняемый bash, когда пользователь запускает оболочку, не связанную с логином
  • $XDG_CONFIG_HOME/nvim/init.vim — конфигурация neovim
  • $HOME/.editor — устанавливает редактор по умолчанию для пользователя
  • $HOME/.gitconfig — устанавливает имя и адрес электронной почты по умолчанию, которые будут использоваться для git-коммитов
  • $HOME/.profile — оболочка входа в систему при запуске выполняет команды из скрипта .profile
  • $HOME/.ssh/config — конфигурация ssh для конкретного пользователя

4. Заключение

В этой статье мы узнали о двух типах конфигурационных файлов, доступных в Linux, и о том, где их можно найти.

Конфигурационные файлы Linux

image

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

Из этого руководства вы узнаете, где файлы конфигурации расположены и каковы их функции. Благодаря стандарту иерархии файловой системы (Filesystem Hierarchy Standard) папки и файлы, которые мы рассмотрим, сохраняют своё расположение даже в разных дистрибутивах.

Прим. переводчика:

Прежде чем двигаться дальше, следует разобраться, как устроена файловая система согласно стандарту FHS.

Все файлы и каталоги располагаются в корневой директории «/» . Даже если эти данные находятся на различных носителях, какие-то из этих каталогов присутствуют, а какие-то могут отсутствовать. В качестве примера можно привести каталоги, связанные с подсистемой X Window, когда каталогов может и не быть, если графическая подсистема не установлена. Однако, большинство каталогов присутствует на всех UNIX-подобных операционных системах и используется аналогичным образом.

Раздел Корневая директория, содержащая всю файловую иерархию
/bin/ Утилиты, которые доступны всем пользователям, такие как cat, ls, cp и др.
/boot/ Загрузочные файлы (файлы загрузчика, ядро, initrd, System.map). Как правило, выносится на отдельный раздел.
/dev/ Файлы устройств. Файлы в данном каталоге обычно создаются драйверами (например, /dev/null, /dev/zero, /dev/sda1).
/etc/ Основной каталог конфигурационных файлов системы.
/home/ Домашние директории с пользовательскими данными. Могут быть на отдельном разделе либо монтироваться по nfs.
/lib/ Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/.
/media/ Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, флеш-карты.
/mnt/ Используется для монтирования временных файловых систем.
/opt/ Дополнительное программное обеспечение. Сюда обычно устанавливаются различные компиляторы и пользовательское ПО, которое не требует соответствия FSHS
/proc/ Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде файлов.
/root/ Домашняя директория пользователя root.
/sbin/ Основные системные программы для администрирования и настройки системы (например, init, iptables, ifconfig).
/srv/ Данные, специфичные для окружения системы.
/tmp/ Временные файлы.
/usr / Вторичная иерархия для данных пользователя, содержит большинство пользовательских приложений и утилит.
/usr/bin/ Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме. При различных решениях может монтироваться отдельно.
/usr/include/ Стандартные заголовочные файлы.
/usr/lib/ Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/.
/usr/sbin/ Дополнительные системные программы (такие как демоны различных сетевых сервисов).
/usr/share/ Архитектурно-независимые общие данные.
/usr/src/ Исходные коды ядра.
/usr/local/ Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/.
/var/ Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров.
/var/lock/ Лок-файлы, указывающие на занятость некоторого ресурса.
/var/log/ Различные log-файлы.
/var/mail/ Почтовые ящики пользователей.
/var/run/ Информация о запущенных программах (в основном о демонах).
/var/spool/ Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма).
/var/tmp/ Временные файлы, которые должны быть сохранены между перезагрузками.

Более детально можно почитать, например,тут.

2. Глобальные файлы конфигурации

Глобальные файлы конфигурации определяют поведение системы в целом .

Как правило, они располагаются в корневом разделе диска ( / ), а доступ к ним требует прав суперпользователя.

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

2.1. /etc/

Большинство глобальных файлов конфигурации хранится в папке /etc .

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

Ниже приведён список наиболее полезных подпапок:

  • /etc/X11/ — конфигурационные файлы xorg;
  • /etc/cups/ — подпапка с конфигурационными данными сервера печати CUPS (Common UNIX Printing System);
  • /etc/xdg/ — глобальные файлы конфигурации для приложений, придерживающихся стандартов freedesktop.org;
  • /etc/ssh/ — используется для конфигурации поведения сервера OpenSSH для всей системы;
  • /etc/apparmor.d/ — содержит конфигурационные файлы для системы AppArmor;
  • /etc/udev/ — настройки, относящиеся к udev.

2.2. /etc/opt/

Папка /etc/opt/ должна содержать глобальные файлы конфигурации приложений, установленных в /opt/ . Однако в Linux это требование не является обязательным. В результате бывает, что папка /opt/ полна установленных пользователем программ, а /etc/opt/ остаётся пустой.

2.3. /etc/default/

Исторически конфигурационные файлы в папке /etc/default/ содержали настройки сервисов/программ-демонов для их использования с системами инициализации, например upstart. Однако с появлением systemd эта папка стала использоваться в основном для настроек приложений пользовательского пространства.

Система не перезаписывает файлы в папке /etc/default/ . А значит, как только мы настроили там поведение приложений, оно не изменится при обновлении системы.

2.4. Важные глобальные файлы конфигурации

Вот несколько наиболее полезных глобальных файлов конфигурации:

  • /etc/resolv.conf — в нём определяется, какой (какие) DNS-сервер(ы) использует система;
  • /etc/bash.bashrc — в нём задают команды для выполнения в момент запуска командной оболочки bash;
  • /etc/profile — интерактивная командная оболочка выполняет команды скрипта .profile при запуске;
  • /etc/dhcp/dhclient.conf — там хранятся сетевые данные, которые запрашивают DHCP-клиенты;
  • /etc/fstab — определяет, где будут смонтированы все доступные системе разделы диска;
  • /etc/hostname — задаёт имя хоста для машины;
  • /etc/hosts — файл, соединяющий IP-адреса с именами хостов;
  • /etc/hosts.deny — перечисленные в этом файле удалённые хосты лишены доступа к машине;
  • /etc/mime.types — содержит MIME-типы данных и соответствующие им расширения файлов;
  • /etc/motd — файл с текстом сообщения, которое выводится при входе пользователя в систему;
  • /etc/timezone — задаёт часовой пояс;
  • /etc/sudoers — файл sudoers контролирует привилегии, относящиеся к команде sudo;
  • /etc/httpd/conf и /etc/httpd.conf.d — конфигурация веб-сервера Apache;
  • /etc/default/grub — содержит конфигурацию, которую использует команда update-grub для создания файла /boot/grub/grub.cfg ;
  • /boot/grub/grub.cfg — команда update-grub генерирует этот файл автоматически в соответствии с настройками, заданными в файле /etc/default/grub .

3. Пользовательская конфигурация

Файлы пользовательской конфигурации определяют поведение системы только для задающего настройки пользователя .

Эти файлы, как правило, расположены в домашней папке пользователя и не требуют прав суперпользователя для редактирования.

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

В части пользовательских настроек приложения соответствуют одному из двух стандартов.

3.1. Традиционные файлы конфигурации

Как правило, если у приложения всего один файл конфигурации, его можно найти так: /home/(username)/.(app_name) . Но если конфигурационных файлов больше, то они хранятся в папке /home/(username)/.(app_name) .

Наглядный пример такого приложения — редактор vim .

3.2. Конфигурационные файлы, соответствующие стандарту XDG

Разработчики freedesktop.org решили, что старая система недостаточно упорядочена, и выработали базовую спецификацию каталогов XDG.

По стандарту XDG все файлы пользовательской конфигурации хранятся в папке $XDG_CONFIG_HOME (обычно в /home/(username)/.config ).

Внутри $XDG_CONFIG_HOME каждое приложение создаёт свои подпапки для конфигурационных файлов.

Базовой спецификации каталогов XDG теперь придерживаются редактор NeoVim и многие активно развивающиеся приложения. Для пользователей стандарт тоже удобен: одной резервной копии папки $XDG_CONFIG_HOME достаточно, чтобы сохранить все настройки.

3.3. Важные файлы пользовательской конфигурации

Среди наиболее часто используемых файлов пользовательской конфигурации следует перечислить:

  • $HOME/.xinitrc — в нём содержатся указания о запуске менеджера окон при работе с командой startx;
  • $HOME/.vimrc — конфигурация vim;
  • $HOME/.bashrc — скрипт, который выполняет командная оболочка bash , когда пользователь запускает командную оболочку без регистрации;
  • $XDG_CONFIG_HOME/nvim/init.vim — конфигурация редактора neovim;
  • $HOME/.editor — задаёт редактор по умолчанию для данного пользователя;
  • $HOME/.gitconfig — в файле указывается имя по умолчанию и адрес электронной почты для указания в коммитах Git;
  • $HOME/.profile — командная оболочка с регистрацией выполняет команды из скрипта .profile при запуске;
  • $HOME/.ssh/config — конфигурация ssh для конкретного пользователя.

4. Заключение

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

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

Поскольку ОС Linux не налагает ограничений на эти конфигурационные файлы, их синтаксис может быть самым разным. Но если взять на себя труд и хоть немного в них разобраться, знание конфигурационных файлов освобождает от ограничений пользовательских интерфейсов, предназначенных для новичков.

Лекция 3

Говорят, что переменная описана (определена), если она объявлена и под неё выделена память. Рассмотрим следующий пример, пусть в проекте есть два файла:

В C++ имеет место независимая компиляция: все файлы проекта компилируются независимо один от другого. Компиляция состоит из этапа собственно компиляции и этапа линковки.

Заголовочные файлы

Содержат заголовки всех функций и объявления переменных, обычно имеют расширение *.h (header). Теперь можно вынести объявления функций из всех файлов в один (заголовочный):

Имена пользовательских заголовочных файлов в директиве include заключаются в двойные кавычки, а имена стандартных заголовочных файлов — в угловые скобки. Стандартные заголовочные файлы расположены в /INCLUDE . Поиск пользовательских файлов производится в текущем каталоге.

Замечание: inline-функции не сохраняются в исходном коде, так как больше не используются (а сразу встраиваются на место вызова). Чтобы воспользоваться такими функциями в другой единице компиляции, их нужно поместить в заголовочный файл.

Содержимое заголовочных файлов

Что может содержать заголовочный файл:

Пример
Определения типов struct point < int x, y; >;
Шаблоны типов template<class T> class V < /* . */ >
Описания функций extern int strlen(const char*);
Определения встраиваемых функций inline char get()
Описания данных extern int a;
Определения констант const float pi = 3.141593;
Перечисления enum bool < false, true >;
Описания имен class Matrix;
Команды включения файлов #include <signal.h>
Макроопределения #define Case break;case
Комментарии /* проверка на конец файла */

В заголовочном файле никогда не должно быть:

Пример
Определений обычных функций char get()
Определений данных int a;
Определений составных констант const tb[i] = < /* . */ >;

Глобальные описания в C++ и необходимость пространств имен

При простом определении глобальных сущностей они объединяются в глобальном пространстве имен. Для создания локального пространства имен используется ключевое слово namespace .

Пространства имен и заголовочные файлы

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *