Jak mogę zaplanować nocne uruchamianie?

81

Mam pewne okresowe problemy z uruchomieniem konkretnej aplikacji, XBMC. Jeśli regularnie używam XBMC, wydaje mi się, że nie mam żadnych problemów, ale jeśli zostawiam go bez nadzoru na dłużej niż około 12 godzin, muszę go zrestartować, aby znów mógł działać.

Wiem, że zaplanowane ponowne uruchomienie NIE jest odpowiedzią, ale dopóki nie znajdę problemu, muszę zaplanować ponowne uruchomienie każdego ranka, aby moja żona mogła go użyć, jeśli mnie nie ma i nie zostanie wyrzucony przez okno :)

Jacyś chętni?

Braiam
źródło

Odpowiedzi:

133

Użyłbym crona (powinien już być zainstalowany):

Edytuj crontab:

sudo crontab -e

Za pierwszym razem może być konieczne wybranie preferowanego edytora (np. Nano)

Wstaw wiersz podobny

0 4   *   *   *    /sbin/shutdown -r +5

na dnie. Wyjaśnienie:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

więc linia

  0 4   *   *   *    /sbin/shutdown -r +5

restartowałby system codziennie o 4:05. (4:00 + 5 minut)

Ctrl+ X, Y, EnterPowinno cię z crontab (w przypadku korzystania z nano)

Uwaga: może być konieczne uruchomienie crontab -ejako root, ponieważ zamknięcie wymaga rootowania. crontab -eotwiera plik w / tmp zamiast rzeczywistego pliku crontab, aby mógł sprawdzić błędy w nowym pliku crontab. Jeśli nie ma żadnych błędów, twój aktualny plik crontab zostanie zaktualizowany.

sBlatt
źródło
1
Dzięki za informację. Jedyne, co musiałem zrobić, to zmienić polecenie na / sbin / shutdown, aby działało dla mnie.
1
to nie działało dla mnie. przy użyciu obu tych opcji crontab -ei sudo crontab -ezapisuje plik w tymczasowej lokalizacji, gdy wychodzisz do wyjścia (np. /tmp/crontab.Y88XQl/crontab), a zadanie nie działa. byłem zmuszony bezpośrednio edytować / etc / crontab
wal
@wal "crontab -e otwiera plik w / tmp zamiast rzeczywistego pliku crontab, aby mógł sprawdzić błędy w nowym crontabie i zapobiec nadpisywaniu tych plików przez te błędy. Jeśli nie ma błędów, to twój plik crontab będzie być na bieżąco." unix.stackexchange.com/questions/197504/…
Christh
14

Dodanie tego do /etc/cron.daily/zz-rebootpowinno działać:

#!/bin/sh
shutdown -r now

I sudo chmod a+x /etc/cron.daily/zz-reboot… Prefiks „zz” zmusi go do ostatniego uruchomienia ze wszystkich innych skryptów w tym katalogu. Sprawdź, /etc/crontabktóra pora dnia się wydarzy:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

Jeśli to nie zadziała, wtedy „zwykły” wpis w cron może również działać, poprzez sudo crontab -e

MINUTE HOUR * * * shutdown -r now

I na koniec, jeśli chcesz wykonać jednorazowe ponowne uruchomienie, możesz użyć at:

echo "shutdown -r now" | sudo at 04:30
Kees Cook
źródło
o ile wiem, to spowoduje ponowne uruchomienie systemu w tym samym czasie, gdy tworzysz ten plik każdego dnia, popraw mnie, jeśli się mylę
sBlatt,
1
Niezupełnie: będzie się uruchamiał raz dziennie o każdej porze cron.daily, co jest nieco nieprzewidywalne. Jeśli nie masz anacronzainstalowanego, to jest 06:25 czasu lokalnego, co może być w porządku (lub może być okropne, jeśli jesteś rannym ptaszkiem). Jeśli to zrobisz, co moim zdaniem jest domyślne, może to być 10 minut po pierwszym włączeniu urządzenia każdego dnia, co byłoby irytujące. W każdym razie cron.dailynie nadaje się do tego.
poolie
cron.daily uruchamiany co noc o 6:25 w moim systemie. Zazwyczaj jest to losowa minuta między 06:00 a 06:59. Zobacz swój plik / etc / crontab na czas w twoim systemie
elzapp
1
Największy problem z użyciem do tego cron.daily polega na tym, że może on zakłócać inne zadania w cron.daily.
elzapp,
1

Powinieneś utworzyć skrypt, korzystając ze wskazówek podanych przez Keesa Cooka ...

Możesz po prostu skopiować i wkleić poniższe informacje w dowolnym edytorze tekstu i utworzyć zz-rebootplik w sugerowanym katalogu.

Następnie pamiętaj, aby kliknąć plik prawym przyciskiem myszy i przypisać mu uprawnienia do wykonywania. Jeśli masz ochotę skorzystać z terminala:

sudo chmod +x /etc/cron.daily/zz-reboot

Aby lepiej zrozumieć to, co robisz, pamiętaj, że w /etcfolderze znajdują się pliki konfiguracyjne ogólnie i tam można znaleźć cron.hourly, cron.dailyi inne foldery cron. Cron zajmuje się wykonywaniem aplikacji i skryptów w określonym czasie.

Jeśli chcesz ściśle przestrzegać czasu ponownego uruchomienia, po prostu cyfrę

sudo crontab -e

dzięki czemu możesz edytować crontabdla użytkownika root.

Jeśli czujesz się lepiej, robiąc to graficznie, możesz zainstalować z gnome-harmonogram Software Center. Jeśli chcesz zmodyfikować gnome-scheduleużytkownika root, upewnij się, że uruchamiasz go z terminala:

gksudo gnome-schedule

Baw się dobrze grając! :)

ps: great point sBlatt! Zastanawiałem się, czy jest jakiś sposób na cron.dailyręczne wymuszenie czasu wykonania.

Pitto
źródło
W / etc / crontab znajduje się wpis umożliwiający dostosowanie czasu, ale afaik, jeśli komputer jest wyłączony w tym czasie, uruchomi się kilka minut po uruchomieniu komputera
sBlatt,
1

Pracuję z cronjobs przez około miesiąc w mojej pracy i planuję wyłączenie i ponowne uruchomienie. To jest bardzo proste. Wiem, że zapytano o to około 5 lat temu, ale jeśli ktoś nadal ma problemy, możesz użyć tej metody i zostaniesz ustawiony.

otwórz terminal (ctrl + T)

sudo nano /etc/crontab

przewiń do samego końca i wprowadź poniższe polecenie

00 6 * * * root reboot 

jest to ustawione na ponowne uruchamianie codziennie o 6 rano i naciśnij enter

Jeśli chcesz zaplanować wyłączenie o godzinie 23:00 każdego dnia, możesz wejść

00 23 * * * root poweroff

Nadal muszę wymyślić, jak zasilać maszynę za pomocą cronjob, gdy jest wyłączona. Wyedytuję tę odpowiedź, gdy się zorientuję.

PS to moja pierwsza odpowiedź na post w dowolnej formie; mam nadzieję, że to komuś pomoże !! :RE

techfashionista
źródło
3
Istnieje odpowiedź o tej samej treści sprzed 5 lat z większą szczegółowością i automatyczną weryfikacją składni (do końca crontab -e).
David Foerster
1
Nie zapomnij zrestartować cron:sudo /etc/init.d/cron restart
brcebn