Ubuntu

重啟後如何在 bash 中啟動 tmux

  • May 11, 2015

我創建了一個腳本以在 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)$

奇怪的是,virtualenv 似乎已啟動,但似乎並沒有起作用。環境似乎也很奇怪。如果我手動執行腳本(而不是重新啟動)並執行 a tmux attach,我看到(venv)ubuntu@ip-172-xx-xx-xxx:的不僅僅是(venv)$. 這可能是問題嗎?

我終於找到了原因。

我所要做的就是像這樣添加 Python 路徑:

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

現在它起作用了。希望這可以幫助其他有類似要求的人。

引用自:https://serverfault.com/questions/691068