Freitag, 18. Mai 2012, 16:26

Du bist nicht angemeldet.



[gelöst] Ubuntu abschalten

GBunge

hat sich gut eingelebt.

  • »GBunge« ist der Autor dieses Themas

Beiträge: 79

Architektur: 32-bit

  • Private Nachricht senden

1

Dienstag, 26. Juni 2007, 12:48

Ubuntu abschalten

Hallo Leute,

ich möchte gern vor dem Runterfahren des Systems ein Skript automatisch ausführen lassen,
dass möglicherweise gemountete Verzeichnisse auf einem anderen Rechner unmountet.
Wie geht das?

Es wird doch sicher ein Systemskript aus /etc/init.d aufgerufen. Mir ist nur nicht klar, welches!

Abschalten will ich den Rechner mit
System | Beenden oder mit dem Button auf dem Panel.

Wie funktioniert Ubuntu an dieser Stelle?

Gruß GBunge

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »GBunge« (17. Juli 2007, 19:01)


lacarpe

ist fest eingezogen.

Beiträge: 509

Ubuntu: ---

Kernel: 2.6.32 (Debian Squeeze)

Desktop: Xfce

Architektur: 64-bit

  • Private Nachricht senden

2

Dienstag, 26. Juni 2007, 13:01

Halllo GBunge,

schau mal hier: http://wiki.ubuntuusers.de/Dienste

Quellcode

1
/etc/rc0.d - Während das System herunterfährt

Du kannst also dein Skript, dass beim Herunterfahren ausgeführt werden soll, in dem runlevel /etc/rc0.d verlinken.

Normalerweise werden dort Start-Stop-Skripte verlinkt, aber es gehen auch ganz normale. Trotzdem musst du dich an die Namenskonvention halten. Beispiel: Nenne deinen Link "K99irgendeinname" (ob K oder S am Anfang ist egal), dann wird er als letztes in diesem Runlevel ausgeführt.

Herzlicher Gruß,
lacarpe
ubuntufreund No. 30
think globally, act locally

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »lacarpe« (26. Juni 2007, 13:15)


GBunge

hat sich gut eingelebt.

  • »GBunge« ist der Autor dieses Themas

Beiträge: 79

Architektur: 32-bit

  • Private Nachricht senden

3

Dienstag, 26. Juni 2007, 16:14

Hallo lacarpe,

an so einen Platz habe ich schon gedacht, wollte eigentlich wissen,
welches init.d-Skript denn normalerweise beim Beenden aufgerufen wir.

Nun habe ich eine Weile darüber nachgedacht und bin zu dem Schluß
gekommen, daß init ja beim Beenden auch das nfs abschalten muss.
Dafür gibt es doch das Skript /etc/init.d/networking mit dem Parameter stop/restart.
Dort wird gefragt:

Quellcode

1
2
3
4
5
6
7
8
....
stop)
	if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
		grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
	    log_warning_msg "not deconfiguring network interfaces: network shares still mounted."
	    exit 0
	fi
....
d.h. wenn nach stop noch ein gemountetes Device vorhanden ist, dann bricht das Skript mit 0 ab.

Denkst Du auch, daß das die richtige Stelle ist?

Allerdings ist mir nicht recht klar, wie ich meine Skript starten soll.
In dem Systemskript rumeditieren kann wohl kaum die richtige Methode sein.
Wie meistst Du "verlinken"?

Gruß GBunge

lacarpe

ist fest eingezogen.

Beiträge: 509

Ubuntu: ---

Kernel: 2.6.32 (Debian Squeeze)

Desktop: Xfce

Architektur: 64-bit

  • Private Nachricht senden

4

Dienstag, 26. Juni 2007, 16:39

In /etc/init.d/ stehen im Allgemeinen alle Start-Stop-skripte. Aber nur weil sie dort stehen, werden sie noch nicht automatisch ausgeführt. Sie werden erst ausgeführt, wenn sie mit einem Runlevel verlinkt sind. Auch das Skript /etc/init.d/networking wird als Link in einem der Verzeichnisse

/etc/rc0.d
/etc/rcS.d
/etc/rc1.d
/etc/rc2.d
/etc/rc6.d

(das sind quasi die Runlevel)

stehen. Wenn das Skript networking beim Herunterfahren ausgeführt wird, wirst du einen entsprechenden link in /etc/rc0.d finden. Der Link wird in etwa "K20networking" heißen. (Wobei "K" anzeigt, dass das Skript in der Stop-Variante ausgeführt wird, und "20" gibt an, dass das Skript nach allen Skripts mit 00-19 und vor allen Skripts mit der Nummer 21-99 ausgeführt werden soll).

Du kannst jetzt konkret so vorhergehen:

1.
Lege dein Skript in das Verzeichnis /etc/init.d/ (mit Ausführen-Rechten versehen)

2.
Lege einen symbolischen link an:

Quellcode

1
ln -s /etc/init.d/deinscript /etc/rc0.d/K50deinscript


Wobei egal ist, ob der Link mit K oder S beginnt (da du die start/stop-Unterscheidung in deinem Skript vermutlich ja nicht hast). Statt 50 kannst du jede andere Zahl zwischen 00 und 99 nehmen, je nachdem wie früh das Skript im Vergleich mit den anderen Skripts in /etc/rc0.d ausgeführt werden soll.

Ich denke, so sollte es klappen.
ubuntufreund No. 30
think globally, act locally

GBunge

hat sich gut eingelebt.

  • »GBunge« ist der Autor dieses Themas

Beiträge: 79

Architektur: 32-bit

  • Private Nachricht senden

5

Dienstag, 26. Juni 2007, 19:17

Hallo lacarpe,

das ist doch prima! Einem nicht so versiereten Admin, wie mir, hilft dieser
Hinweis ausgezeichnet!
Werde es sofort ausprobieren! Dumm ist nur, daß man für diese Versuche
immer das System runterfahren muss um zu sehen ob es funktioniert!

Gruß GBunge

Kopfgeldjaeger

ist zu Gast bei Freunden.

Beiträge: 44

Kernel: 2.6.22 / .25

Architektur: 32-bit

  • Private Nachricht senden

6

Dienstag, 26. Juni 2007, 19:28

Schau dir vielleicht auch mal
https://bugs.launchpad.net/ubuntu/+bug/94881
an. Die sind echt praktisch! Sowas wie rc.local, nur für Hochfahren UND Runterfahren.
Einfach in / entpacken, und dann in /etc/default/admin.(start|stop) jeweils eintragen.

mfg