Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

12.07.2011, 10:37

Erstellung Init-Skript für Shutdown

Hallo,

ich würde gern beim Herunterfahren des System ein Skript ausführen.
Also dachte ich mir ein "init.d"-Skript zu basteln, welches wiederum das Skript aufruft.

Das Skript habe ich so weit fertig:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/sbin/runscript

depend()
{
	use localmount
	need killprocs
	before mount-ro localmount
}

start()
{
	# Flush all pending disk writes now
	sync; sync

	/usr/local/bin/cleanup.sh
}

Dann habe ich es mit "rc-update add cleanup shutdown" registriert.

Leider funktioniert es nicht wie gewünscht. Das Skript wird erst aufgerufen, wenn die Partitionen bereits ausgehangen worden sind.
Eigentlich dachte ich, diesen Aspekt mit dem "depend()" erschlagen zu können.

Könnte mir jemand sagen, wie die Abhängigkeiten korrekt aussehen müssten?
Versuche mit Skripten im "default"-Runlevel haben prima geklappt.

Vielen Dank im voraus,
Matthias

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »semmelb« (15.07.2011, 12:15)


2

12.07.2011, 15:51

Hallo,

wenn es beim herunterfahren ausgeführt werden soll, sollte es nicht bei start, sondern bei stop stehen.

Quellcode

1
2
start()
{


sollte dann in in

Quellcode

1
2
stop ()
{


geändert werden.

Gruß

3

12.07.2011, 15:56

Der Aufruf des Skriptes funktioniert ohne Probleme. Nur leider sind dann bereits die Laufwerk ausgehängen.

start() und stop() beziehen sich doch auf das Skript selbst und nicht auf den Status des Init-Systems.
Stop() wird beim Beenden des Skriptes aufgerufen. Dazu muss aber erst ein Start() erfolgt sein.

Ich habe mich da am "mount-ro"-Skript orientiert.

4

12.07.2011, 16:00

Die "shutdown" Dienste werden erst ausgeführt, wenn auch die "boot" Dienste beendet wurden. Dh. im "shutdown" Runlevel kannst Du die Ausführung von "localmount stop" nicht verhindern, da dieser Dienst im "boot" steht. Verschiebe Dein Skript auch in das "boot" Runlevel. Dann must Du wie Planeshift schon gesagt hat "start" und "stop" tauschen.

MOD_Edit
Beim Hochfahren werden alle Dienste aus "sysinit" "boot" und "default" gestartet [ start() ].
Beim Runterfahren werden alle laufenden Dienste beendet [ stop() ] und die Dienste aus "shutdown" gestartet [ start() ]

Daher musst Du für den Runlevel "boot" start und stop vertauschen.
Für den ersten Test musst Du Dein Skript manuell starten, damit er beim Runterfahren beendet wird.
/Mod_edit
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »bell« (12.07.2011, 16:12)


5

14.07.2011, 11:40

Vielen Dank, so klappts! :thumbsup:

Mit folgendem Skript funktiontiert es:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/sbin/runscript

depend()
{
	use localmount
	need killprocs
	before mount-ro
}

start()
{
	einfo "Nothing to do, functionality in stop()"
}

stop()
{
	# Flush all pending disk writes now
	sync; sync

	/usr/local/bin/cleanup.sh
}


Trotzdem würde mich noch die Abhängigkeitsdefinition interessieren.
Machen meine Angaben Sinn? Sind sie überhaupt notwendig?

Kennt jemand eine Übersicht zu den depend()-Angaben?
Es sind ja nicht nur Skripte als Angaben möglich.

Gruß,
Matthias