não pode capturar o PID do processo em segundo plano iniciado em um sub-shell que está sendo executado em um heredoc passado para 'sudo su'

0

Eu estou tentando capturar o PID de um processo iniciado em um sub-shell para que eu possa verificar se o processo foi iniciado corretamente, o processo em questão é um aplicativo puma.

sudo su - $APPUSER <<-BASH
    PID="\$(bundle exec puma -C config/puma.rb)"

    "\$(bundle exec puma -C config/puma.rb & export PID=$1)"

    "\$(bundle exec puma -C config/puma.rb &)"

    PID="\$(ps aux | grep \"[p]uma.*[u]nix.*$APPNAME\" | awk '{ print \}')"
BASH

e não retorna nada, estranhamente, se eu fizer algum daqueles sem um rodeio "" eu recebo este erro:

-bash: line 22: [26740]: command not found

o número no [] é o pid, eu sei disso porque eu recebo isso quando eu executo o script novamente (eu verifico se o pid existe):

app is running with pid: 26740

Acho que isso está acontecendo porque estou fazendo os comandos em um heredoc e passando-os para sudo su

Como obtenho o pid do processo em segundo plano que iniciei em um sub-shell.

    
por Thermatix 24.10.2017 / 15:34

1 resposta

3

Não é possível substituir o valor PID interno. Use variáveis de ambiente minúsculas.

    
por 24.10.2017 / 15:44