Was ist ein einfacher Weg, um einen Befehl auszuführen, zum Beispiel in 8 Stunden? Ich kann mir das so vorstellen:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Gibt es einen "angemesseneren" Weg?
bash
command-line
schedule
Steve Bennett
quelle
quelle
nohup
+ nichtsleep
? Warum ist es "unpassend"?Antworten:
Sie können den
at
Befehl verwenden. Dieat
Ausführungsbefehle werden zu einem späteren Zeitpunkt ausgeführt. Dasat
Dienstprogramm liest Befehle von der Standardeingabe und gruppiert sie als At-Job, um sie zu einem späteren Zeitpunkt auszuführen.Wird normalerweise
at
standardmäßig in Ubuntu installiert, aber wenn Ihre Version es nicht enthält, installieren Sie es über:Weitere Informationen, Optionen, Beispiele und andere finden Sie im Ubuntu Manpage Repository
Beispiel:
Sie können auch praktische Abkürzungen wie
tomorrow
odernoon
wie in verwendenWarnung: Dadurch wird der Befehl sofort links von der Pipe ausgeführt, die Ausgabe wird jedoch erst später angezeigt. Das Beispiel zeigt auch, wie Sie Aktionen weiterleiten können
at
.at -c
Auf diese Weise können Sie geplante Aktionen untersuchen, die Sie bequem mit ihrer Nummer auflisten können, wie mit:quelle
at now +8 hours -f ~/myscript.sh
at 8:00
der Befehl zu einem absoluten Zeitpunkt ausgeführt werden, und zwarbatch
"wenn der Computer im Leerlauf zu sein scheint"teatime
ist um 16 Uhr. Aus bestimmten Gründen wird es in manpages.ubuntu.com/manpages/raring/man1/at.1posix.html nicht erwähnt, aber inman at
und hier in manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .gpio write 8 1
jedoch sofort ausgeführt wurde.Ja, Sie können einen Cron-Job einstellen.
Wenn zum Beispiel jetzt 14:39:00 Uhr und heute Freitag, 30. August, ist, können Sie den folgenden Cron-Job (der nach 8 Stunden ausgeführt werden soll) mit dem
crontab -e
Befehl in Ihre crontab-Datei einfügen :Mehr über:
quelle
crontab
bis Sie ihn entfernen. Ein Jahr später, wenn Sie vergessen haben, wer es dort abgelegt hat und warum, werden Sie sich am Kopf kratzen und sich fragen, was Sie mit dem Befehl anfangen sollen.Verwenden Sie die Gnome-basierte GUI für
cron
,at
und dergleichen:Die Einführung des CronHowto schlägt vor, die GUI zu verwenden
gnome-schedule
, die viel netter ist, als den ganzen Müll in das Terminal zu tippen (besonders für "durchschnittliche" Ubuntu-Benutzer, die keine "Power" * nix / bsd-Benutzer sind).Führen Sie es mithilfe von Unity Dash (oder eines anderen Anwendungsmenüs) aus, um nach geplanten Aufgaben zu suchen oder auszuführen
gnome-schedule
.Wenn Sie
gnome-schedule
für ein Skript in Ihrem Ausgangsverzeichnis einen neuen Befehl "at" verwenden, wird dieser Fenstertyp verwendet:quelle
Ich fand einen schnellen und schmutzigen Weg, um dies zu tun, bevor ich herausfand, dass
at
es eine Sache war.Angenommen, Sie möchten, dass Ihr Skript mittags ausgeführt wird:
Angenommen, Sie möchten, dass es morgen mittag ausgeführt wird (heute ist der 24. November für mich):
Update : Etwas bessere Methode: Testen Sie nur die Zahlen, die Sie interessieren, mit
date +FORMAT
:quelle
at
,cron
oder jede andere echte Scheduler - Anwendung. Die Aufgabenplanung ist schwierig und kein Rad, das Sie neu erfinden sollten.at
.at
ist, dass die Jobs einen Neustart überstehen.