데몬을 복사하는 방법은 무엇입니까?

데몬을 복사하는 방법은 무엇입니까?

dnscrypt 클라이언트 에이전트의 두 인스턴스를 실행하고 싶지만 부팅 시 자동으로 시작되도록 할 수 없습니다. 내가 시도한 것은 다음과 같습니다.

에서는 rc.local이것이 첫 번째 것입니다:

/usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk

두번째:

/usr/local/sbin/dnscrypt-proxy2 -a 127.0.0.1:41 -u _dnscrypt-proxy2 -d -l /dev/null -R dnscrypt.org-fr

cd하나 만들었고 /usr/local/sbin재부팅 cp dnscrypt-proxy dnscrypt-proxy2하면[ERROR] Unknown User : [dnscrypt-proxy2].

그러다 검색해보니 이런게 있더라구요질문그런 다음 새 사용자를 수동으로 편집 /etc/passwd하고 추가하여 기본 _dnscrypt-proxy사용자를 조심스럽게 복사하고 ID를 변경했습니다. 이제 다음 두 항목이 있기 때문입니다.

_dnscrypt-proxy:*688:688:dnscrypt-proxy user:/var/empty:/sbin/nologin 
_dnscrypt-proxy2:*689:689:dnscrypt-proxy2 user:/var/empty:/sbin/nologin`

재부팅했는데 알 수 없는 사용자 오류가 계속 발생했습니다. 폴더를 잠깐 살펴보면 ls실제로 폴더를 복사했음을 알 수 있습니다. Ps aux디스플레이 데몬이 아직 시작되지 않았습니다. 인터넷 검색이 도움이 되지 않아 여기 Linux 전문가에게 도움을 요청했습니다. 내 운영 체제는 OpenBSD 5.7입니다.

답변1

첫 번째, 이는 알 수 없는 사용자 오류가 지속되는 이유에 대한 구체적인 답변입니다. 오류는 사용자를 생성하는 방식에 있습니다. .dll 파일보다 복구해야 할 파일이 더 많습니다 /etc/passwd.

사용자를 올바르게 생성하는 가장 쉬운 방법은 해당 줄을 삭제 /etc/passwd하고 실행하는 것 입니다 adduser -noconfig -shell -/sbin/nologin. (/etc/passwd를 편집할 때 vipw다음을 사용하지 마십시오 vi /etc/passwd. 지침은 매뉴얼 페이지를 참조하십시오!)

두번째, 실제로 두 번째 사용자를 생성할 필요는 없습니다. 프로그램 사본이나 프로그램 실행을 위한 두 번째 사용자 없이 동일한 프로그램을 두 번 실행할 수 있습니다. 동일한 사용자와 바이너리를 사용하지만 설정이 다른 두 번째 데몬을 실행하려면 다음과 같이 하면 됩니다.

  • 데몬의 초기화 스크립트를 다른 이름의 스크립트에 복사합니다. (당신은 이미 이것을 하고 있습니다.)
  • 새 초기화 스크립트를 편집합니다. 동일한 바이너리 경로와 동일한 사용자 이름을 유지하세요. 변화오직바꾸고 싶은 옵션!

짜잔 - 달릴 준비가 되었습니다!

답변2

지금 몇 시지:

  1. dnscrypt-proxy바이너리를 복사할 필요가 없습니다 . 다른 옵션을 사용하여 여러 번 호출하면 됩니다.
  2. 사용자를 생성할 때 _dnscrypt-proxy2해당 사용자의 기본 그룹도 생성합니까? 사용자의 GID가 _dnscrypt-proxy( 689아님 688)과 다른 것으로 보이나 복제 그룹에 대해서는 언급하지 않으셨습니다. 그렇지 않은 경우 누락된 그룹을 만듭니다. 누락된 항목을 편집하고 추가 하면 됩니다 /etc/group(그룹의 항목을 복사하는 것으로 추측됩니다 _dnscrypt-proxy).

보다2문제가 해결될 것입니다.

답변3

rcctl(8)매뉴얼 페이지 에서 :

다른 목적으로 특정 데몬의 두 번째 복사본을 실행하는 데 권장되는 방법은 rc.d(8) 제어 스크립트에 대한 기호 링크를 만드는 것입니다:

# ln -s /etc/rc.d/snmpd /etc/rc.d/snmpd6
# rcctl set snmpd6 status on
# rcctl set snmpd6 flags -D addr=2001:db8::1234
# rcctl start snmpd6

관련 정보