Execute o script bash na inicialização no Linux Mint e abra o terminal automático automaticamente

0

Sou novo no Linux, então não sei como fazer o que eu quero.

Eu tenho my_script.sh (executável, é claro) assim:

#!/usr/bin/env bash
mate-terminal -e "bash -c 'cd /home/my_user/ruby_projects/my_app/';'rails s';exec $SHELL"

NOTA: Este script deve abrir o terminal, mudar o diretório atual para o dado naquele terminal, iniciar a aplicação rails sem fechar o terminal. Todas estas coisas devem ser feitas após a inicialização do sistema automaticamente (agora eu corro este script manualmente). Script contém alguns comandos similares, então alguns terminais devem ser abertos.

Se eu abrir o terminal, vá para o diretório do script, execute ./my_script.sh - tudo funciona perfeitamente e exatamente como eu quero que funcione, mas toda vez que eu inicializo eu tenho que fazer isso manualmente.

Então eu fui ao centro de controle - > Aplicativos de inicialização - > Adicionar - > navegou meu script de shell, deu nome - > Adicionar

Depois que eu reiniciei o sistema e ... :( Tudo o que vejo é um piscar de olhos na tela (que é a abertura e fechamento dos terminais mate) - tudo acontece tão rápido que eu não consigo ver o que mostra (no entanto, todos os terminais devem permanecer abertos!) E, é claro, nenhum aplicativo de trilhos foi iniciado. Todos os terminais estão fechados. Como consertar isso?

Atualização: No começo, meu pensamento era que nem todos os processos necessários para aplicativos rails começavam e é por isso que os terminais simplesmente se fechavam, então tentei adicionar sleep 10 para o script esperar até que tudo inicializasse corretamente, mas isso não mudou nada. atrasado por 10 segundos.

    
por kovpack 30.11.2014 / 02:34

1 resposta

1

Depois de um dia de luta, finalmente terminei com algo ainda melhor do que precisava:

#!/bin/bash

# Adds RVM to needed paths to start servers with needed Ruby version
PATH=$PATH:$HOME/.rvm/bin
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

# I need this server to run in background
startLocalRedmineServer()(
cd /home/adminuser/ruby_projects/redmine/
rails server webrick -e production --port 3001
)

# I need this to be done in background also
proxyLocalRedmineServer()(
proxylocal 3001 --host=mylocalredmine
)

# This thing should open mate-terminal, run start server, so that I can see real time logs, and stay on the screen in case I need it to be restarted
startOtherLocalServer()(
mate-terminal -e "bash -c 'cd /home/adminuser/ruby_projects/project_abc/';'rails s';'exec /bin/bash'"
)

# This thing should open mate-terminal and start proxying + remain opened
proxyOther()(
mate-terminal -e "bash -c 'proxylocal 3000 --host=projectabc'; 'exec /bin/bash'"
)

startLocalRedmineServer &
proxyLocalRedmineServer &
startOtherLocalServer &
proxyOther &
wait

Esses scripts são adicionados para inicialização, como escrevi acima na pergunta. Depois que o sistema inicia, esse script adiciona novos caminhos, que estavam faltando, e, em seguida, inicia quatro subprocessos separados. Dois deles - isto é, o servidor Redmine e seu proxy - funcionam em segundo plano (não preciso pará-los ou mudar nada). Duas outras funções abrem terminais separados, iniciam o servidor de rails locais e o proxy, para que eu possa pará-lo ou reiniciá-lo quando necessário.

    
por 01.12.2014 / 17:11