
¿Cómo puedo encontrar el descriptor de archivo desde el que un proceso lee la entrada?
Fondo
corro unvite(pronunciado veet) cuando se desarrolla en un contenedor Alpine. Actualmente inicio sesión en el contenedor e inicio Vite manualmente con el comando vite --host '0.0.0.0' --port 3000
, se hace cargo de la consola y permite la entrada de forma interactiva. Entonces puedo hacer cosas como reiniciar el servidor cuando los cambios de archivos no se registran en el montaje de enlace de volumen de Docker en el contenedor (Windows es una tontería).
Problema
Me gustaría que el contenedor ejecute este comando al inicio. Cuando lo hago, pierdo la capacidad de enviar comandos porque Docker no los transmite.
Luego hice un script que se ejecuta pnpm run dev &
; Pensando que podría obtener el ID del proceso del servidor Vite y luego enviar información a ese descriptor de archivo echo "h" > /proc/17/fd/0
, pero no sucede nada. También probé el PID 33. Supuse que estaba enviando información al lugar equivocado. Pero, ¿cómo puedo encontrar el descriptor de archivo correcto, si lo hay?
Salida PS en contenedor
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
Descargo de responsabilidad: esto ahora debería resolverse con Docker Watch, ya que ya no necesitaré reiniciar manualmente el servidor cuando cambien los archivos; pero quiero ver si es posible ya que esto puede ser útil para otros casos. Además, no me avergüences por ejecutar como root, normalmente no hago eso.