웹 서버에 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
. 예를 들어, 로컬 버전이나 사전 확인을 수행하는 스크립트(예: ding 파일 앞에 경고를 표시하는 스크립트 shred
)를 통해 표준 명령을 재정의하면 해당 명령은 시작 부분에 나열된 디렉터리에 배치되므로 $PATH
로컬(사용자의 ) 버전은 Standard Edition 및 Standard Edition을 전체 경로로만 실행합니다.
질문에 대한 추가 정보: 바이너리 파일을 이동하는 것은 좋은 생각이 아닙니다. 바이너리 파일은 해당 디렉터리의 다른 파일에 따라 달라질 수 있습니다. 최대한 소프트링크하세요. 아니면 alternatives
도구 세트를 사용하면 더 많은 개요를 유지하는 데 도움이 됩니다.
답변3
때에 따라 다르지...
수백 개의 그러한 프로그램이 있다면 아마도 가능할 것입니다.
그렇지 않으면 /usr/local/bin/
$PATH에 있으므로 사용자 디렉토리의 적당한 위치에 프로그램을 배치하고 각 프로그램에 해당 소프트 링크를 배치하십시오 /usr/local/bin/
. 완벽하지는 않지만 PATH 손상을 방지합니다.