
Как найти дескриптор файла, из которого процесс считывает входные данные?
Фон
Я управляюВите(произносится как вит) сервер при разработке в контейнере Alpine. В настоящее время я вхожу в контейнер и вручную запускаю Vite с помощью команды vite --host '0.0.0.0' --port 3000
, он берет на себя управление консолью и позволяет вводить данные интерактивно. Поэтому я могу делать такие вещи, как перезапуск сервера, когда изменения файлов не регистрируются на монтировании привязки тома Docker в контейнере (Windows глупая).
Проблема
Я хотел бы, чтобы контейнер запускал эту команду при запуске. Когда я это делаю, я теряю возможность отправлять команды, так как Docker не передает их дальше.
Затем я создал скрипт, который запускается 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, я обычно этого не делаю.