Como executar o processo em background e obter seu pid para criar o nome do arquivo de log

0

Quando faço

node process.js 1>$LOGFOLDER\$$.log

o PID do processo criado se torna o nome do arquivo. Eu quero executar este processo em segundo plano, como eu quero executar muitas instâncias do mesmo process.js . Então, eu adicionei & no final,

node process.js 1>$LOGFOLDER\$$.log &

Isso fez com que o processo fosse executado em segundo plano, mas o PID (o nome do arquivo) está sempre errado. Eu registrei o ID do processo usando $! após a linha acima. No primeiro caso, a saída de $! e o nome do arquivo de log são os mesmos. Mas no segundo caso eles não são. Fazer o processo para ser executado em segundo plano usando & está fornecendo PID diferentes no espaço reservado $$ . Por que isso está acontecendo e como posso fazer os dois funcionarem

    
por RaR 25.03.2017 / 13:50

1 resposta

1

Isso ocorre porque o processo em segundo plano é executado em uma subcamada. Para fazer o que você quer, você pode fazer isso:

LOGFOLDER="$LOGFOLDER" bash -c 'node process.js 1>$LOGFOLDER.$$.log' &
    
por 25.03.2017 / 14:05