ファイル記述子を介して対話型プロセスに入力を送信する

ファイル記述子を介して対話型プロセスに入力を送信する

プロセスが入力を読み取るファイル記述子を見つける方法は?

背景

ベルテル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を使用して解決する必要がありますが、他の場合にも役立つ可能性があるため、これが可能であることを確認したかったです。また、私がrootとして実行しているという事実を恥じないでください。私は一般的にそうしません。

ベストアンサー1

おすすめ記事