我尝试设置我的/etc/rc.local,以便在重新启动时自动启动另一个用户的进程。出于某种原因,此用户的.bash_rc似乎没有被初始化。
这是我添加到/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
只是启动一个python脚本。 python脚本失败,因为它引用了在.bash_rc中初始化的python路径中的模块
编辑:当我这样做时它会起作用
sudo su -l batchuser -c "export PYTHONPATH=/my/python/path; /home/batchuser/app/run_prod.sh &"
为什么这样做而不是上面的陈述?为什么.bashrc没有初始化?
答案 0 :(得分:0)
我遇到了同样的问题。我不能完全解释这种行为,但我最终做了这种事情:
sudo $PYTHONPATH=$PYTHONPATH the_command
或更具体地针对您的情况,
sudo $PYTHONPATH=$PYTHONPATH su -l batchuser -c /home/batchuser/app/run_prod.sh &"
这对你有用吗?如果是这样,您可能会发现它并不像您期望的那样立即返回。您可能需要将&
移到引号之外,以便它适用于sudo命令。