如何在重启后立即在bash中启动一个tmux

我已经创build了一个脚本来重新启动Ubuntu实例运行。

crontab -e 

然后将其添加到脚本中:

 @reboot /home/ubuntu/startup.sh 

这是脚本的样子:

 #!/bin/bash tmux new-session -d -s my_server tmux send-keys -t my_server:0 ". /home/ubuntu/venv/bin/activate" Cm tmux send-keys -t my_server:0 "cd ~/canonicaliser_api" Cm tmux send-keys -t my_server:0 "git checkout new-schema" Cm tmux send-keys -t my_server:0 "git pull" Cm tmux send-keys -t my_server:0 "cd ~/canonicaliser_api/canonicaliser/workers" Cm tmux send-keys -t my_server:0 "python person_worker.py" Cm 

重新启动后,我做一个tmux attach查看结果。

 $ . /home/ubuntu/venv/bin/activate cd ~/canonicaliser_api (venv)$ (venv)$ git checkout new-schema git pull cd ~/canonicaliser_api/canonicaliser/workers python person_worker.py Already on 'new-schema' Your branch is up-to-date with 'origin/new-schema'. ... 7 files changed, 157 insertions(+), 20 deletions(-) (venv)$ (venv)$ Traceback (most recent call last): File "person_worker.py", line 4, in <module> from app import create_app, log ImportError: No module named app (venv)$ 

奇怪的是,virtualenv似乎激活,但似乎并没有奏效。 环境似乎也很奇怪。 如果我手动运行脚本(而不是重新启动)并执行tmux attach ,我会看到(venv)ubuntu@ip-172-xx-xx-xxx:而不是(venv)$ 。 这可能是问题吗?

我终于find了原因。

我所要做的就是像这样添加Pythonpath:

 tmux send-keys -t my_server:0 "export PYTHONPATH=$PYTHONPATH:/home/ubuntu/canonicaliser_api" Cm 

现在起作用了。 希望这可以帮助有相似要求的人。