sv
私はWebアプリケーションをデーモン化するためにrunitを使用しており、環境変数なしでプロセスを管理可能にすることができるかどうかを確認しようとしましたenvdir
。これらの変数を呼び出しに直接渡すことができるかどうか疑問に思いますchpst
。run
次のファイルは次のとおりです/etc/service/myapp
。
#!/bin/sh
exec 2>&1
cd /var/www/myapp
# what it currently looks like
exec chpst -u www-data:www-data /var/www/myapp/myapp
# what I'd ideally like to be able to do
FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp
前述のように、環境変数を直接渡すオプションchpst
もあります-e
が、これを使用できますが、単純さ(メンテナンスする項目が少ない)のためにこれを避けたいと思います。これは可能ですか?ヒント?
答え1
アプリケーションを呼び出す前に、「env」パラメーターを使用して環境を渡すことができます。単一の環境でこれを行いましたが、複数の変数を提供する方法がわかりません。
exec chpst -u www-data:www-data env LOGNAME='www-data' /var/www/myapp/myapp
答え2
あなたできるただし:
FOO=bar BAZ=qux exec chpst -u www-data:www-data /var/www/myapp/myapp
これがうまくいかないことを知っている人がいる場合は聞きたいのですが、/bin/sh
実行したいと思う行は、私が試したすべてのシェルで好きな方法で正確に機能します。