Hi. Ich habe folgendes Problem.
Mein Rechner geht zur angegebenen Zeit einfach nicht an.
ACPI usw. ist alles in Ordnung.
Bei date schreibt er mir
Bei hwclock schreibt er mir
wenn ich ein
mache, geht er nicht an
mache ich aber ein :
, dann geht er um 19:35 an.
Code
Mein poweroff.pl skript ist dieses vom linvdr :
#!/usr/bin/perl
##
# by Thomas Koch <tom@linvdr.org>
##
use POSIX qw(strftime sprintf);
use Time::Local;
my $PROC_ALARM = "/proc/acpi/alarm";
my $STARTUPMARGIN = "300";
my $DEBUG = 0;
sub dprint {
$_ = join("", @_);
chomp;
print "$_\n" if($DEBUG);
}
sub setTime {
system("hwclock -w");
}
sub setAlarm {
my $Next = shift;
setTime();
dprint("Next event at ", strftime("%d.%m.%Y %H:%M:%S", localtime($Next)));
dprint("Programming wakeup at ", strftime("%d.%m.%Y %H:%M:%S", localtime($Nex
system(sprintf("echo \"%s\" > %s", strftime("%Y-%m-%d %H:%M:%S", localtime($N
}
sub PowerOff {
# system("/bin/busybox poweroff") if(!$DEBUG);
system("/sbin/shutdown -h now") if(!$DEBUG);
}
sub NextTwoOclock {
my $now = time();
# Array-Format: ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
my @today = localtime($now);
@today[0..2] = (0, 0, 2);
# get today 2:00 in seconds since epoc
my $TwoOclock = timelocal(@today);
# Check: Is today 2:00 in future or past?
if($now < $TwoOclock) {
# Today two oclock is in future
return $TwoOclock;
} else {
# We're past two oclock, next two oclock is tomorrow (+86400s)
return $TwoOclock+86400;
}
}
my $TwoOclock = NextTwoOclock();
if(scalar(@ARGV)) {
# called from vdr
die "Wrong parameter count\n" if(scalar(@ARGV) != 5);
die "$PROC_ALARM missing" if(!-e $PROC_ALARM);
my($Next, $Delta, $Channel, $Recording, $UserShutdown) = @ARGV;
# find out: Next start at 2:00 or at next timer?
if(($Next) && ($Next < $TwoOclock)) {
setAlarm($Next);
} else {
setAlarm($TwoOclock);
}
PowerOff();
} else {
# called from cmdline
$next = `svdrpsend.pl next abs`;
if($next =~ /550 No active timers/) {
# XXX turns alarm off, at least, i hope so
#system("echo \"0003-10-20 99:00:00\" > /proc/acpi/alarm");
#setTime();
# start every day at 2:00 local time for EPG update & Co.
setAlarm($TwoOclock);
PowerOff();
} elsif($next =~ /250 \d+ (\d+)/) {
# find out: Next start at 2:00 or at next timer?
if($1 < $TwoOclock) {
setAlarm($1);
} else {
setAlarm($TwoOclock);
}
PowerOff();
} else {
print "HELP! What to do? ($next)\n";
}
}
Alles anzeigen
Was muss ich denn an dem Skript ändern, damit er zur gewünschten zeit angeht (2Stunden zurückrechnen) ???