Я настраиваю Prometheus на веб-сервере и заметил, что каждый экспортер — это отдельная программа, которую необходимо добавить в каталог в $PATH.
Мой вопрос в том, есть ли преимущество в создании специального каталога для них (например, "/usr/exporters/bin", чтобы составить некий пример) и размещении всех программ-экспортеров там, и добавлении этого файла в $PATH? Или лучше просто поместить программы в каталог по умолчанию для размещения двоичных файлов?
решение1
Единственное преимущество — меньше каталогов в $PATH
, следовательно, меньше каталогов для поиска исполняемого файла, но:
Это событие (поиск по всем каталогам в
$PATH
) встречается редко.$PATH
Записи (исполняемые файлы) хранятся в хэш-таблице вbash
, которая обновляется при запуске или черезrehash
. Нет необходимости выполнять поиск$PATH
каждый раз.Это событие не требует больших затрат. Вся необходимая информация (файл существует и разрешения позволяют выполнение) может быть получена из записи каталога файла — нет необходимости получать доступ к каждому файлу. Просто прочитайте каталог.
Причины, по которым НЕ следует перемещать исполняемые файлы в другой общий каталог, включают:
У вас будет нестандартная среда. Когда вы попросите о помощи, потребуются дополнительные усилия, чтобы объяснить это. Проблемы, вызванные именно нестандартной средой, будет очень трудно решить.
У вас будет нестандартная среда. Когда будут выпущены обновленные версии, ваша среда не будет соответствовать тому, что ожидает обновление.
У вас будет нестандартная среда. Вам придется запомнить и сделать обновления нестандартной среды на этой неделе, на следующей неделе, на неделе после этой, ... вечно.
Это просто «движение обезьяны», не приносящее никакой выгоды.
решение2
Хранение бинарных файлов в каталогах с соответствующими библиотеками довольно распространено. Пример использования — управление версиями. Скажем, когда у вас установлено несколько версий python (2.7, 2.7, 3...) и они все вам нужны, но вы хотите определить стандарт.
Обычно для этого используются alternatives
набор и программные ссылки на двоичный файл, например, /usr/bin
(с определениями в /etc/alternatives
).
Одним из важных преимуществ может быть также использование порядка слева направо в $PATH
. Например, когда вы переопределяете стандартные команды локальными версиями или скриптами, которые выполняют предварительную проверку (например, скрипт, который выводит предупреждение перед shred
файлами ding), они будут находиться в каталоге, указанном в начале $PATH
, поэтому локальная (пользовательская) версия запускается, а стандартная — только по ее полному пути.
Подробнее о вашем вопросе: Перемещение двоичных файлов — не очень хорошая идея: они могут полагаться на другие файлы в своем каталоге. Максимум — это мягкие ссылки на них. Или просто используйте набор alternatives
инструментов — что также помогает поддерживать больший обзор.
решение3
Это зависит...
Если у вас сотни таких программ, то, возможно.
В противном случае, поскольку /usr/local/bin/
находится в вашем $PATH, поместите ваши программы в пользовательский каталог в каком-нибудь разумном месте и разместите соответствующие мягкие ссылки для каждой программы в /usr/local/bin/
. Это не идеально, но позволяет избежать искажения PATH.