Crootab root nie działa

10

Z jakiegoś powodu mój plik crontab wydaje się nie działać.

Próba ponownego uruchomienia urządzenia co noc o północy.

Powinien być następujący jako root:

crontab -e

Następnie dodaj:

0 0 * * * /sbin/shutdown -r now

Kiedy testuję przy użyciu niektórych wartości zamykających bieżący czas, nic się nie dzieje. Zainstalowałem NTP i upewniłem się, że strefa czasowa jest poprawna. Podaję również za pomocą zegara 24-godzinnego. Na przykład, aby teraz przetestować tę linię (17:35), próbuję wprowadzić następujące informacje:

36 17 * * * /sbin/shutdown -r now

Sprawdziłem godzinę z datą -R. Czas na uruchomienie crontab przychodzi i odchodzi, a system nie uruchamia się ponownie. Czego tu brakuje?

Atomiklan
źródło
Dla pewności zamykasz plik crontab po jego edycji, prawda? W jaki sposób „działałeś jako root”? Jaka jest wydajność sudo crontab -l | grep -v '#'?
terdon
Dlaczego ten otagowany debian ? Jeśli chodzi o Debiana, a nie Ubuntu, zapytaj na Unixie i Linuksie .
muru
Ponieważ uważam, że debian jest rdzeniem Ubuntu.
Atomiklan

Odpowiedzi:

11

Mam trzy propozycje rozwiązania dla Ciebie.

  1. Wywołaj crontab za pomocą crontab -e -u root

  2. Upewnij się, że masz pustą linię na końcu pliku cronjob, co oznacza, że ​​każda linia kończy się nową linią.

  3. Może być konieczne przekierowanie danych wyjściowych do devnull: shutdown -r now > /dev/null

Oto dwie pomocne strony dla cronjobs:

CRON Tester

Generator CRON

Możesz również poradzić sobie z cronjobs starannie za pomocą webmina .

Poza tym masz co najmniej dwa sposoby na ponowne uruchomienie komputera o północy.

Jednym z nich jest uruchomienie komendy shutdown jako skryptu automatycznie przy logowaniu, ale z określonym czasem jako parametrem zamiast „teraz”:

shutdown -r 00:00

Jednak przy każdym logowaniu pojawi się komunikat o zbliżającym się wyłączeniu (może nie być wcale taki zły). Cóż, możesz to również uruchomić w czasie rozruchu, dodając skrypt w init.d, ale nadal wyświetla komunikat.

Innym jest użycie atpolecenia:

at 0am

Wpisz polecenie shutdown -r nowi zapisz je za pomocą ctrl + d lub wykonaj skrypt dla polecenia i wykonaj:

at -f restart_script.sh 0am

Mam nadzieję, że pomogą ci one uzyskać pożądany rezultat.

Ahti Komu
źródło
Rozwiązaniem było wyjście na dev null. Zastanawiam się dlaczego?
Atomiklan
Dzieje się tak, ponieważ zadanie cron ma własne środowisko, w którym nie ma takiego standardowego systemu wejścia / wyjścia, jakiego można oczekiwać, a proces kończy się niepowodzeniem, ponieważ próbuje przesyłać strumieniowo wiadomości do brakującego potoku wyjściowego. Zadanie Crona jest w rzeczywistości czymś zupełnie innym niż uruchamianie komend w terminalu jak każdy użytkownik. Miło mi słyszeć, że mimo wszystko działa.
Ahti Komu
0

Zadania System Cron są wymienione w pliku / etc / crontab. Dlatego bezpośrednia edycja tego pliku pomoże ci uruchomić polecenie restartu jako root.

w związku z tym,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

upewnij się, że sprawdziłeś plik dziennika Cron po edycji crontab, ponieważ poinformuje cię, czy cron został pomyślnie zainstalowany.

Przetestowałem to i działało dla mnie. Zrestartowałem mój system o 20:23

Powodzenia!

Łamacz reguł 4
źródło
-3

36 17 * * * itd.

36 17 nie jest sposobem na określenie właściwego czasu w twoim cronie.

sprawdź komendę date, aby sprawdzić, czy Twój system działa w czasie amerykańskim czy europejskim

użyj 17 36 jeśli czas europejski i jeśli twój system używa godziny 24 godzinnej lub 5 36 jeśli twój system używa czasu amerykańskiego i godziny 12-tej

Toto
źródło
Nie prawda! Cron nie używa 12-godzinnego formatu czasu, a format zawsze wynosi mm hh DD MM WD.
Ahti Komu
Następnym razem przeczytaj cały post.
Atomiklan