2014-09-05 4 views
0

/etc/rc.local을 설정하여 다른 사용자로 재부팅 할 때 자동으로 프로세스를 시작하려고합니다. 어떤 이유로,이 사용자에 대한 .bash_rc가 초기화되지 않는 것 같습니다.배치 사용자의 환경 변수가 su -c에 설정되지 않음

여기에 내가을 /etc/rc.local에 추가 명령의이 작동하지 않았다

sudo su -l batchuser -c "/home/batchuser/app/run_prod.sh &" 

, 그래서 나는이 시도 :

sudo su -l batchuser -c ". /home/batchuser/.profile; /home/batchuser/app/run_prod.sh &" 

run_prod.sh 그냥 파이썬 스크립트를 시작을 . 그것은 .bash_rc에서 초기화됩니다 파이썬 경로에있는 모듈을 참조하기 때문에 파이썬 스크립트가 실패


편집 : 내가이

sudo su -l batchuser -c "export PYTHONPATH=/my/python/path; /home/batchuser/app/run_prod.sh &" 

을 수행 할 때 왜이 작업을 수행 아니라 작동 위의 진술? 어떻게 .bashrc가 초기화되지 않았습니까?

+0

'batchuser' (sudo -l -U batchuser'로 얻을 수있는)에 대한 sudoers (5) 설정은 무엇입니까? – Armali

답변

0

동일한 문제가 발생했습니다. 나는 완전히 동작을 설명 할 수 없다,하지만 난 것은 이런 종류의 일을 결국 :

sudo $PYTHONPATH=$PYTHONPATH the_command 

또는 더 구체적으로 귀하의 경우에,

sudo $PYTHONPATH=$PYTHONPATH su -l batchuser -c /home/batchuser/app/run_prod.sh &" 

당신을 위해 그 일을 하는가를? 그럴 경우 기대 한대로 즉시 반환하지 않을 수도 있습니다. &을 따옴표 바깥으로 이동해야 sudo 명령에 적용될 수 있습니다.