/usr/local/etc/rc.d startup-script = shutdown-script?

pit234a

Well-Known Member
Hi.

Seit langem habe ich ein einfaches Script in /usr/local/etc/rc.d liegen, das mir beim Systemstart einige NFS-Freigaben mountet und ein wenig aufräumt und putzt.

Seit einigen Monaten muss ich nun meinen PC über Nacht immer ausschalten.

Seit wenigen Tagen habe ich nun einen einfachen rsync in dieses Script eingebaut und sichere damit mein eigenes home beim Systemstart (der Delta ist meist gering und ich lasse die wirklich großen Files in bestimmten Verzeichnissen aus).

So weit so gut. Alles geht, wie erwartet.

Aber:
Beim shutdown startet der rsync wieder!
Das fällt natürlich auf und deshalb sah ich genauer hin: es sieht fast so aus, als würde dieses kleine Script nun nochmals abgearbeitet.
Das war mir vorher nicht aufgefallen und ich kann es mir nicht erklären.
Muss ich da was bedenken? Habe ich (mal wieder) was falsch verstanden?

Inzwischen weiß ich ja auch um die .../autostart und kann mir vorstellen, dass dort ein solches Script besser aufgehoben wäre. Bei meinen Anfängen mit FreeBSD war ich schon stolz, überhaupt eine Möglichkeit gefunden zu haben, die NFS-Freigaben an der fstab vorbei automatisch zu mounten.

Es geht mir also weniger um das Detail, als um das Grundverständnis und die Frage danach, ob diese Scripte in /usr/local/etc/rc.d tatsächlich beim shutdown nochmal abgearbeitet werden und wenn ja, wie man sich dagegen wehren kann und falls nein, was ich da sehe, wenn der rsync beim shutdown wieder startet.

Freue mich über Antwort. Gruß.
 
Vorneweg: man 8 rc

Vermutlich läuft es darauf hinaus, dass dein Skript beim Systemstart mit dem Argument "start" und beim Runterfahren mit dem Argument "stop" aufgerufen wird (beides evtl. mit dem Präfix quiet).
 
sofort Dank zurück:
man 8 rc habe ich nie gelesen und wäre auch nicht auf die Idee gekommen!
Bin gerade dabei...
 
aus der man 8 rc:
Code:
     ·   When a script is executed at boot time, it is passed the string
         “start” as its first and only argument.  At shutdown time, it is
         passed the string “stop” as its first and only argument.  All rc.d/
         scripts are expected to handle these arguments appropriately.  If no
         action needs to be taken at a given time (either boot time or shut‐
         down time), the script should exit successfully and without producing
         an error message.

denke, das ist genau der Punkt.

Weil ich das nicht wusste, habe ich keinerlei "Keywords" eingebaut und dann wird es eben jeweils aufgerufen und ausgeführt!
Denke, dass ich das lösen können werde.
Danke nochmals.

Allerdings, vielleicht noch nachgefragt. wenngleich es nicht direkt mit der Lösung meiner ersten Frage zu tun hat.
Das las ich nun schon häufiger und auch in dieser man und verstehe es nicht:
was meint das, ein script zu sourcen?

Ich sehe ich meinem Lieblings-Shell-Ratgeber auch einen Absatz dazu, verstehe das aber nicht ganz:
Code:
Source (.)
Der Source-Befehl wird in der Form . skriptname angegeben. Er bewirkt ähnliches wie ein #include in der Programmiersprache C.
Die Datei (auf die das Source ausgeführt wurde) wird eingelesen und ausgeführt, als ob ihr Inhalt an der Stelle des Befehls stehen würde. Diese Methode wird zum Beispiel während des Bootvorgangs in den Init-Skripten benutzt, um immer wieder benötigte Funktionen (Starten eines Dienstes, Statusmeldungen auf dem Bildschirm etc.) in einer zentralen Datei pflegen zu können (siehe Beispiel unter Ein typisches Init-Skript). ...
# Source function library.
. /etc/rc.d/init.d/functions
Ist das irgendwie identisch zu einer Funktion () innerhalb eines Scriptes?
In dem Beispiel von oben wiederholt sich der Aufruf an keiner weiteren Stelle im Script, womit es für mich ein schlechtes Beispiel ist. Ein Funktion für ein einmaliges Ereignis macht auch nicht so viel Sinn.
Wird das dann jedesmal so aufgerufen, wenn es gebraucht wird? Komplett mit Pfad?
Kann es nur eine Source pro script geben oder können auf diese Art beliebig irgendwelche Scripte aufgerufen werden? Übergeben die dann automatisch ihre Variablen? Oder können die sich ins Gehege kommen?
Und was meint denn " ...it should source /etc/rc.conf..." in der man 8 rc? die rc.conf ist doch kein Script?

Naja, vielleicht habe ich noch nicht weit genug gelesen und nicht lang genug gespielt, aber ich stehe mir da im Augenblick auf dem Schlauch, was das eigentlich meint und soll.
 
ja, und wie vermutet: erst mal gelesen, wie es denn funktioniert, schon geht es auch, wie es sein soll.
Natürlich erst nach einigen Neustarts, also Synthax-Errors!

Nochmal Dank, das genau ist es gewesen!
 
Zurück
Oben