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?
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?
Antworten:
Sie können den atBefehl verwenden. Die atAusführungsbefehle werden zu einem späteren Zeitpunkt ausgeführt. Das atDienstprogramm liest Befehle von der Standardeingabe und gruppiert sie als At-Job, um sie zu einem späteren Zeitpunkt auszuführen.
Wird normalerweise atstandardmäßig in Ubuntu installiert, aber wenn Ihre Version es nicht enthält, installieren Sie es über:
sudo apt-get install at
Weitere Informationen, Optionen, Beispiele und andere finden Sie im Ubuntu Manpage Repository
Beispiel:
at now +8 hours -f ~/myscript.sh
Sie können auch praktische Abkürzungen wie tomorrowoder noonwie in verwenden
echo "tweet fore" | at teatime
Warnung: 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önnenat. at -cAuf diese Weise können Sie geplante Aktionen untersuchen, die Sie bequem mit ihrer Nummer auflisten können, wie mit:
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00der Befehl zu einem absoluten Zeitpunkt ausgeführt werden, und zwar batch"wenn der Computer im Leerlauf zu sein scheint"
teatimeist um 16 Uhr. Aus bestimmten Gründen wird es in manpages.ubuntu.com/manpages/raring/man1/at.1posix.html nicht erwähnt, aber in man atund hier in manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .
gpio write 8 1jedoch 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 -eBefehl in Ihre crontab-Datei einfügen :
39 22 30 8 5 /path/to/mycommand.sh
Mehr über:
crontabbis 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, atund 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.
Auf Gnome-basierten Ubuntu-Systemen Gnome Scheduled Tasks Tool (aus dem gnome-schedule-Paket) in Applications -> System Tools bietet eine grafische Oberfläche mit Eingabeaufforderungen zur Verwendung von Cron. Die Projektwebsite befindet sich unter http://gnome-schedule.sourceforge.net/ ; Die Software kann über das Software Center oder durch Eingabe von installiert werden
sudo apt-get install gnome-schedulein einem Terminal.
Wenn Sie gnome-schedulefür ein Skript in Ihrem Ausgangsverzeichnis einen neuen Befehl "at" verwenden, wird dieser Fenstertyp verwendet:

Ich fand einen schnellen und schmutzigen Weg, um dies zu tun, bevor ich herausfand, dass ates eine Sache war.
Angenommen, Sie möchten, dass Ihr Skript mittags ausgeführt wird:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
Angenommen, Sie möchten, dass es morgen mittag ausgeführt wird (heute ist der 24. November für mich):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh
Update : Etwas bessere Methode: Testen Sie nur die Zahlen, die Sie interessieren, mit date +FORMAT:
until [[ $(date +%H:%M) == 21:06 ]]; do
...
at, cronoder jede andere echte Scheduler - Anwendung. Die Aufgabenplanung ist schwierig und kein Rad, das Sie neu erfinden sollten.
at.
atist, dass die Jobs einen Neustart überstehen.
nohup+ nichtsleep? Warum ist es "unpassend"?