Linuxサーバー(Ubuntu 12.04)にカスタム管理タスク用のいくつかのスクリプトを追加したいと思います。最終的に、これらのスクリプトは少なくとも1つのデーモン(私の場合はPostgreSQLですが重要ではありません)のコールバックスクリプトです。デーモンが私のスクリプトを見つけるには、私が/opt/<package>/bin
従うフルパスを提供する必要があります。FHS。
そのパスをPATHに追加すると、/etc/environment
ユーザーはフルパスを指定せずにスクリプトを呼び出すことができますが、デーモンでは「見つかりません」というメッセージのみが表示されます。
だから私の質問は基本的に2つです。
- PATHにデーモンのパスを追加するには?
- とにかくこれは良いアイデアですか?それとも、常にフルパス名を使用する必要がありますか?
答え1
/ etc / environmentのPATHにそのパスを追加すると、ユーザーは完全なパスを指定せずにスクリプトを呼び出すことができますが、デーモンでは「見つかりません」というメッセージのみが表示されます。
~によるとこのソース、IBM AIX文書は次のとおりです(他の項目は見つかりません)。しかし、一般的に正確かもしれません。1
オペレーティングシステムで使用される最初のファイルログインするとき/etc/environment ファイルです。 /etc/environment ファイルには、すべてのプロセスのデフォルト環境を指定する変数が含まれています。
ありますので参考にしてくださいいいえすべてのシステム範囲で発生するため、.profile
ハードコーディングされます。ただし、「ログイン時に」に適用される場合、initによって起動され、ログインしていないデーモンには適用されません(「すべてのプロセスについて」はこれと矛盾しますが、誤った単語の選択かもしれません)。
~によるとこのスーパーユーザーのQ&A、/etc/environment
の一部ですポリアクリルアミドこれは、「ログイン時に」前提条件をサポートし、これは初期化生成デーモンでは使用されないことを意味します。他の参考資料がたくさんありますが、実際のPAM文書はないようです。
常にフルパス名を使用する必要がありますか?
これは最も一般的で一般的に推奨される手順です。デーモンは$ PATHなしで起動できます。したがって、起動スクリプトで直接設定することも、言ったように必要に応じてフルパス名を使用することもできます。
答え2
これは展開に非常に依存しています。 /etc/environmentはLinuxのPAMに属しています(すでに指摘したように)。ただし、/etc/environment はデーモンではなくログインに使用されます。サービスとデーモンの場合、通常はGentoo Linuxの/etc/conf.d/で見つけることができるいくつかの設定スクリプト(通常はいくつかのrcスクリプト)から派生します。しかし、これもディストリビューションに非常に依存しています。サービスを開始するためのシステムはもう一つの話です。
絶対名でプログラムを呼び出すのが最善です。これは実行しようとしているプログラムに対するあいまいさを防ぎ、セキュリティのベストプラクティスでもあります。