Отправить входные данные в интерактивный процесс через файловый дескриптор

Отправить входные данные в интерактивный процесс через файловый дескриптор

Как найти дескриптор файла, из которого процесс считывает входные данные?

Фон

Я управляюВите(произносится как вит) сервер при разработке в контейнере Alpine. В настоящее время я вхожу в контейнер и вручную запускаю Vite с помощью команды vite --host '0.0.0.0' --port 3000, он берет на себя управление консолью и позволяет вводить данные интерактивно. Поэтому я могу делать такие вещи, как перезапуск сервера, когда изменения файлов не регистрируются на монтировании привязки тома Docker в контейнере (Windows глупая).

Проблема

Я хотел бы, чтобы контейнер запускал эту команду при запуске. Когда я это делаю, я теряю возможность отправлять команды, так как Docker не передает их дальше.

Контейнер, на котором запущен сервер Vite

Затем я создал скрипт, который запускается pnpm run dev &; думая, что смогу получить идентификатор процесса сервера Vite, а затем отправить ввод в этот файловый дескриптор с помощью echo "h" > /proc/17/fd/0, но ничего не происходит. Я также попробовал PID 33. Я предположил, что отправляю ввод не туда. Но как мне найти правильный файловый дескриптор, если он есть.

Выход PS в контейнере

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

Отказ от ответственности: Теперь это должно быть решено с помощью Docker watch, поскольку мне больше не нужно будет вручную перезапускать сервер при изменении файлов; но я хочу посмотреть, возможно ли это, поскольку это может быть полезно в других случаях. Кроме того, не стыдите меня за то, что я работаю как root, я обычно этого не делаю.

Связанный контент