Jaki jest prosty sposób uruchomienia polecenia, powiedzmy, za 8 godzin? Mogę myśleć w ten sposób:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Czy istnieje bardziej „właściwy” sposób?
Jaki jest prosty sposób uruchomienia polecenia, powiedzmy, za 8 godzin? Mogę myśleć w ten sposób:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Czy istnieje bardziej „właściwy” sposób?
Odpowiedzi:
Możesz użyć at
polecenia. at
Wykonywanie poleceń w późniejszym czasie. at
Narzędzie powinno czytać polecenia ze standardowego wejścia i grupy je razem jako w-pracy, które mają być realizowane w późniejszym czasie.
Zwykle at
jest instalowany domyślnie w Ubuntu, ale jeśli wersja go nie zawiera, zainstaluj:
sudo apt-get install at
Aby uzyskać więcej informacji, opcji, przykładów i innych, zobacz repozytorium strony Ubuntu
Przykład:
at now +8 hours -f ~/myscript.sh
Możesz także użyć wygodnych skrótów, takich jak tomorrow
lub noon
, jak w
echo "tweet fore" | at teatime
Ostrzeżenie: Spowoduje to natychmiastowe uruchomienie polecenia po lewej stronie potoku,ale później przedstawi jego dane wyjściowe. W przykładzie pokazano również, w jaki sposób można przenosić akcjeat
. at -c
to sposób na sprawdzenie zaplanowanych działań, które możesz wygodnie wymienić według ich liczby, jak w przypadku:
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00
uruchomić polecenie w absolutnym czasie i batch
„gdy wygląda na to, że komputer jest bezczynny”
teatime
jest o 16.00. Z niektórych powodów nie jest wymieniony w manpages.ubuntu.com/manpages/raring/man1/at.1posix.html, ale znajduje się man at
tutaj i tutaj manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .
gpio write 8 1
ale wykonałem go od razu.
Tak, możesz ustawić zadanie crona.
Na przykład, jeśli teraz jest godzina 14:39:00, a dziś jest piątek, 30 sierpnia, możesz dodać następujące zadanie cron (do wykonania po 8 godzinach) w pliku crontab za pomocą crontab -e
polecenia:
39 22 30 8 5 /path/to/mycommand.sh
Więcej o:
crontab
dopóki go nie usuniesz. Rok później, gdy zapomnisz, kto to umieścił i dlaczego, będziesz drapał się w głowie, zastanawiając się, co zrobić z poleceniem.
Użyj GUI GNOME oparty na cron
, at
i tym podobne:
Wprowadzenie CronHowto sugeruje użycie gnome-schedule
GUI, co jest znacznie przyjemniejsze niż wpisywanie wszystkich śmieci do terminala (szczególnie dla „przeciętnych” użytkowników Ubuntu, którzy nie są użytkownikami „power” * nix / bsd.)
Uruchom go za pomocą Unity Dash (lub menu innych aplikacji), aby wyszukać Zaplanowane zadania lub uruchomione gnome-schedule
.
W systemach Ubuntu opartych na Gnome Narzędzie Gnome Scheduled Tasks (z pakietu gnome-schedule) w Aplikacje -> Narzędzia systemowe zapewnia interfejs graficzny z monitem o użycie Crona. Witryna projektu znajduje się pod adresem http://gnome-schedule.sourceforge.net/ ; oprogramowanie można zainstalować z Centrum oprogramowania lub wpisując
sudo apt-get install gnome-schedule
w terminalu.
Za gnome-schedule
pomocą skryptu w katalogu domowym można skonfigurować nowe polecenie „at” przy użyciu tego typu okna:
Wymyśliłem szybki i brudny sposób na zrobienie tego, zanim się zorientowałem at
.
Załóżmy, że chcesz, aby skrypt działał w południe:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
Powiedz, że chcesz, aby działał jutro w południe (dzisiaj jest dla mnie 24 listopada):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh
Aktualizacja : Nieco lepsza metoda: przetestuj tylko te liczby, na których Ci zależy, używając date +FORMAT
:
until [[ $(date +%H:%M) == 21:06 ]]; do
...
at
, cron
lub jakakolwiek inna aplikacja rzeczywistym harmonogramu. Planowanie zadań jest trudne i nie należy na nowo wymyślać koła.
at
.
at
jest to, że jego zadania przetrwają restart.
nohup
+sleep
? Dlaczego jest to „niewłaściwe”?