Benötigen Sie ein Skript, das bei jedem Neustart in +1 Minute ausgeführt wird. Ich habe eine Aufzeichnung erstellt, @rebootaber für mein Drehbuch ist es noch zu früh. Wie kann ich es nach dem Neustart ausführen?
Warum ist es zu früh ? Vielleicht ist ein Init-Skript besser geeignet (in Bezug auf Abhängigkeiten, z. B. muss für dieses Skript zuerst ein Netzwerk eingerichtet werden ).
Sr_
Mein Skript muss nach allen anderen ausgeführt werden, die letzten in kurzen Worten
Yurij73
Da Ihr Job nach allem ausgeführt werden muss und das Konzept von allem sehr variabel ist (das Hinzufügen einer neuen autostart @ reboot-Anwendung ist keine Seltenheit), liegt es meiner Meinung nach an Ihnen, Ihren Job in die rc-Skripte in a einzufügen Art und Weise, die Ihren Zweck dient. In der Regel möchten Sie, dass Ihre Aufgabe den in /etc/rc.local angegebenen Aufgaben am Ende folgt. Abhängig von der Startkonfiguration Ihres Systems ist dies jedoch möglicherweise nicht immer der Fall. Testen Sie es also und prüfen Sie, ob es für Sie funktioniert.
MelBurslan
Klingt nach einem Fall für Upstart?
Nafg
Antworten:
64
Soll das Skript immer nur eine Minute nach dem Hochfahren ausgeführt werden, oder kann es auch zu anderen Zeiten verwendet werden? Im ersten Fall können Sie sleep 60am Anfang Ihres Skripts oder im zweiten Fall in die crontab-Datei einfügen:
@reboot sleep 60 && my_script.sh
Wie von sr_ bereits erwähnt, wird dies möglicherweise falsch angegangen, und ein geeignetes init.d- oder rc.d-Skript wäre eine robustere Lösung.
Oder verwenden Sie eine Befehlszeilenoption, um die Verzögerung zu optimieren (z. B. script -s Xdie sleep Xinnerhalb des Skripts übersetzt werden würde ).
Peterph
Kann ich dies auf die Datei taskrunner in /etc/init.d/ anwenden?
Andres Angel
@AndresAngel - Es tut mir leid, ich weiß es nicht. Ich FreeBSD zu benutzen , die nicht über taskrunnernoch, was das betrifft,/etc/init.d
D_Bye
auf meinem rhel7 funktioniert der schlaf überhaupt nicht, er schläft für immer und kommt nie wieder.
Inder R Singh
16
Wenn Sie nach dem Neustart etwas ausführen müssen, wenn das Netzwerk verfügbar wird, können Sie beispielsweise eine systemd-Einheit schreiben, die zur gewünschten Zeit ausgeführt wird (dies funktioniert natürlich nur auf Systemen mit systemd).
Erstellen Sie dazu eine Datei /etc/systemd/system/my_script.servicemit folgendem Inhalt:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... mit der erwähnten Einschränkung, dass Sie, wenn Sie es wirklich nach allen anderen Dingen ausführen möchten, überprüfen sollten, wie dies in dem Init gemacht wird, das Ihr Betriebssystem verwendet.
Antworten:
Soll das Skript immer nur eine Minute nach dem Hochfahren ausgeführt werden, oder kann es auch zu anderen Zeiten verwendet werden? Im ersten Fall können Sie
sleep 60
am Anfang Ihres Skripts oder im zweiten Fall in die crontab-Datei einfügen:Wie von sr_ bereits erwähnt, wird dies möglicherweise falsch angegangen, und ein geeignetes init.d- oder rc.d-Skript wäre eine robustere Lösung.
quelle
script -s X
diesleep X
innerhalb des Skripts übersetzt werden würde ).taskrunner
noch, was das betrifft,/etc/init.d
Wenn Sie nach dem Neustart etwas ausführen müssen, wenn das Netzwerk verfügbar wird, können Sie beispielsweise eine systemd-Einheit schreiben, die zur gewünschten Zeit ausgeführt wird (dies funktioniert natürlich nur auf Systemen mit systemd).
Erstellen Sie dazu eine Datei
/etc/systemd/system/my_script.service
mit folgendem Inhalt:Dann führen Sie aus:
Sie sind fertig!
quelle
Ich würde verwenden
at
. Wie in:... mit der erwähnten Einschränkung, dass Sie, wenn Sie es wirklich nach allen anderen Dingen ausführen möchten, überprüfen sollten, wie dies in dem Init gemacht wird, das Ihr Betriebssystem verwendet.
quelle