この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
答え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
オプションはサービスの開始を指示します。悪魔モード(またはスタンドアロンモード)。これがインターネットサービスを運営する最初の方法でした。