• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Shutdown, 3h nach dem Booten

ChrisP

Newbie
Ich möchte einen Rechner täglich per Zeitschaltuhr für ca. drei Stunden laufen lassen. Kurz bevor die Zeitschaltuhr den Saft abdreht soll der Rechner sauber einen shutdown ausgeführt haben.
Ich habs mal mit "shutdown -h [ZeitInMinuten]" in der /etc/init.d/boot.local probiert. Das hat aber nur zum "Einfrieren" während des Bootens geführt. Auch die "man cron" bzw "man crontab" haben mir nicht wirklich geholfen.

Wie soll ich das machen? Kann mir jemand eine detailierte Anleitung geben?


[gelöst]: in der "/etc/init.d/boot.local" hilft bei mir der Eintrag:
"sudo shutdown -h 205 &"


Aber lest mal in Ruhe selbst nach, da gibts noch viel Wissenswertes!
Danke für Eure Hilfe!
Christian
 

duddits

Member
Hi,

entweder kannst du es mit shutdown -t 10800 -h
die führt einen shutdown in 10800 Sekunden (3 Stunden aus).

Du kannst es auch noch einfacher machen in dem du einfach
in /etc/bash.bashrc.local oder ~/.profile ein Script aufrufst
welches einen shutdown in 3 Stunden ausführt.
z.B. so:
./~/meinsrcipt

#! /bin/sh
# ~/meinscript
sleep 10800 && shutdown -h now
#$(sleep 10800 && shutdown -h now) &

Ich glaube so oder so ähnlich kann man es lösen.
Bin mir beim Script nicht ganz sicher evtl. kann dies dazu führen das PC hochfährt du dich anmledes und du nichts machen kannst, und dann der PC runterfährt. :wink:
Falls das Passiert musst du mit Strg+C das abrechen und den Eintrag löschen. Probiers nachher mal selber zu Hause.
Eleganter wäre natürlich ein Init-V-Script.

Gruß duddits
 

rolle

Guru
Ich habs mal mit "shutdown -h [ZeitInMinuten]" in der /etc/init.d/boot.local probiert. Das hat aber nur zum "Einfrieren" während des Bootens geführt. Auch die "man cron" bzw "man crontab" haben mir nicht wirklich geholfen.
SuSE arbeitet die Befehle nacheinander ab. Wenn also der Befehl 'shutdown' noch nicht erledigt ist, dann passiert weiter nichts. Setze also ein Leerzeichen, gefolgt von einem '&' an das Ende Deines Befehls in der boot.local und der Befehl wird im Hintegrund ausgeführt, der restliche Bootvorgang geht weiter.
Oder Du baust einen Cronjob zum Zeitpunkt '@reboot' mit denselben Einträgen.
 
A

Anonymous

Gast
dem Rechner beim hochfahren schon einen shutdown mitzugeben halte ich für keine gute Idee, ich befürchte mal, da wird gleich beim hochfahren ein "nologin" gesetzt, und als normaler User hat man gar keine Chance sich anzumelden.

robi
 
OP
ChrisP

ChrisP

Newbie
Ich habe per pn folgendes erhalten:

Hallo!

das von dir beschriebene shutdown -h[Minuten] funktioniert für mich
hast du mal versucht dieses kaufmannsund "&" dahinterzusetzen? kann sein das die staperlverarbeitung sonst auf das beenden von shutdown wartet, was ja blödsinn ist. versuch mal was
"shutdown -h 180 &"
in dem bootscript bewirkt.

gruss, rainer

Hat funktioniert.

Vielen Dank für Eure Unterstützung! Mal wieder rasant schnell.
thx
Christian

Korrektur: Ich setzte dem ganzen Befehl noch ein "sudo " voran, sonst fährt er nicht korrekt ´runter bzw schaltet den Rechner ab.

Ad.: Ich melde mich sowieso nur als root an, da der Rechner als Webserver arbeitet und sonst niemand daran arbeitet.



P.S.: An den Mod: Ich glaube das kann jetzt als gelöst gekennzeichent werden. (Oder muss ich das selbst tun?)
[/quote]
 

TeXpert

Guru
duddits schrieb:
entweder kannst du es mit shutdown -t 10800 -h
die führt einen shutdown in 10800 Sekunden (3 Stunden aus).
[...]
#! /bin/sh
# ~/meinscript
sleep 10800 && shutdown -h now
#$(sleep 10800 && shutdown -h now) &

erst gibtst Du die richtige idee (-t FOOBAR) und dann baust du sowas mit sleep nach.... nimm lieber ide richtige Zeit-Angabe,

1. läuft das ohne weiteren Prozess (sleep)
2. kann man das auch wieder einfach canceln ohne Prozesse abzuschießen...

man shutdown sollte sehr erhellend sein
 

duddits

Member
@TeXpert
Ja hast ja recht. Hab mir gedacht ich zeig 2 Möglichkeiten, ich hatte mir schon gedacht, dass beim Script ein Fehler drin ist.

mfg duddits
 
Moin Moin

Ansonsten müsste es auch mit nem eintrag in der cron gehen:

Script:
Code:
#/bin/bash
shutdown -h now

und dann in der cron:

* 3 * * * root /VerzeichnisZumScript/script.sh

MFG Havoc
 

regexer

Advanced Hacker
Havoc_1986 schrieb:
Code:
#/bin/bash
shutdown -h now

und dann in der cron:

* 3 * * * root /VerzeichnisZumScript/script.sh
Bloß nicht! Dieses script macht jede Nacht um 3 Uhr einen shutdown. Das ist glaube ich nicht gewollt. Außer du bootest um punkt Mitternacht...
 
Also ich würde das "at" Paket installieren und dann als root aufrufen:

echo "init 0" | at now +3 hour

Haveaniceday

PS: Weiss nur nicht, wie es ist, wenn der Rechner vorher runtergefahren wird.
Dann könnte der Rechner beim nächsten Hochfahren den Befehl noch machen...
Dafür gäbe es den atrm
 

TeXpert

Guru
viele Wege führen nach Rom :) aber @haveaniceday welchen Vorteil siehst Du bie at gegenüber einem sauberen shutdown -d SOMETIMES?
 

scg

Hacker
@ChrisP:
selber als [solved] oder [gelöst] ist prima, haste ja gemacht. danke.

guck hier:
http://www.linux-club.de/viewtopic.php?t=30721
 
sorry notexp, Recht haste!

Aber mit:
Code:
* */3 * * * root /VerzeichnisZumScript/script.sh
in der Cron sollte das gehen, denke ich.

Oder liege ich da falsch?

MFG Havoc
 
A

Anonymous

Gast
Havoc_1986 schrieb:
Aber mit:
Code:
* */3 * * * root /VerzeichnisZumScript/script.sh
in der Cron sollte das gehen, denke ich.

Oder liege ich da falsch?

Damit startest du das Script um 3 6 9 12 ... Uhr und zwar unabhängig von der Zeit zu der der Rechner hochgefahren ist, hier soll der Rechner aber 3 Stunden laufen, egal wenn die Zeitschaltuhr ihn hochfährt.

robi
 
TeXpert schrieb:
viele Wege führen nach Rom :) aber @haveaniceday welchen Vorteil siehst Du bie at gegenüber einem sauberen shutdown -d SOMETIMES?

Nur so ein "Gefühl". Im einzelnem:
- ( hintergrund) &
=> Hatte schon Prozesse, welche beim Terminal beenden auch beendet wurden. ( Stichwort SIGHUP gesendet )
- was passiert, wenn jemand das Fenster mit dem "shutdown.." schliesst ? "Überlebt" Shutdown. "at" hat das Problem nicht.
- now +3 hour
=> spare mir das umrechnen wieviel Sekunden sind das.
- Hab mich sehr an "at" mit seinen Zeitangaben gewöhnt.
"at now", "at midnight" , "at next week", "at next monday"
Einfach nur aus "Befehl" echo 'Befehl' | at ... machen
- keine env Umgebungsprobleme wie bei "cron" ( at nimmt die aktuelle Umgebung ).

Wäre auch OK: echo "shutdown -h now" | at now +3 hour

Also als Zusammenfassung: nix greifbares, bin mir aber sicherer, dass es ohne große Problem geht.

Haveaniceday
 

TeXpert

Guru
shutdown läuft nicht als eigener Prozess sondern sendet die Info an den init-Prozess

man shutdown schrieb:
-t sec Tell init(8) to wait sec seconds between sending processes the
warning and the kill signal, before changing to another run-
level.

somit sollte das keine Probleme machen...
 
Oben