envdir 없이 환경 변수를 chpst에 전달할 수 있습니까?

envdir 없이 환경 변수를 chpst에 전달할 수 있습니까?

sv저는 웹 애플리케이션을 데몬화하기 위해 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듣고 싶지만 실행하기를 바라는 줄은 내가 시도한 모든 쉘에서 원하는 방식으로 정확하게 작동할 것입니다.

관련 정보