Jak skonfigurować Ubuntu, aby uruchamiał się codziennie o określonej godzinie?

11

Używając terminalu lub pliku bash, w jaki sposób mogę skonfigurować Ubuntu, aby uruchamiał się codziennie o (powiedzmy na przykład) o 3 nad ranem?

Innymi słowy, chcę zaplanować automatyczne ponowne uruchomienie za pośrednictwem terminala.

Nie byłem w stanie znaleźć niczego związanego z tym w Google lub AskUbuntu i ogólnie jestem całkiem nowy w Ubuntu (właśnie dostałem moją nową Raspberry Pi).

Mathias Lykkegaard Lorenzen
źródło

Odpowiedzi:

13

Edytuj wpisy crontab przy użyciu crontab -epolecenia (domyślnie spowoduje to edycję crontabu zalogowanych użytkowników) i dodasz następujący wiersz:

0 3 * * * echo $PASSWD | sudo -S reboot
#change $PASSWD with your password

Zapisz plik i sprawdź nowy wpis crontab za pomocą crontab -l.

Jeśli chcesz używać tylko:

0 3 * * * sudo reboot

jako crontab, to nie działa normalnie i powinieneś sprawdzić ten post, aby zobaczyć, jak możesz to zrobić.

Lub po prostu dodaj crontab do pliku crontab użytkownika root, oferując pełną ścieżkę do rebootpolecenia, używając sudo crontab -e:

0 3 * * * /sbin/reboot
Radu Rădeanu
źródło
Nie możesz umieścić tego w crontab roota i nie martwić się zbytnioecho $PASSWD
Dan
Nie wiedziałem tego Czy to błąd Crona, czy to normalne? Mam na myśli, że jeśli edytujesz crontab jako root, to zadanie zostanie wykonane tylko wtedy, gdy zalogujesz się jako root? Myślę, że to źle. (lub powinno być).
NickTux
@ RaduRădeanu To nieprawda. Root cronjobs będą działać bez zalogowania jako root.
OrangeTux,
@OrangeTux Masz rację, przepraszam, powiedziałem to, ponieważ testowałem bez podania pełnej ścieżki rebootpolecenia. W przeciwnym razie nie będzie działać. Zobacz moje nowe zmiany.
Radu Rădeanu
@NikTh Myliłem się, patrz powyższy komentarz .
Radu Rădeanu
1

Pamiętaj, że umieszczenie hasła w postaci zwykłego tekstu w pliku tekstowym nie jest dobrym pomysłem, dlatego najlepiej jest uruchamiać to zadanie jako root od samego początku. Zwykle zamiast edytowania pliku crontab roota za pomocą crontabpolecenia, które pozostawia wpisy w /var/spool/cron/crontabsnieco tajemniczej lokalizacji, wolę wprowadzić je wprost /etc/cron.d. Wpisy w pliku cron.d są uruchamiane jako wpisy w systemie crontab, są traktowane jako pliki konfiguracyjne, dlatego powinny przetrwać ponowne uruchomienie systemu, aktualizacje i aktualizacje, a użytkownik może jawnie określić działającego użytkownika:

echo "0 3 * * * root /sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.d/reboot-at-3-am

Jeśli nie potrzebujesz określonego czasu, a po prostu chcesz, aby system uruchamiał się ponownie raz dziennie, dodaj plik wykonywalny lub skrypt /etc/cron.dailyi będzie on automatycznie uruchamiany o określonej godzinie (domyślnie czas systemowy 06:25):

echo "/sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.daily/reboot-me

Zauważ, że zamiast po prostu restartować system bez ostrzeżenia, ustawiam 5-minutowe ostrzeżenie, więc jeśli ktoś jest zalogowany, ma szansę zapisać swoją pracę, a nawet przerwać zamykanie sudo shutdown -c, zamiast ściągać system zejść spod nich. Możesz odpowiednio je dostosować, jeśli chcesz dać więcej obszernych ostrzeżeń (na przykład użyj shutdown -h 60i uruchom polecenie o 2:00 rano, a otrzymasz hojne ostrzeżenie 1-godzinne).

Jest to oparte na moich przeszłych doświadczeniach; w pewnym momencie będzie można zalogować się w pracy, gdy crontab biegnie wpis, a jeśli to tylko restartuje bez ostrzeżenia będziesz bardzo smutny panda.

roadmr
źródło
-1

Dlaczego chcesz - lub musisz to zrobić? Chociaż jest to dość proste, prawie na pewno istnieje lepsze rozwiązanie dla Linuksa, które nie wymaga ponownego uruchomienia. W przeciwieństwie do systemu Windows, systemy operacyjne oparte na Linuksie nie wymagają ponownego uruchamiania prawie do niczego poza aktualizacjami jądra.

Jeśli wyjaśnisz, co próbujesz osiągnąć, prawdopodobnie możemy Ci pomóc lepiej.

Jack Knight
źródło
3
Chce zrestartować komputer co noc, aby się zrestartował
Michael Butler