프로세스 목록의 start-stop-daemon 서비스에 레이블을 추가합니다.

프로세스 목록의 start-stop-daemon 서비스에 레이블을 추가합니다.

Redis 서비스 인스턴스가 여러 개 있고 명령 출력에 레이블을 추가하고 싶습니다 ps. 현재 나는 다음을 본다:

$ ps aux | grep redis
root     <snipped>   /usr/local/bin/redis-server *:6381                    
root     <snipped>   /usr/local/bin/redis-server *:6380  

다음과 같이 출력되는 방법이 있습니까?

root     <snipped>   /usr/local/bin/redis-server *:6381 item cache # <== label
root     <snipped>   /usr/local/bin/redis-server *:6380 page cache # <== label

즉, 각 인스턴스의 목적을 쉽게 식별할 수 있도록 텍스트 레이블을 추가합니다.

바이너리를 복사하지 않고도 이를 수행할 수 있는 방법이 있습니까?

답변1

redis-server시작 후 자신의 명령 이름을 변경하는 기능이 기본적으로 지원되지 않는다고 가정하면 (일부 프로그램, 특히 데몬에는 이러한 지원이 있음) 다음을 수행할 수 있습니다.

  • 대체 명령 이름을 사용하십시오.

    명령줄의 첫 번째 인수( )는 일반적으로 명령을 호출하는 데 사용되는 바이너리의 이름(전체 경로 이름 또는 기본 이름) 이지만 argv[0]반드시 그럴 필요는 없습니다. 그렇지 않은 경우 애플리케이션 자체는 아마도 이를 인지하지 못하거나 신경 쓰지 않을 것입니다. 그러나 쉘은 set 을 사용하여 명령을 실행하기 위해 이 규칙을 따릅니다 argv[0]."특별한" 방법으로 시작하세요.

    /etc/init.d이렇게 하려면 이 데몬을 시작하는 스크립트를 수정해야 할 수도 있습니다 .

  • 바이너리에 대한 하드 링크를 만들고 실행합니다. 이는 바이너리 복사 제안과 유사하지만 복사본은 필요하지 않습니다. 하드 링크를 사용하는 경우 바이너리는 추가 디스크 공간을 차지하지 않으며 여러 인스턴스의 코드(텍스트)는 모두 메모리를 공유합니다. 이는 복제본에서는 발생하지 않습니다.

관련 정보