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
듣고 싶지만 실행하기를 바라는 줄은 내가 시도한 모든 쉘에서 원하는 방식으로 정확하게 작동할 것입니다.