
Wie finde ich den Dateideskriptor, aus dem ein Prozess Eingaben liest?
Hintergrund
Ich betreibe einVite(ausgesprochen „veet“) Server bei der Entwicklung in einem Alpine-Container. Derzeit melde ich mich beim Container an und starte Vite manuell mit dem Befehl vite --host '0.0.0.0' --port 3000
, es übernimmt die Konsole und ermöglicht interaktive Eingaben. So kann ich beispielsweise den Server neu starten, wenn Dateiänderungen nicht beim Docker-Volume-Bind-Mount im Container registriert werden (Windows ist albern).
Problem
Ich möchte, dass der Container diesen Befehl beim Start ausführt. Wenn ich das tue, kann ich keine Befehle mehr senden, da Docker sie nicht weiterleitet.
Ich habe dann ein Skript erstellt, das ausgeführt wird pnpm run dev &
. Ich dachte, ich könnte die Prozess-ID des Vite-Servers abrufen und dann mit Eingaben an diesen Dateideskriptor senden echo "h" > /proc/17/fd/0
, aber es passiert nichts. Ich habe auch PID 33 ausprobiert. Ich nahm an, dass ich die Eingaben an die falsche Stelle sende. Aber wie kann ich den richtigen Dateideskriptor finden, falls es einen gibt?
PS-Ausgabe im Container
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
Haftungsausschluss: Dies sollte jetzt mit Docker Watch gelöst sein, da ich den Server nicht mehr manuell neu starten muss, wenn sich Dateien ändern. Ich möchte jedoch prüfen, ob dies möglich ist, da dies in anderen Fällen nützlich sein kann. Machen Sie mir auch keine Vorwürfe, wenn ich als Root arbeite, das mache ich normalerweise nicht.