Oliver <os(at)kobo24.de> wrote:
> shared Verzeichnis (denke das kan Vmware), in die Datei legt Windows beim
> starten eine (leere) Textdatei an. Fürs runterfahren eine Batch nutzen, die
> erst die Textdatei löscht, 180 Sekunden Sleep und dann wie oben per RUNDLL32
> oder shutdown.exe die Kiste herunterfährt/neustartet. Sleep.exe war mal in
> einem Resource-Kit meine ich.
>
> Der FreeBSD-Gast prüft jede Minute per Cron ob die Datei da ist und wenn sie
> weg ist fährt er runter.
>
> Was für eine kranke Konstruktion :)
In der Tat ...
Wenn man eine Datei als Semaphore "missbrauchen" will, wird
im allgemeinen eher eine FIFO (named pipe) verwendet. Die
Seite, die warten soll, macht einfach ein "read" aus dieser
FIFO und wird dadurch solange blockiert, wie die FIFO leer
ist. Wenn die andere Seite das Signal geben will, schreibt
sie einfach irgendwas in die FIFO. Das "read" wacht dann
auf und macht mit dem Skript weiter (in diesem Fall wäre
das dann shutdown).
Also gastseitig:
FIFO=/shared/shutdown-semaphore
rm -f $FIFO
mkfifo $FIFO
read DUMMY < $FIFO
shutdown -h now
Und hostseitig lediglich:
echo foo >> /shared/shutdown-semaphore
Vorteil gegenüber einer normalen Datei: Man muss nicht
regelmäßig per cron (oder sonstwie) herumpollen, und das
Signal wird _sofort_ ausgelöst, nicht erst bei nächsten
Poll-Intervall.
Allerdings weiß ich nicht, ob Windows auch FIFOs unter-
stützt ... Mir sind dort noch keine untergekommen.
Wenn nicht, gäbe es noch einen weiteren Trick, der ohne
FIFOs auskommt. Das sähe gastseitig dann so aus:
SEMA=/shared/shutdown-semaphore
rm -f $SEMA
echo foo > $SEMA
tail -f $SEMA | head -1 > /dev/null
shutdown -h now
»tail -f« wartet auf weiteren Input von der Datei. Da das
Kommando »head -1« nur eine Zeile liest und dann abbricht,
terminiert das tail-Kommando aufgrund eines SIGPIPE, sobald
die zweite Zeile kommt (vom hostseitigen »echo >> ...«).
Das waren jetzt nur allgemeingültige Kochrezepte, die man
ihn ähnlichen Situationen verwenden kann. Ob das in dem
konkreten Fall mit Windows + VMWare auch funktioniert, muss
man ausprobieren.
Aber ein anderes Problem hat man in jedem Fall, egal wie
man die Signalisierung löst: Woher weiß das Host-System,
wann der Gast mit dem Shutdown fertig ist? Er könnte
einfach grundsätzlich drei Minuten warten (in der Hoffnung,
dass das immer ausreicht), aber eine befriedigende Lösung
ist das nicht.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd $ dd if=/dev/urandom of=test.pl count=1 $ file test.pl test.pl: perl script text executable To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Mon 16 Jul 2012 - 14:26:35 CEST