shutdown nach x Sekunden?

Joshua

Well-Known Member
Hi,

kann ich mit dem shutdown-Befehl den Rechner auch nach, sagen wir, 10 Sekunden rebooten, oder geht das nur minutenweise?

Hab sowas wie "shutdown -r 0.1" probiert (sollte 0,1 Minuten = 6 Sekunden heissen :) ), aber das nimmt er als 0 Minuten und kurvt sofort runter :(

Bei Google hab ich "shutdown -r -g10" gefunden aber -g gibts bei FreeBSD nicht :(

Grüsse
Joshua
 
Aus der man page:
Code:
Time is the time at which shutdown will bring the system down and
may be the word now (indicating an immediate shutdown) or specify
a future time in one of two formats: +number, or yymmddhhmm,
where the year, month, and day may be defaulted to the current
system values.  The first form brings the system down in number
minutes and the second at the absolute time specified.

Scheint nur Minutenweise zu gehen... oder eben mit der absoluten Zeitangabe auch Sekundenweise ;)

Gruß
Skara
 
Nimm "sleep", der nimmt als Argument Sekunden meine ich. Also sowas wie

Code:
sleep 10 && halt -p
Dann sollte er nach 10 Sekunden nix tun den Runterfahrenbefehl ausführen.

Gruß, I.MC
 
Das mag sein, aus dem Titel habe iach aber verstanden, dass er den Rechner runterfahren will. Wenn es denn daran liegen soll, dann kann man doch "halt -p" mit "reboot" ersetzen. Dann macht er den Reboot nach den gewünschten Sekunden....

Gruß, I.MC
 
Morgähn,

erstmal danke für eure Antworten. Also Hintergrund der ganzen Sache ist, dass ich den Rechner über ein PHP-Sktipt runterfahren bzw. rebooten will. Wenn ich sowas mache wie "exec (reboot);" ist zwar auf dem Bildschirm zu lesen

Code:
Aug 31 07:48:13 myserver halt: rebooted by root
Aug 31 07:48:13 myserver syslogd: exiting on signal 15

Und dann noch was mit Apache und core dumped. Ich vermute mal, der Apache mag kein abruptes Runterfahren über ein Skript und hängt sich dann irgendwie auf. In diesem Stadium kann dann weder über das Netz noch über die Tastatur irgendwas machen, das einzige was geht ist ein "Strg-Alt-Entf" und dann rebootet er auch normal.

Wenn ich vorher ein "exec (sleep 10);" einbaue, passiert das gleiche, da ja das PHP-Skript einfach für 10 Sekunden nix macht.

Mit "exec (shutdown -r 1);" funktionierts, aber dann dauert es halt eine Minute, was etwas nervig ist. Ich denk mal 10 Sekunden müssten für den Apache auch genug sein um sich seelisch und moralisch auf das Runterfahren vorzubereiten ;)
 
Zuletzt bearbeitet:
Ihr sollte euch mal alle bitte die manpages shutdown(8) und reboot(8) bzw. halt(8) durchlesen.

Du willst weder reboot noch halt verwenden. Sondern sleep 10; shutdown -r now.
 
Warum willst du nach 10 Sekunden runterfahren?
Wenn du der einzige auf der Maschine bist tut es ein shutdown -[rhp] now und falls andere da sind reichen die 10 s wohl kaum zum "fliehen".
Sofort nach dem Befehl kannst auch bei now noch ^D drücken, falls dir deine Shell Historie lieb und teuer ist - oder einfach ein && logout an das shutdown dranhängen.

Anekdote:
Ich musste mal eine HPUX Kiste runterfahren und habe ein shutdown -h 10 losgelassen - und einigermaßen blöd aus der Wäsche geschaut als das Ding nach 10 SEKUNDEN anfing runterzufahren - von den Beschwerden der Leute, denen ich gesagt habe, dass die Kiste erst in 10 min weg ist, wollen wir mal garnicht reden.
Was lernen wir daraus? Auf einem fremden *nix erstmal man page lesen, bevor man was dummes tut.
Vor killall sei auch gewarnt. (;
 
@Joshua:
Könntest du dein PHP Script mal bitte hier posten (oder via PM), ich möchte mir sowas auch noch kurz schreiben, daher.

würde mich freuen.
 
MrFixit schrieb:
Ihr sollte euch mal alle bitte die manpages shutdown(8) und reboot(8) bzw. halt(8) durchlesen.

Du willst weder reboot noch halt verwenden. Sondern sleep 10; shutdown -r now.
Kann dir nicht folgen, was soll ein shutdown da anderes machen wenn es um reboot und runterfahren geht? Abgesehen davon, dass ich Usern eine Nachricht zukommen lassen könnte, was bei "-r now" nix bringt. Sehe ich jetzt nicht Wald vor lauter Bäumen nicht,?

Gruß, I.MC
 
@Joshua:
es geht dir doch eigentlich "nur" darum, dass du vor dem runterfahren noch schnell deinen apache ausmachst, oder?

könntest du nicht auch einfach ein:

Code:
apachectl stop && shutdown -p now

würde das nicht vollkommen ausreichen?
 
Ja, es geht wirklich nur darum dass der Apache beim Runterfahren hängt.

@hobby: viel zu posten hab ich noch nicht, im Moment hab ich einfach einen Link auf eine test.php und die sieht so aus:

PHP:
<?php
exec("reboot");
?>

apachectl stop && shutdown -p now klappt leider auch nicht, dann beendet sich nur der Apache, und sobald der nicht mehr läuft kann er auch nicht mit dem Skript weitermachen also das shutdown auch nicht mehr ausführen :confused:

Hab statt exec auch shell_exec und system versucht und ausserdem ein externes Skript wo drinsteht

sleep 10
reboot

und dann halt exec("bla.sh") oder so ähnlich.

führt aber alles zum gleichen Ergebnis: er fängt an, runterzufahren, dann kommt sowas wie

Code:
pid 145 (httpd), uid 0: exited on signal 11 (core dumped)

und dann geht nur noch Strg-Alt-Entf :(
 
hast ein externes versucht wo der apache gestopt wird und dann shutdown oder reboot oder was auch immer?
bei dem was du geschrieben hast war im externen nur sleep und shutdown oder nicht?

kannst ihn auch extern mit der funktion pskill :http://www.bsdforen.de/showthread.php?t=612&highlight=pskill
stopen, musst dann halt das kill -9 ersetzten durch was sanfteres
 
Zuletzt bearbeitet:
jetzt habe ich mal eine frage:

WIESO geht das überhaupt?

wenn auf deinem server eine *.php ist, wo nur der befehl drin steht.....dann führt er diesen befehl doch als user "www" aus....oder je nachdem, wie der apacheuser heißt...

warum kommt nicht "permission denied" pder sowas?
ich meine sonst könnte ich doch auch deine festplatte einfach so löschen, mit einem kl. befehl in einer php datei !?!??

steh ich grade aufm schlauch? falls ja, helft mir! :D
 
@d4mi4n: hab ich auch versucht. Aber in dem Moment, wo der Apache stoppt, bricht auch das Skript ab. Somit kommt es also garnicht zu sleep oder gar zu reboot.

@hobby: Im Prinzip ja, aber ich hab den Apache als root laufen :eek:

Bevor ich jetzt Haue kriege: Ich weiss dass es eine schwere Sünde ist, apache als root laufen zu lassen, aber der ist von aussen nicht erreichbar, und da ich auch diverse Systemdateien mittels php editieren will, schien mir das so für den Moment am einfachsten zu sein :)
 
I.MC schrieb:
Kann dir nicht folgen, was soll ein shutdown da anderes machen wenn es um reboot und runterfahren geht? Abgesehen davon, dass ich Usern eine Nachricht zukommen lassen könnte, was bei "-r now" nix bringt. Sehe ich jetzt nicht Wald vor lauter Bäumen nicht,?

Anscheinend, du uebersiehst naemlich alle Skript in /usr/local/etc/rc.d und /etc/rc.d die beim runterfahren mit shutdown(8) sauber ausgefuehrt werden. Bei reboot(8) werden einfach alle Prozesse gekillt. Kein Wunder, dass Apache mit einem sig11 wegraucht.

Merke
shutdown = single user + halt/reboot
 
@MrFixit

Unter den man page von shutdown steht nichts dazu, nur, dass man halt entweder halt oder reboot auslösen kann mittels entsprechernde Option zu entsprechender Zeit. Unter reboot/halt(8) steht jedoch, dass stets vorher Prozesse ordentlich runtergefahren werden... somit wird da nichts einfach gekillt!

DESCRIPTION
The halt and reboot utilities flush the file system cache to disk, send
all running processes a SIGTERM (and subsequently a SIGKILL) and, respec-
tively, halt or restart the system. The action is logged, including
entering a shutdown record into the wtmp(5) file.

Mmh....

Gruß, I.MC
 
Es macht schonmal einen Unterschied, ob man kill <pid-of-apache> oder apachtectl stop ausfuehrt. Bei Datenbanken ist das ganze noch extremer. Schau dir mal die Skripte in /usr/local/etc/rc.d/ an. Da wird meistens noch einiges aufgeraeumt bevor der Prozess eigentlich runtergefahren wird.

Desweiteren hat man in /etc/rc.d/ einige Skript die beim shutdown noch ausgefuehrt werden wollen. Z.B. mixer, random, nfsclient, ...
 
Ah ok, da steht ja, dass es bei nur -r -p etc ja init nutzt um das System runteryufahren etc. Ich habe keine Ahnung von Init, denke aber mal, dass das fuer die Skripte in rc.d zustaendig ist...

Gruss, I.MC
 
Zurück
Oben