Ich bin mir nicht sicher, dass das möglich ist, aber ich habe oft gedacht, dass und einige Lösungen mich erstaunt haben. Ist es möglich, das Äquivalent des folgenden Skript zu erstellen, ohne dass zwei Prozesse zu schaffen (in diesem Fall ist es klar, zwei Prozesse geschaffen werden, weil es ein Rohr):Verwenden Sie inotifywait -m im Skript, ohne einen zusätzlichen Prozess zu erstellen?
#!/bin/bash
EVENTS="CREATE,CLOSE_WRITE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r ~/Desktop/testing | \
while true; do
read TMP
echo "${TMP}" >> ~/Desktop/eventlog
done
Beachten Sie, dass ich innerhalb der while-Schleife will Zugang zu der Veranstaltung haben.
Es scheint mir, dass eine Pipe notwendig ist, weil wir mit einem Prozess schreiben und von einem anderen lesen müssen. Aber vielleicht gibt es einen Trick?
ah ja das macht, was ich versucht habe zu erreichen. Interessant, ich frage mich, wie es möglich ist, das zu implementieren. Ich denke, sie erstellen keinen neuen Prozess, sondern einen neuen Thread? Es scheint, wenn man schreibt und man liest, muss es zwei "Somethings" geben. Ich schätze zwei Threads. –
Nein, es wird nur der erste Befehl in einem neuen Prozess und die Schleife im aktuellen Prozess ausgeführt, anstatt zwei neue Prozesse zu verzweigen und zu warten. – chepner