arquivo de shell para abrir várias guias de terminal, alterar locais, executar comandos

1

Eu nunca escrevi um script shell antes, mas eu tenho um aplicativo web que precisa de um monte de coisas rodando de uma vez, e é irritante ter que abrir cada aba, mudar diretórios, iniciar meus processos, etc.

Estou baseando meu arquivo no mostrado em esta questão .

O primeiro trecho (a chamada para as redis, que faz o cd por conta própria) funciona, mais ou menos - ele abre uma única guia terminal e roda redis. (Eu apenas o separei para fins de teste; de preferência, seria parte da matriz e todas as guias seriam abertas em uma única janela de terminal.)

O segundo pedaço é o lugar onde estou com problemas. Aparentemente cd não funciona em scripts de shell , mas esse link em particular está muito acima da minha cabeça, e eu não entendo como implementar nenhuma das soluções mostradas lá. O erro específico que recebo é:

bash: cd ~/phoenix/RenderService; npm start: No such file or directory

As guias que se abrem através do loop têm prompts no diretório redis-stable :

Vejaoquequeroqueaconteçaquandoeuexecutaroscript:

  1. Abraumajaneladeterminalcomtrêsguias,usandooperfilPhoenix.
  2. Aprimeiraguiadevemudarparaodiretórioredis-stablee,emseguida,executarsrc/redis-server
  3. Asegundaguiadevemudarparaphoenix/PhoenixServicesdiretório,emseguida,executenpmstart
  4. Aterceiraguiadevemudarparaphoenix/RenderServicediretório,emseguida,executenpmstart

Ajaneladoterminaletodasasguiasdevempermanecerabertasapósaexecuçãodoscomandos.

Aquiestáomeucódigoexistente:

#!/bin/bash#runredis,PhoenixServices,andRenderServicecd~/redis-stablegnome-terminal--tab-with-profile=Phoenix--title=Redis-e'bash-c"src/redis-server; exec bash"'

tab=" --tab-with-profile=Phoenix"
options=(--tab --title=Terminal)

cmds[1]="'cd ~/phoenix/PhoenixServices; npm start'"
titles[1]="PhoenixServices"

cmds[2]="'cd ~/phoenix/RenderService; npm start'"
titles[2]="RenderService"


for i in 1 2; do
  options+=($tab --title="${titles[i]}"  -e "bash -c \"${cmds[i]} ; exec bash\"" )          
done

gnome-terminal "${options[@]}"


exit 0

Alguém pode ajudar um novato pobre a sair?

    
por EmmyS 17.10.2015 / 00:46

1 resposta

1

Se você não precisar monitorar ativamente todas as três guias, poderá inseri-las nos arquivos de log e abri-las quando precisar de uma atualização das atividades. É sobre como eu gostaria de começar:

#!/bin/bash

cd ~/redis-stable; src/redis-server &> path/to/redis.log &
cd ~/phoenix/PhoenixServices; npm start &> path/to/phoenix.log &
cd ~/phoenix/RenderService; npm start &> path/to/render.log

Você pode ver a resposta para esta pergunta sobre o stackoverflow para mais informações sobre a execução de processos paralelos.

Você também pode usar serviços de monitoramento para respingar o terminal se determinados eventos ocorrerem durante os processos com sequências until ou watch . Veja as respostas para essa pergunta de superusuário para mais ideias.

    
por csworenx 21.06.2018 / 23:30