파일 설명자를 통해 대화형 프로세스에 입력 보내기

파일 설명자를 통해 대화형 프로세스에 입력 보내기

프로세스가 입력을 읽는 파일 설명자를 찾는 방법은 무엇입니까?

배경

나는베르테르Alpine 컨테이너(veet로 발음) 서버에서 개발하는 경우. 현재 저는 컨테이너에 로그인하고 vite --host '0.0.0.0' --port 3000콘솔을 인계받아 대화형 입력을 허용하는 명령을 사용하여 Vite를 수동으로 시작합니다. 따라서 파일 변경 사항이 컨테이너의 Docker 볼륨 바인드 마운트에 등록되지 않으면(Windows는 바보입니다) 서버를 다시 시작하는 등의 작업을 수행할 수 있습니다.

질문

컨테이너가 시작될 때 이 명령을 실행하도록 하고 싶습니다. 이렇게 하면 Docker가 명령을 전달하지 않기 때문에 명령을 보낼 수 없게 됩니다.

Vite 서버를 실행하는 컨테이너

그런 다음 실행되는 스크립트를 만들었습니다 pnpm run dev &. Vite 서버의 프로세스 ID를 얻은 다음 해당 파일 설명자에 입력을 보낼 수 있다고 생각했지만 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를 사용하여 해결해야 하지만 다른 경우에도 유용할 수 있으므로 이것이 가능한지 확인하고 싶었습니다. 또한 제가 루트로 실행하고 있다는 사실을 부끄러워하지 마십시오. 저는 일반적으로 그렇게 하지 않습니다.

관련 정보