extend
특정 OID에 대한 일부 스크립트를 호출하는 지시문을 사용하여 snmpd를 확장하고 있습니다 . 스크립트 자체는 사용자 정의 도우미를 호출하여 일부 값을 추출합니다. 명령줄에서 수동으로 시작하면 도우미가 제대로 실행되지만 스크립트에서 호출하면 실패하기 때문에 작동하지 않습니다 /cots/boost-1.55/lib
. 실행 후 부스트 라이브러리가 캐시에 있는지 확인 /cots/boost-1.55/lib
했습니다 . 스크립트에는 기본적으로 다음이 포함됩니다./etc/ld.conf.d/cots.conf
ldconfig
result=`callHelper with arguments`
echo $result
결과는 snmpd에 의해 캡처되어 반환됩니다. OID를 쿼리하면 외부 부스트 라이브러리를 찾을 수 없다는 오류가 발생합니다.
su user
스크립트를 호출하여 작동하게 만들 수 있었습니다.
result=`su user "callHelper with arguments"`
echo $result
ld 캐시를 사용할 때는 정확 su
하지만 직접 스크립트로 작성할 때는 그렇지 않은 이유를 설명할 수 있는 사람이 있습니까? 나는 이것이 ldconfig
시스템 서비스인 snmpd와 관련이 있다고 생각하므로 환경은 다르지만 환경의 일부는 아닙니다.
답변1
라이브러리가 검색 경로에 있는지 확인하세요. TERM에서 다음 명령을 실행하여 전역 경로를 확인하세요. 경로는 .profile
비구성을 사용하여 설정됩니다.
echo $PATH$
검색 경로를 봅니다. 라이브러리를 검색 경로에 명시적으로 추가하려면 용어로 "set" 명령을 사용하십시오. 달러 기호는 이것이 쉘에 대한 전역 호출임을 나타냅니다. 노력하다
set PATH=$PATH$;/cots/boost-1.55/lib
세미콜론은 쉘에게 새로운 검색 경로를 시작하라고 지시합니다. 그러나 이는 검색 경로가 존재하는 경우에만 작동합니다. 물론 그것은 내 컴퓨터에서 분기되었습니다.
set PATH=$PATH$;/cots/boost-1.55/lib
bash: /cots/boost-1.55/lib: -forks No such file or direc
보수당!