簡體   English   中英

bash腳本在不同終端執行

[英]bash scripts execution in different terminals

我有 bash 腳本,每次我想開始我的項目時都會從新終端執行

celery.sh

activate () {
     . /Users/oleg/Desktop/auth/venv/bin/activate
}
activate
cd projectname
celery -A projectname worker -l info

flower.sh

activate () {
     . /Users/oleg/Desktop/auth/venv/bin/activate
}
activate
cd projectname
celery -A projectname flower --port=5555

start.sh

activate () {
     . /Users/oleg/Desktop/auth/venv/bin/activate
}
activate
cd projectname
python manage.py runserver 0.0.0.0:8000

這個腳本在我的本地機器上使用,我在new terminal中使用3 different commands execute它們,每個命令

./celery.sh

./flower.sh

./start.sh

我覺得每次都被迫打開這 3 個終端很無聊,而且是redundant的。

My goal是創建一個腳本./ultimatestart.sh它將啟動all of this three scripts ,每個腳本都應該opened in its personal terminal

答案更新,感謝 Olaf Kock,我找到了適用於我的 MacOs 和 zsh 終端的解決方案

我有兩個選項,第一個將啟動這三個腳本 celery.sh、flower.sh、start.sh

osascript -e 'tell app "Terminal" to do script "cd /Users/oleg/Desktop/auth &&
./celery.sh"'
osascript -e 'tell app "Terminal" to do script "cd /Users/oleg/Desktop/auth &&
./start.sh"'
osascript -e 'tell app "Terminal" to do script "cd /Users/oleg/Desktop/auth &&
./flower.sh"'

我也發現它是redundant的,因為現在, i have 4 scripts ,並且通過這個更新,我可以從one script啟動所有這 3 個終端

ultimatestarter.sh

osascript -e 'tell app "Terminal" to do script "activate () { 
                  . /Users/oleg/Desktop/auth/venv/bin/activate
                  } 
activate 
cd /Users/oleg/Desktop/auth/projectname
celery -A projectname worker -l info"'

osascript -e 'tell app "Terminal" to do script "activate () { 
                  . /Users/oleg/Desktop/auth/venv/bin/activate
                  } 
activate 
cd /Users/oleg/Desktop/auth/projectname
celery -A projectname flower --port=5555"'

osascript -e 'tell app "Terminal" to do script "activate () { 
                  . /Users/oleg/Desktop/auth/venv/bin/activate
                  } 
activate 
cd /Users/oleg/Desktop/auth/projectname
python manage.py runserver 0.0.0.0:8000"'
  1. 弄清楚你想啟動哪個終端(我以 xterm 為例)
  2. 檢查終端的手冊頁以獲取使用參數啟動它的實際命令(可選:命令完成后保持打開狀態)
  3. 在后台執行命令( &

對於 xterm,這可能類似於

xterm -e /bin/bash -ls -c "./celery.sh" &
xterm -e /bin/bash -ls -c "./flower.sh" &
xterm -e /bin/bash -ls -c "./start.sh" &

如有必要,請pause噴灑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM