
프로세스가 입력을 읽는 파일 설명자를 어떻게 찾을 수 있습니까?
배경
나는비테(veet로 발음) Alpine 컨테이너에서 개발할 때 서버. 현재 컨테이너에 로그인하고 명령을 사용하여 Vite를 수동으로 시작하면 vite --host '0.0.0.0' --port 3000
콘솔을 인계받아 대화식으로 입력할 수 있습니다. 따라서 파일 변경 사항이 컨테이너의 Docker 볼륨 바인드 마운트에 등록되지 않는 경우(Windows는 어리석음) 서버를 다시 시작하는 등의 작업을 수행할 수 있습니다.
문제
컨테이너가 시작 시 이 명령을 실행하도록 하고 싶습니다. 그렇게 하면 Docker가 명령을 전달하지 않기 때문에 명령을 보내는 기능을 잃게 됩니다.
그런 다음 실행되는 스크립트를 만들었습니다 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로 해결되어야 합니다. 하지만 이것이 다른 경우에도 유용할 수 있으므로 가능한지 확인하고 싶습니다. 또한 루트로 실행한다고 부끄러워하지 마십시오. 저는 일반적으로 그렇게 하지 않습니다.