Zwykle zadania Cron działają w czasie lokalnym zdefiniowanym w systemie. Możesz jednak preferować uruchomienie zadania Crona w innej strefie czasowej bez konieczności zmiany godziny i daty serwera.
Możesz sprawdzić swój czas lokalny za pomocą polecenia timedatectl w następujący sposób:
$ timedatectl
Możesz również użyć polecenia data w następujący sposób:
$ data
Jak więc ustawić inną strefę czasową dla Crontabs?? Dowiedzmy Się.
Jak ustawić strefę czasową dla Crontabs
W lokalnym systemie Linux strefy czasowe są zwykle określone w /usr/share/zoneinfo informator. Katalog zawiera listę kontynentów i krajów oraz ich stref czasowych, jak pokazano poniżej.
$ ls /usr/share/zoneinfo/
Możesz łatwo dostosować bieżącą strefę czasową do innej, korzystając z pokazanej składni. Na przykład, aby ustawić system na czas w Tokio w Japonii, po prostu wykonaj:
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokio /etc/localtimeNie możesz jednak zmienić czasu systemu, zwłaszcza gdy wielu użytkowników planuje różne zadania Crona. Wpłynęłoby to na czas działania ich zadań Cron.
Na szczęście możesz skonfigurować konkretną strefę czasową dla swojego zadania Cron w następujący sposób:
Najpierw musisz wyeksportować zmienną TZ w skrypcie powłoki przed innymi wpisami powłoki Shell. Następnie przejdź do swojego crontab i użyj zmiennej środowiskowej crontab CRON_TZ na początku pliku crontab.
Załóżmy, że chcę ustawić zadanie Cron, aby uruchamiało skrypt kopii zapasowej o 14:20 każdego dnia w Europa/Londyn czas, a nie mój czas lokalny. Mój czas lokalny jest 2 godziny przed czasem londyńskim, więc o 14:20 w Londynie, mój czas lokalny będzie 16:20 lub 1420 HRS.
Najpierw przejdź do pliku skryptu powłoki i wyeksportuj zmienną TZ przed innymi wpisami w skrypcie. Sprawdź, co zrobiłem w moim skrypcie Shell.
EKSPORT TZ=Europa/Londyn
Zapisz zmiany i wyjdź ze skryptu.
Następnie uzyskaj dostęp do pliku crontab, uruchamiając polecenie:
$ crontab -eUpewnij się, że zdefiniowałeś zmienną crontab CRON_TZ przed wszystkimi innymi wpisami Crona w następujący sposób.
CRON_TZ=Europa/Londyn20 14 * * * /dom/james/kopia zapasowa.cii
Zapisz i wyjdź z crontab. Aby mieć pewność co do ustawień, możesz wyświetlić crontab za pomocą polecenia:
$ crontab -lTak więc, gdy zegar tykał 14:20 czasu londyńskiego, co odpowiada 16:40 czasu lokalnego lub 1620 HRS, tworzenie kopii zapasowej powiodło się.
Wniosek
Ten przewodnik jest doskonałą demonstracją, że możesz ustawić określoną strefę czasową dla swoich Crontabs bez zmiany czasu systemowego. W ten sposób możesz skonfigurować różne zadania, aby działały w różnych strefach czasowych, aby dopasować je do swoich potrzeb, na przykład, jeśli chcesz wysyłać e-maile do subskrybentów z określonej strefy czasowej w ich czasie, a nie w Twoim czasie lokalnym.