私はUnixドメインソケット(ネイティブソケット)を介して通信するいくつかのデーモンを書いていました。どのファイルをどこに行くべきですか?
これまでに私が得た情報は次のとおりです(より良い場所を提案してください)。
- デーモンバイナリ/実行可能:糸口なし…
/usr/sbin/<subdir>/
?/usr/bin/<subdir>/
?他の場所? - ソケット:
/var/run/<subdir>/
(なぜかわからないが不便です/tmp/
) - ログファイル:
/var/log/<subdir>/
- 構成ファイル:
/etc/<subdir>/
ターゲットオペレーティングシステムはUbuntu Server 16.04+です。
答え1
以下を含む標準に関する優れた資料がたくさんあります。https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html
私は以下をお勧めします:
- ソケット:
/run/<subdir>/
。現在、Ubuntuの/var/run
シンボリックリンクだからです。この種の新しい標準的な場所です。/run
/run
- ログファイル:
/var/log/<subdir>/
正しい。単一ログには実際にディレクトリは必要ありません。/etc/logrotate.d
アイテムを追加することを忘れないでください - 構成ファイル:
/etc/<subdir>/
正しい。繰り返しますが、単一の構成ファイルにはディレクトリは必要ありませんが、そうしても害になることはありません。
バイナリファイル:
これらは存在できる場所がたくさんあります。通常、bin
ユーザーコマンドで使用されるsbinはサーバーデーモンで使用されます。一部の人は、sbin
ルートでのみ実行されるバイナリファイルであると言います。ねえ:https://askubuntu.com/questions/308045/differences-Between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local
/bin
またはを使用しないでください/sbin
。システムの起動に必要なバイナリ用に予約してください。/usr/bin
とを使用してください/usr/sbin
。例外がありますが、Bontuのほとんどのものがここに住んでいます。ソフトウェアを正しく(.dpkgまたは同様のファイルとして)パッケージ化した場合と/usr/bin
を使用する必要があります/usr/sbin
。- 適切にパッケージングする意図がなく、手動でシステム管理者にコピーしたい場合は、
/usr/local/bin
より/usr/local/sbin
適しています。ただし、コードを他の人に配布する場合は、通常この方法を使用しないでください。 - バイナリの一部一度だけ他のバイナリで使用する場合、または
/usr/lib
下に配置することをお勧めします/usr/local/lib
。バイナリがライブラリとして扱われるのは珍しいことではありません。
/usr/sbin
要するに、おそらく正しい/usr/bin
でしょう。