Kurzzeitig fast alle Dienste abschalten und wieder zurück
Kurzzeitig fast alle Dienste abschalten und wieder zurück
Hi.
Ich habe einen kleinen virtuellen Server im Netz.
Es gibt Momente, in denen ich gerne mal alle Dienste abschalten und nach wenigen Sekunden wieder reinitialisieren möchte.
(praktisch wie ein Reboot ohne aber den Reset und den Kernelboot-Vorgang)
Warum?:
- Reboot dauert zw. 5 und 30 Minuten
- init 6 bzw. reboot wirken wie init 0 (XEN)
- Konfigurationstest in Zusammenhang mit den verschieden Diensten, um festzustellen, sollte er mal unbeaufsichtigt Bootet, das alles glatt geht.
Ich habe mir gedacht, init/runlevel 4 ist doch ungenutzt und wäre evtl. dafür eine Idee. ratsam?
Ich lösche also alles aus dem Verzeichnis /etc/rc4.d
Und schiebe jeden Dienst, den ich in /etc/init.d find als Symbolische Link in diese Verzeichnis.
Außer halt, reboot und sshd. (oder evtl. noch mehr?)
Dann noch ein K00-98 jeweils davor.
Und in die K99 schreibe ich sleep 15 und init 2 als Bash-Befehl.
Das das verrückt ist, ist klar. Aber ist es trotzdem ratsam?
Kann man die Ausgaben, die ich ja leider Virtuell nicht sehe, irgendwie abfangen bzw. auf /dev/pts/0 senden/weiterleiten lassen?
Gruß
Ich habe einen kleinen virtuellen Server im Netz.
Es gibt Momente, in denen ich gerne mal alle Dienste abschalten und nach wenigen Sekunden wieder reinitialisieren möchte.
(praktisch wie ein Reboot ohne aber den Reset und den Kernelboot-Vorgang)
Warum?:
- Reboot dauert zw. 5 und 30 Minuten
- init 6 bzw. reboot wirken wie init 0 (XEN)
- Konfigurationstest in Zusammenhang mit den verschieden Diensten, um festzustellen, sollte er mal unbeaufsichtigt Bootet, das alles glatt geht.
Ich habe mir gedacht, init/runlevel 4 ist doch ungenutzt und wäre evtl. dafür eine Idee. ratsam?
Ich lösche also alles aus dem Verzeichnis /etc/rc4.d
Und schiebe jeden Dienst, den ich in /etc/init.d find als Symbolische Link in diese Verzeichnis.
Außer halt, reboot und sshd. (oder evtl. noch mehr?)
Dann noch ein K00-98 jeweils davor.
Und in die K99 schreibe ich sleep 15 und init 2 als Bash-Befehl.
Das das verrückt ist, ist klar. Aber ist es trotzdem ratsam?
Kann man die Ausgaben, die ich ja leider Virtuell nicht sehe, irgendwie abfangen bzw. auf /dev/pts/0 senden/weiterleiten lassen?
Gruß
Eigentlich sind die Runlevel ja genau dafür da. Solange es um
"echte Dienste" geht (Apache, Exim, ...) funktioniert das natürlich.
Aber alles, was im Runlevel S gestartet wird, erwischt man auf
die Art nicht.
Auf jeden Fall solltest du dir das Paket "file-rc" anschauen, das
ersetzt die Links in /etc/rc.x durch eine einzelne Text-Datei. Ich finde
es viel übersichtlicher und schneller anzupassen. Man kann Zeilen
(= Dienste) einfach auskopieren und kann ganz einfach Kopien von
funktionieren Konfigurationen machen - ein Traum für Experimente.
Um die Meldungen zu speichern, kann man den "bootlogd" benutzen,
der dürfte standardmässig installiert sein. In "/etc/default/bootlogd"
kann man einstellen, ob er beim Booten gestartet werden soll.
Nachträglich kann man ihn auch einfach mit "/sbin/bootlogd -s"
starten. Alle Console-Meldungen landen dann in "/var/log/boot",
falls die Datei schon vorher existiert(!).
Ob man aus einem Init-Script heraus den Runlevel ändern kann,
ist aber die Frage. Auf meinem Etch hat es fast funktioniert:
"test 1" und "test 2" stehen in /var/log/boot, "test 3" nicht.
Und dann solltest du die "/etc/inittab" kontrollieren, die wird beim
Runlevel-Wechsel natürlich auch ausgewertet. Bei meinem Test
hatte ich in Runlevel 4 keine Konsolen mehr, weil das von früheren
Experimenten da noch so drinstand
"echte Dienste" geht (Apache, Exim, ...) funktioniert das natürlich.
Aber alles, was im Runlevel S gestartet wird, erwischt man auf
die Art nicht.
Auf jeden Fall solltest du dir das Paket "file-rc" anschauen, das
ersetzt die Links in /etc/rc.x durch eine einzelne Text-Datei. Ich finde
es viel übersichtlicher und schneller anzupassen. Man kann Zeilen
(= Dienste) einfach auskopieren und kann ganz einfach Kopien von
funktionieren Konfigurationen machen - ein Traum für Experimente.
Um die Meldungen zu speichern, kann man den "bootlogd" benutzen,
der dürfte standardmässig installiert sein. In "/etc/default/bootlogd"
kann man einstellen, ob er beim Booten gestartet werden soll.
Nachträglich kann man ihn auch einfach mit "/sbin/bootlogd -s"
starten. Alle Console-Meldungen landen dann in "/var/log/boot",
falls die Datei schon vorher existiert(!).
Ob man aus einem Init-Script heraus den Runlevel ändern kann,
ist aber die Frage. Auf meinem Etch hat es fast funktioniert:
Code: Alles auswählen
#!/bin/sh
echo test 1
sleep 10
echo test 2
init 2
echo test 3
Und dann solltest du die "/etc/inittab" kontrollieren, die wird beim
Runlevel-Wechsel natürlich auch ausgewertet. Bei meinem Test
hatte ich in Runlevel 4 keine Konsolen mehr, weil das von früheren
Experimenten da noch so drinstand
Beware of programmers who carry screwdrivers.
Hi nochmal.
Also von der /etc/runlevel.conf bin ich begeistert - großes Danke für den Tipp. Echt komfortabel.
Bin mal gespannt, wie gut das System bei updates weiterhin damit klar kommt.
Da muss ich gleich mal nebenbei fragen: Gibt es allgemeines ein Script (für beide Sysinit-Varianten), welche die links bzw. die hier jetzt Config-Einträge erzeugt?
Gruß
PS: Momentan such ich nur in aptitude den bootlogd. Ist unter irgendwas anderem versteckt?
Also von der /etc/runlevel.conf bin ich begeistert - großes Danke für den Tipp. Echt komfortabel.
Bin mal gespannt, wie gut das System bei updates weiterhin damit klar kommt.
Da muss ich gleich mal nebenbei fragen: Gibt es allgemeines ein Script (für beide Sysinit-Varianten), welche die links bzw. die hier jetzt Config-Einträge erzeugt?
Gruß
PS: Momentan such ich nur in aptitude den bootlogd. Ist unter irgendwas anderem versteckt?
gut, mir ist noch nichts aufgefallen...tjhooker hat geschrieben:Bin mal gespannt, wie gut das System bei updates weiterhin damit klar kommt.
bis auf: bei Updates wird die Zeile für das jeweilige Paket
neu eingetragen, auch wenn ich sie auskommentiert hatte.
Der bootlogd ist bei mir in /sbin "versteckt",
aber schau mal auf Debian Packages
Beware of programmers who carry screwdrivers.
Also war es schon dabei. Ver....., daran nicht als erstes gedacht.cosmac hat geschrieben:gut, mir ist noch nichts aufgefallen...tjhooker hat geschrieben:Bin mal gespannt, wie gut das System bei updates weiterhin damit klar kommt.
bis auf: bei Updates wird die Zeile für das jeweilige Paket
neu eingetragen, auch wenn ich sie auskommentiert hatte.
Der bootlogd ist bei mir in /sbin "versteckt",
aber schau mal auf Debian Packages
Doch es funktioniert schreinbar nicht auf einer virtuellen Machine.
"bootlogd: cannot find console device 136:0 in /dev"
Gut. Dann muss ich darauf leider verzichten.
Vielen Dank für deine Infos nochmal.
Gruß
Für beides kenne ich nicht, aber für die Variante mit Links verwende ich sysv-rc-conf.tjhooker hat geschrieben: Da muss ich gleich mal nebenbei fragen: Gibt es allgemeines ein Script (für beide Sysinit-Varianten), welche die links bzw. die hier jetzt Config-Einträge erzeugt?
Dieser ist bei den sysvinit dabei, also sollte er schon nach der Standardinstallation verfügbar sein.[/quote]tjhooker hat geschrieben: PS: Momentan such ich nur in aptitude den bootlogd. Ist unter irgendwas anderem versteckt?
Debian GNU/Linux SID
Workstation: Cider: C2D 6400, Gigabyte GA-965P-DS4, GF 7600gs
Notebook: Ale: ASUS L3800C CPU: P4M 1.8Ghz Graphics: Radeon Mobility 7500
Workstation: Cider: C2D 6400, Gigabyte GA-965P-DS4, GF 7600gs
Notebook: Ale: ASUS L3800C CPU: P4M 1.8Ghz Graphics: Radeon Mobility 7500
Einfach mal kurz $SUCHMASCHINE bemühen:tjhooker hat geschrieben: "bootlogd: cannot find console device 136:0 in /dev"
Auszug aus http://ubuntuforums.org/showthread.php?p=1631152:
Vielleicht funktioniert es dann auch bei dir!bootlogd seems to be borked:
bootlogd: cannot find console device 136:0 in /dev
Trying this to start it up before udev:
update-rc.d -f bootlogd remove
update-rc.d bootlogd defaults 08
Update: Yeah, that fixed it for me.
mfg
Debian GNU/Linux SID
Workstation: Cider: C2D 6400, Gigabyte GA-965P-DS4, GF 7600gs
Notebook: Ale: ASUS L3800C CPU: P4M 1.8Ghz Graphics: Radeon Mobility 7500
Workstation: Cider: C2D 6400, Gigabyte GA-965P-DS4, GF 7600gs
Notebook: Ale: ASUS L3800C CPU: P4M 1.8Ghz Graphics: Radeon Mobility 7500