문서화되지 않은 옵션 "netserver -D"의 의도는 무엇입니까?

문서화되지 않은 옵션 "netserver -D"의 의도는 무엇입니까?

netserver바이너리는 일반적으로 iperf3.in 과 쌍을 이룹니다.많은 맥락다른 Stack Exchange 질문을 포함하여 시작 방법이 netserver미스터리 옵션으로 표시됩니다 -D.

-D옵션은 매뉴얼 페이지에 문서화되어 있지 않으며 이 옵션이 다른 작업을 수행하는 것 같지도 않으며 netserver(1)내가 찾은 다른 곳에서 시작할 이유도 제공되지 않습니다.-D

그래서 내 질문에 대답할 수 있다면 --D이 옵션의 목적은 무엇입니까?확장하여,이 옵션은 어디에 문서화되어 있나요 -D?

-D다음은 , per를 포함하는 샘플 단위 파일입니다.플라비오의 블로그이것은 내가 사용하는 것과 가깝습니다.

[Unit]
Description="Netperf netserver daemon"
After=network.target

[Service]
ExecStart=/usr/local/bin/netserver -D

[Install]
WantedBy=multi-user.target

답변1

알아내는 한 가지 방법은소스코드를 보세요: 유발하다-Dnetserver아니요데몬화하고 자식인지 확인을 건너뜁니다 inetd.

netserver -h이것을 언급하면 ​​(부분적으로):

Usage: netserver [options]

Options:
[...]
    -D                Do not daemonize

따라서 옵션의 목적은 netserver보호되는 것을 방지하는 것입니다.백그라운드에서 실행되도록 자체적으로 포크합니다.

systemd 장치에서 이 옵션의 목적은 다음과 같습니다.다루기 더 쉽다서비스로.

답변2

D나타낼 수도 있다디버그, 비록 그 의도가 표시되지는 않았지만개발자추가할 때 (가능한다른 사람을 대신하여):

commit 88eecaf68174e4e0190e2b866e0bcb59b81b6061                                 
Author: raj <raj@5bbd99f3-5903-0410-b283-f1d88047b228>                          
Date:   Mon Jul 11 21:58:41 2011 +0000                                          
                                                                            
massive re-write of src/netserver.c to clean out old spaghetti allow multiple listen sockets for control and run netserver without daemonizing or spawning children to avoid fork calls which may not sit well with various bypass libraries.  this has probably broken the Windows code and perhaps other platforms as well but it has been tested under linux

사용원천(즉, 읽기 netserver.c):

case 'D':
  /* perhaps one of these days we'll take an argument */
  want_daemonize = 0;
  not_inetd = 1;
  break;

첫 번째 변수는 want_daemonize다음 용도로 사용됩니다.같은 파일프로그램이 다음 위치에 배치되는지 여부를 제어합니다.배경:

/* we are the top netserver process, so we have to create the
   listen endpoint(s) and decide if we want to daemonize */
setup_listens(local_host_name,listen_port,local_address_family);
if (want_daemonize) {
  daemonize();
}
accept_connections();

또 다른 변수는 not_inetd다음 여부를 제어합니다.노력하다inetd서비스의 소켓을 엽니다 .

개발자는 예를 들어 2002 섹션에 설명된 대로 다른 프로그램의 장기적인 동작을 고려할 수 있습니다.29.2.1 독립 서비스 호출(실제로는 옵션의 의미가 반대가 되지만):

다음을 시도해 보십시오(대괄호 안의 대체 명령)
/usr/sbin/in.ftpd -D
( /usr/sbin/in.wuftpd -s )
.-D옵션은 서비스가 시작되도록 지시합니다.악마모드(또는 독립형 모드). 이것이 인터넷 서비스를 운영하는 최초의 방법이었습니다.

관련 정보