it-swarm.com.de

Laufender Befehl beim Start auf crontab

Ich wollte einen Befehl auf unserem Linux ausführen, nachdem der Neustart abgeschlossen war. Ich sah, dass dies mit crontab möglich ist. Ich wollte diesen Befehl ausführen

Sudo ifdown eth0 && Sudo ifup -v eth0

auf dem crontab kann ich einfach machen:

@reboot Sudo ifdown eth0 && Sudo ifup -v eth0

oder muss ich das in einem Skript speichern?

dankeschön

22
Lottie

Ein paar Anmerkungen hier, bevor dies funktionieren würde:

  1. Verwenden Sie Sudo nicht in einem Cron-Job. Bearbeiten Sie stattdessen die Crontab von root anstelle Ihrer eigenen, z. Sudo crontab -e und geben Sie dann Befehle ohne Sudo ein.
  2. Wie @mikewhatever said, ist dies eine seltsame Verwendung für cron und würde wahrscheinlich besser in /etc/rc.local vor der exit 0 -Zeile stehen.
  3. Wenn Sie uns genau mitteilen, wonach Sie suchen, können wir Sie möglicherweise zu einer Protokoll- oder Konfigurationsoption weiterleiten (ein Neustart Ihrer Netzwerkdienste beim Start fühlt sich etwas hackisch an).
  4. Auf den meisten Systemen sollte @reboot auch nach einem harten Herunterfahren oder Absturz ausgeführt werden, es gibt jedoch unterschiedliche Cron-Implementierungen, also YMMV. Ich habe an verschiedenen Stellen Kommentare gesehen, die beides behaupteten.

EDIT (17.02.2016): Falsche Klappe auf absoluten Pfaden entfernt; ein dickes Lob @muru
EDIT (17.10.2016): Hinweis zum Herunterfahren hinzugefügt
EDIT (2017/09/11): Überarbeiteter Hinweis zum Herunterfahren. Da bin ich mir nicht sicher.

33
TheSchwa

Sie können dafür crontab verwenden. Wenn Sie jedoch Sudo verwenden, benötigen Sie eine NOPASSWD -Regel in sudoers, um dies zu tun. (Siehe Ausführen eines Cron-Jobs mit dem Sudo-Befehl .)

Es wäre einfacher, /etc/rc.local zu bearbeiten und diese Befehle vor der Zeile exit 0 einzufügen.

6
muru