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

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

我已经创建了一个脚本,在 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" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api" C-m
tmux send-keys -t my_server:0 "git checkout new-schema" C-m
tmux send-keys -t my_server:0 "git pull" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api/canonicaliser/workers" C-m
tmux send-keys -t my_server:0 "python person_worker.py" C-m

重启后我执行了以下操作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)$

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

答案1

我终于找到原因了。

我所要做的就是添加 Python 路径,如下所示:

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

现在它起作用了。希望这能帮助有类似需求的人。

相关内容