Enviar entrada para processo interativo por meio do descritor de arquivo

Enviar entrada para processo interativo por meio do descritor de arquivo

Como posso encontrar o descritor de arquivo do qual um processo lê a entrada?

Fundo

eu corro umVite(pronuncia-se veet) ao desenvolver em um contêiner Alpine. Atualmente eu faço login no container e inicio manualmente o Vite com o comando vite --host '0.0.0.0' --port 3000, ele assume o console e permite a entrada de forma interativa. Assim, posso fazer coisas como reiniciar o servidor quando as alterações do arquivo não são registradas na montagem de ligação do volume do Docker no contêiner (o Windows é bobo).

Problema

Gostaria que o contêiner executasse este comando na inicialização. Quando faço isso, perco a capacidade de enviar comandos, pois o Docker não os repassa.

Contêiner executando servidor Vite

Fiz então um script que roda pnpm run dev &; pensando que poderia obter o ID do processo do servidor Vite e enviar a entrada para esse descritor de arquivo com echo "h" > /proc/17/fd/0, mas nada acontece. Também tentei o PID 33. Presumi que estou enviando a entrada para o lugar errado. Mas como posso encontrar o descritor de arquivo correto, se houver algum.

Saída PS no contêiner

PID   USER     TIME  COMMAND
    1 root      0:00 node /usr/local/bin/pnpm run dev
   17 root      0:00 node /root/task-01/node_modules/.bin/../vite/bin/vite.js --host 0.0.0.0 --port 3000
   33 root      0:00 /root/task-01/node_modules/.pnpm/@[email protected]/node_modules/@esbuild/linux-x64/bin/esbuild --service=0.20.
   39 root      0:00 sh
   47 root      0:00 ps

Isenção de responsabilidade: isso agora deve ser resolvido com o Docker watch, pois não precisarei mais reiniciar manualmente o servidor quando os arquivos forem alterados; mas quero ver se é possível, pois pode ser útil para outros casos. Além disso, não me envergonhe por rodar como root, normalmente não faço isso.

informação relacionada