2011-12-21 19 views
5

環境変数をエクスポートしていくつかのサブスクリプトを開始するスクリプトがあります。実行中のプロセスの環境変数を変更する

export LOGLEVEL="1" 
/home/myuser/bin/myscript1.sh 
/home/myuser/bin/myscript2.sh 

LOGLEVELは、サブスクリプトからstartetプロセスで使用できます。環境変数LOGLEVELを変更するにはどうすればよいですか?

私はexport LOGLEVEL="5"で変数を設定しようとしましたが、それは動作しません。

+0

の可能複製[別のプロセスの環境変数を変更する方法はありますか?](http://stackoverflow.com/questions/205064/ – thiton

+0

2つのmyscriptプロセスで変更されたことを示すときに、LOGLEVELをどのようなプロセスで変更したいかを指定します。 – Mark

+0

@マーク:両方のサブスクリプトのプロセスに対してLOGLEVELが変更されているかどうか、または個々のプロセスに対して変更できるかどうかは関係ありません。基本的には、プロセスに対話する作業方法を探しています。ログファイルに情報を追加する必要があります。 –

答えて

11

一般に、プロセスの起動時にプロセスの環境変数にのみ影響を与えることができます。実行中のプロセスに変更を伝える必要がある場合、環境は適切なツールではありません。

しかし、this questionには、この制限を克服する方法が示唆されています。

編集が質問者のコメントで議論を踏まえて追加する:実行中のプロセスに設定を変更し、時折通信のかなり良い方法はLOGLEVELの値が設定されている設定ファイルを指定することで、プロセスにSIGHUPを送信し、 SIGHUPの受信時にプロセスが設定ファイルを再度読み込ませるようにしてください。 Linuxでは

+1

これを正しい方法で管理するためのリンクと手掛かりをありがとう - 私はSIGHUPの詳細を読んでWikipediaで見つけました:_DaemonプログラムはSIGHUPをシグナルとして再利用することがあります。 - 変更された構成ファイルを読み取った_ –

-2

strings –a /proc/<pid_of_the_process>/environ 

または

ps eww <pid_of_the_process> 
+6

これは印刷され、質問は変更されました。助け無し。 – rektide

関連する問題