shutdown restart unter Windows

Begonnen von cotecmania, 28 Oktober 2013, 21:42:35

Vorheriges Thema - Nächstes Thema

iCure

Hi ChrisD,

die Lösung funktioniert super, allerdings starte ich seither meinen Server als Dienst. Durch Eingabe von "shutdown restart" wird dieser Dienst beendert, und der Server neu gestartet, allerdings nicht mit dem eigentlich erstellten Dienst.

Durch was läuft das ganze nun, wenn nicht über den eigentlichen Dienst?

ChrisD

Hallo,

Wenn du FHEM als Dienst startest ist der Code aus Beitrag 13 nicht nötig. In dem Fall wird der Dienst aus fhem.pl aus gestoppt und neu gestartet.

Ich habe nicht verstanden was du mit
Zitatallerdings nicht mit dem eigentlich erstellten Dienst
gemeint hast. Ob FHEM als Dienst startet kannst du in der Log-Datei sehen. Als Dienst gibt es den Eintragregistering fhem as Windows Service

Das Neustarten des Dienstes erfolgt allerdings nicht ganz sauber wie in Beitrag 12 beschrieben. Der folgende Code (statt dem aus Beitrag 13) sollte dies beheben:

sub
ShutdownRestartWin() {
if ($^O !~ m/Win/) {
CommandShutdown(undef,"restart");
} else {
DoTrigger("global", "SHUTDOWN", 1);
Log 0, "ShutdownRestartWin - Server shutdown";

foreach my $d (sort keys %defs) {
  CallFn($d, "ShutdownFn", $defs{$d});
}

WriteStatefile();
unlink($attr{global}{pidfilename}) if($attr{global}{pidfilename});
eval {
use Win32::Process;
use Win32::Daemon;

my $windir=$ENV{'windir'};
$windir='c:\windows' if (!defined $windir);
print $windir;
my $p;
if (($winService->{AsAService})) {
# use the OS SCM to start the service
Win32::Daemon::State( SERVICE_STOPPED );
Win32::Daemon::StopService();
Win32::Process::Create( $p,$ENV{'windir'}.'\system32\cmd.exe',"x /C \"(ping -n 1 -w 3000 1.1.1.1 & net start fhem)\"",0,NORMAL_PRIORITY_CLASS,"." );
} else {
Win32::Process::Create( $p,$ENV{'windir'}.'\system32\cmd.exe',"x /C \"(ping -n 1 -w 3000 1.1.1.1 & $^X $0 $attr{global}{configfile})\"",0,NORMAL_PRIORITY_CLASS,"." );
}
};
exit(0);
}
}
Damit sollte sowohl die Fehlermeldung
ZitatDienst "fhem server" wurde unerwartet beendet. Dies ist bereits x Mal passiert.
in der Ereignisanzeige wie auch das teilweise starten, stoppen und nochmal starten behoben sein.

Grüße,

ChrisD