Quando inicializo meu ambiente de desenvolvimento, há vários processos que preciso executar em segundo plano. É uma dor para iniciá-los individualmente, então eu quero escrever um script que inicie cada um. Eu posso fazer isso muito bem, mas o problema vem quando eu preciso reiniciá-los (algo que eu preciso fazer regularmente).
Qual é a maneira mais fácil de capturar o processo ao iniciá-lo e salvá-la para que, quando eu executar o script novamente, ele verifique se essa informação foi salva e feche esses processos antes de reiniciá-los. / p>
Eu também quero que o script seja flexível o suficiente para que, se eu desligar o processo manualmente, a) não jogue um erro se ele não encontrar o processo eb) não desligue acidentalmente algum outro processo que tenha em seguida, compartilhei qualquer informação de identificação que tenha armazenado.
Atualizar
Mais especificamente, quero pelo menos fazer o seguinte no momento:
1) Digite um comando curto como "start-dev"
2) Execute o seguinte (note que eu quero que o segundo e terceiro comandos sejam executados em segundo plano e estou usando & para fazer isso, mas não o comando final, pois quero ver a saída do passageiro durante a execução):
- Alterar para meu diretório de trabalho
- Iniciar o faye como um processo em segundo plano
- Iniciar o watchr como um processo em segundo plano
- Iniciar passageiro
Até agora eu tenho isso
#!/bin/bash
cd ~/path/to/my/working-directory
rackup faye.ru -s thin -E production &
watch refresh.watchr &
passenger start
Isso funciona bem, mas o problema surge quando eu preciso reiniciar todos esses processos. Eu primeiro tenho que rastrear todos os seus ids de processo e depois matá-los antes de executar o start-dev novamente. Por isso, gostaria de:
4) Digite um comando curto como "restart-dev", que rastreia os processos que eu executei anteriormente em segundo plano e depois os mato antes de executar o "start-dev" novamente. Ele precisa ser capaz de não lançar um erro se eu tiver desligado qualquer um deles manualmente e não tiver desligado acidentalmente um processo incorreto.