
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.
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.