カスタムパラメータを使用してデーモンプロセスを実行する方法

カスタムパラメータを使用してデーモンプロセスを実行する方法

カスタムパラメータを使用してデーモン(この場合はNTP)を実行する方法を知りたいです。

たとえば、Ubuntu PCでntpd次のように実行したことを確認しました。

$ ps aux | grep ntpd
ntp  5936  ...  0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 119:127

このパラメータを確認できます-g

しかし、私のGentoo PCで同じコマンドを実行すると、ntpデーモンがそのパラメータで実行されていないことがわかります。-gこれを追加したい!

これはディストリビューション関連の問題ですか?この問題にどのように対処する必要がありますか?

答え1

推測するGentoo Wiki、編集すると問題が解決することNTPD_OPTSがあります(推奨されるかどうかは不明です)。/etc/conf.d/ntpd-g

答え2

DebianとUbuntuでは、デーモンは通常、/etc/default/daemon-name次のようないくつかの設定パラメータを設定します/etc/default/ntp

NTPD_OPTS='-g'

このファイルはから派生し、/etc/init.d/ntpその変数の値が適切に使用されます。

# near the beginning

if [ -r /etc/default/ntp ]; then
    . /etc/default/ntp
fi

# later

start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON \
    -- -p $PIDFILE $NTPD_OPTS

Gentooにも似たものがあるかどうかはわかりません。

答え3

デーモンは、ソースコードで作成され、実行可能な形式でコンパイルされる他のプログラムと同じであり、引数を受け入れて処理することができます(たとえば、指定されたスイッチの引数または引数自体として使用)。デーモンとプログラムの違いは、本質的にプログラムのデーモンモードがタスクをバックグラウンドモードに切り替え、オプションでサービスに必要なネットワークインタフェースを受信し、有線で要求を受け入れることです。したがって、シェルプロンプトのコマンドラインからパラメータを渡すか、スクリプトで実行可能なデーモンへのパスを指定した直後にパラメータを渡すことは同じです。ただし、必要なパラメータを使用してシェルスクリプトでデーモンの設定や変数を呼び出す方法は、スタイルや規則が異なる場合があります。単にオプションを提供するよりも、デーモン実行可能ファイルまたはプログラムがどのパラメータを受け入れるかを理解し、実行に使用する前にその目的を理解するには、マニュアル(提供されている場合)を読むことが重要です。

答え4

ディストリビューションによって慣行が異なります。通常、/etc特定のデーモンが始まる場所(grep -r ntpd /etcまたはfind /etc -type f -exec grep ntpd {} +)を以下で検索し、それを起動するスクリプトが引数を取得する方法を確認してください。または一般的な手順については、ディストリビューションのマニュアルを参照してください。

通常、多くのサービスを開始する 1 つの大きなシェルスクリプトまたはその他の構成ファイルがあるか、各サービスのスクリプトまたは構成ファイルがあります。これらのパラメーターは、このスクリプトに指定されているか、他の構成ファイルに設定されている変数から取得できます。一般的な場所には/etc/init*/etc/rc*およびがあります/etc/default/*

関連情報