Na maioria das vezes, quando seu aplicativo falha, ele precisa ser reiniciado manualmente. Isso pode ser bastante inconveniente, especialmente se você tiver muitos aplicativos sendo executados em seu servidor. A boa notícia é que o pm2 facilita o gerenciamento de processos com a opção de reinício automático.

Para começar, certifique-se de ter o pm2 instalado em seu sistema. Você pode instalá-lo a partir do npm usando o comando abaixo:

```

npm install pm2 -g

```

Agora, vamos ver como configurar a funcionalidade de reinício automático:

1. Primeiro, inicie o seu aplicativo usando o pm2 com o seguinte comando:

```

pm2 start app.js --name myapp

```

2. Defina a opção 'autorestart' como true usando o seguinte comando:

```

pm2 set autorestart true

```

Isso garantirá que o aplicativo seja reiniciado automaticamente caso ocorra uma falha.

3. Verifique se a opção foi definida corretamente usando o seguinte comando:

```

pm2 show myapp

```

Isso mostrará as configurações detalhadas do aplicativo.

Agora, seu aplicativo será automaticamente reiniciado pelo pm2 se ocorrer uma falha. Isso é particularmente útil em cenários de produção onde a disponibilidade do aplicativo é crítica.

Outra opção que você pode usar com o pm2 é o 'watch', o que pode ser muito útil durante o desenvolvimento. Quando a opção 'watch' é definida como true, o pm2 verifica automaticamente o código-fonte do aplicativo em busca de alterações e reinicia o aplicativo caso ocorram.

Por exemplo, se você estiver desenvolvendo um servidor Node.js, poderá executar o seguinte comando:

```

pm2 start app.js --name myapp --watch

```

Agora, sempre que você fizer alterações no código-fonte, o pm2 reiniciará automaticamente o aplicativo para que as alterações sejam refletidas.

Em resumo, o pm2 é uma ferramenta poderosa que facilita o gerenciamento de processos em sua infraestrutura Node.js. A capacidade de reiniciar automaticamente os aplicativos em caso de falhas é especialmente útil em cenários de produção onde a disponibilidade do aplicativo é crítica. Além disso, a opção 'watch' é muito útil durante o desenvolvimento, permitindo que você faça alterações no código-fonte sem precisar reiniciar o aplicativo manualmente.