Bash Script beim Start? (Linux)

12

Gibt es eine Möglichkeit, ein Bash-Skript beim Neustart zu erstellen / auszuführen (wie zum Beispiel in Debian / Ubuntu, da dies meine 2 Boxen zu Hause sind)?

Gibt es auch empfohlene Anleitungen für Cron-Jobs? Ich bin völlig neu für sie (aber sie werden von großem Nutzen sein)

msmith1114
quelle

Antworten:

21

Unter Ubuntu / Debian / Centos können Sie einen Cron-Job einrichten, um @reboot auszuführen. Dies wird einmal beim Systemstart ausgeführt. Verwenden Sie crontab -e, um die crontab zu bearbeiten und eine Zeile wie im folgenden Beispiel einzufügen, z

@reboot /path/to/some/script 

Es gibt viele Ressourcen für cron, wenn Sie danach suchen. Diese Seite hat einige gute Beispiele.


quelle
7

Ein anderer typischer Weg, um etwas beim Booten auf vielen * nix- Plattformen zu starten, ist (oder war, glaube ich, dass dies allmählich an Beliebtheit verliert - siehe Alternativen ), Skripte in ein Verzeichnis zu legen, das je nach Betriebssystem / Distribution möglicherweise ist so etwas wie /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.doder dergleichen (verschiedene Distributionen verwenden unterschiedlichen „Runlevels“, das ist , wo die Zahl herkommt - siehe Link unten). Häufig werden diese auch in oder aus Dateien verlinkt /etc/init.d, um die Ausführung von Hand zu vereinfachen. Auf den meisten * nix-Plattformen wird ein "Start" - und / oder "Stopp" -Argument verwendet. Außerdem werden "Status", "Neustart", usw. auf vielen Linux-Plattformen. Auf solchen Systemen werden diese im Allgemeinen ausgeführt von init:inittab. Auf * BSD-Systemen gibt es einen anderen Stil eines ähnlichen Konzepts und, wie oben erwähnt, eine Reihe von Variationen.

Im obigen Stil beginnen Skripte in z. B. /etc/rc2.d(für ein System mit einem Standard-Runlevel von 2) normalerweise entweder mit dem Buchstaben Soder Kund dann mit einer zweistelligen Zahl. Die Skripte, die mit S beginnen, werden in lexikografischer Reihenfolge (die im Allgemeinen in numerische Reihenfolge übersetzt wird) ausgeführt, wenn Sie in Ebene 2 mit dem Argument "start" starten. Beim Herunterfahren werden die Skripte mit dem Präfix K auf ähnliche Weise mit dem Argument "stop" ausgeführt.

Die Dateien in /etc/init.d(oder manchmal /etc/rc/init.doder in anderen Variationen) werden ohne die S- und K-Präfixe oder die numerischen Nummern benannt. In der Regel sind die Dateien in den verschiedenen Verzeichnissen /etc/rc?.d mit den tatsächlichen Dateien verknüpft, auf die häufig über das relative Pfadpräfix verwiesen wird ../init.d/.

Auf verschiedenen Systemen gibt es verschiedene Dienstprogramme, um diese zu verwalten, Dinge ein- und auszuschalten usw. Unter IRIX (seit IRIX 4, zumindest wenn mein Speicher belegt ist) war es ein aufgerufenes Tool chkconfig, das nicht manipuliert werden konnte die Links, die aber von den Skripten überprüft würden, ob sie laufen sollen oder nicht. Ich denke, IRIX war das erste Betriebssystem, das so etwas hatte. Später gab es in einer Version von RedHat, die ich früher hatte, ein Tool mit demselben Namen, das sich jedoch ein wenig anders verhielt und die Symlinks tatsächlich verwaltet - siehe, chkconfig(8)was ich für die gleiche (oder sehr ähnliche) Version halte wie ich es damals benutzt habe.

Auf einem Ubuntu 9.04-System, auf das ich Zugriff habe, muss anscheinend update-rc.ddas Skript ausgeführt werden.

Wenn Sie sich auf einem System befinden, das inittab verwendet, können Sie Dinge auch direkt dort hinzufügen. Dies ist besonders nützlich für Dinge, die Sie nicht nur einmal beim Booten ausführen möchten, sondern die Sie aktiv (von init) überwachen lassen möchten , respawnfalls dies jemals der Fall ist abstürzen oder beenden. man inittabWeitere Informationen finden Sie in der Ausgabe von (falls vorhanden) auf Ihrem System. Und / oder man init, etc. Es gibt viele verschiedene Geschmacksrichtungen, und ich kenne Debian oder Ubuntu (derzeit) nicht besonders gut, daher weiß ich nicht genau, worauf ich Sie hinweisen soll, aber hoffentlich gibt Ihnen dies einige Ansatzpunkte .

Der Abschnitt @reboot in crontob ist für mich neu, scheint aber auch eine nützliche Option zu sein - obwohl ich für viele Dinge Init-Skripte als vorzuziehen empfehle. Aber sehen Sie man 5 crontabfür viel mehr Informationen darüber , was Sie in Ihre Cron - Konfiguration setzen kann, und wie kann es gesagt werden , Dinge zu laufen, und wenn (einschließlich einer Vixie / ISC - Version von cron unter der Annahme [siehe cron Geschichte ] mit @reboot).

Ich hoffe das ist hilfreich.

Lindes
quelle