Inicie dois scripts que são executados indefinidamente no shell script

0

Sou um webdev e estou usando o compilador JSX e o pré-processador SASS para compilar meus arquivos .jsx e .scss . Quando começo a trabalhar, inicio esses dois comandos separados:

jsx -x jsx jsx js --watch --no-cache-dir
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

Como você pode ver, ambos têm um sinal --watch , o que significa que eles continuarão rastreando seus respectivos arquivos até que sejam mortos. Eu quero ser capaz de usar um script de shell, que lança ambos os scripts de uma só vez. Até agora eu tenho:

#!/bin/sh

echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir
echo "Starting SASS Preprocessor"
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

mas isso só executa o primeiro programa jsx e não sass porque o jsx está em execução. Como posso iniciar os dois programas do tipo "watch" através de um shellscript?

    
por user2200321 28.02.2015 / 07:44

1 resposta

1

Existem duas possibilidades aqui para alcançar seu objetivo.

Primeiro, você pode iniciar o primeiro comando em segundo plano adicionando um e comercial "&" no final da linha de comando:

#!/bin/sh 
echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

Ao fazer isso, você pode trabalhar usando o mesmo terminal, talvez a saída para sdtout e o stderr será exibido no terminal, o que às vezes pode ser um pouco confuso. Mas os processos serão executados em segundo plano até você fechar o terminal.

Se isso não for suficiente e você quiser que os processos sejam executados mesmo se o terminal estiver fechado, você precisará do comando nohup adicionalmente aqui:

#!/bin/sh 
echo "Starting JSX Compiler..."
nohup jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
nohup sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

Isso também iniciará seus processos em segundo plano, você ainda estará usando o E comercial no final dos comandos, mas também informará seus processos para ignorar o sinal HUP. Dessa forma, os processos serão executados até que o programa termine, o processo seja eliminado ou o sistema seja encerrado.

    
por 28.02.2015 / 09:28