Zatrzymaj Ubuntu przed automatyczną aktualizacją czasu

4

Muszę tylko tymczasowo ustawić datę. Prowadzę to

date 051918002010.00

i przykleja się tylko przez około 5 sekund. Następnie synchronizuje się z serwerem czasu. Próbowałem:

ps aux | grep ntp

ale nic tam nie ma.

Potrzebuję teraz poprawnej odpowiedzi, później bardziej szczegółowej odpowiedzi :)

Edycja: Jak szybko odkryli autorzy odpowiedzi, moje Ubuntu działa w VirtualBox, co okazało się odpowiednie dla niektórych wersji odpowiedzi. Dziękuję wszystkim.

Dan Rosenstark
źródło
Dlaczego próbujesz to zrobić, jaki jest cel?
Jeffrey Vandenborne,
1
rozwój, symulowanie sytuacji.
Dan Rosenstark,

Odpowiedzi:

7

Wygląda na to, że naprawdę szukasz sposobu na uruchomienie programu, aby program uznał, że działa on pod inną datą i godziną.

Pytanie o to zostało zadane wcześniej: analog Linux RunAsDate? Poniżej znajduje się odpowiedź, którą tam podałem. Zauważ, że próbujesz wybrać opcję 3.

ntpdatePakiet nie jest demonem i powinno nie być aktualizowania czasu systemowego automatycznie (powinien działać od razu na starcie i nie więcej). Nie znam się zbytnio na VirtualBox, ale domyślam się, że masz ntpdzainstalowany lub Dodatki dla gości VirtualBox synchronizują czas bezpośrednio z systemu operacyjnego hosta, w takim przypadku musisz je wyłączyć lub użyć jednego z biblioteki opakowań wymienione poniżej w Opcji 2.

Aktualizacja : Wygląda na to, że zainstalowano Dodatki dla gości VirtualBox /usr/sbin/vboxadd-timesync- Domyślam się, że jest to plik wykonywalny, który synchronizuje zegar gościa z zegarem hosta. Sprawdź, czy jest zainstalowany skrypt startowy (ewentualnie /etc/init.d/vboxadd-timesync); jeśli tak, możesz zatrzymać synchronizację z sudo /etc/init.d/vboxadd-timesync stop. Jeśli nie ma skryptu uruchamiania, prawdopodobnie możesz po prostu killsam proces.


Co RunAsDate robi jest następujący:

RunAsDate przechwytuje wywołania interfejsu API jądra, które zwracają bieżącą datę i godzinę (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime) i zastępuje bieżącą datę / godzinę podaną datą / godziną.

Pod Linuksem masz kilka opcji, aby osiągnąć to samo:

  1. Jeśli możesz uzyskać wersję programu dla systemu Windows, możesz być w stanie uruchomić RunAsDate w Wine (ale uważaj na najnowszy błąd ).

  2. Znajdź bibliotekę opakowań, aby to zrobić, lub napisz własną. Niektóre opcje podano poniżej.

  3. Użyj maszyny wirtualnej. Jest to przesada, ale ponieważ system operacyjny w maszynie wirtualnej gościa jest całkowicie oddzielony od hosta bazowego, możesz ustawić czas systemowy na coś zupełnie innego. Konfiguracja może być szybsza niż w przypadku innych opcji.


Opcję 2 można osiągnąć różnymi metodami, w zależności od tego, co próbujesz uruchomić. Odpowiedź DaveParillo poniżej prowadzi do metody DIY, która wyjaśnia różne metody i zawiera kod pliku wykonywalnego. Niektóre inne opcje obejmują:

  • datefudge, dostępne w repozytoriach Debian / Ubuntu i innych miejscach.

  • Moduł Perla Time-Fake , także w repozytoriach Debiana jako pakiet libtime-fake-perl.

  • FakeTime Preload Library (alias libfaketime, freshmeat link ), biblioteka, która może przechwytywać wywołania systemowe w dynamicznie połączonych plikach binarnych. Dostępne w repozytoriach Debiana dla Squeeze i Sid.

quack quixote
źródło
sudo /etc/init.d/vboxadd-timesync przestań działać! Wielkie dzięki ~ kwak
Dan Rosenstark,
Wow, datefudge działa również doskonale na Ubuntu. Bardzo słodkie. Dzięki jeszcze raz!
Dan Rosenstark,
2
Tylko dla moich notatek, jeśli nie masz nic przeciwko: datefudge „Śr 16 grudnia 15:20:28 EST 2008” ruby ​​skrypt / konsola
Dan Rosenstark
Jedyne, czego brakuje na początku odpowiedzi, to: „Nie bądź zły, korzystając z tych informacji”.
Radu Maris,
5

Ponieważ odpowiedź na komentarz do Dana McGa wydaje się wskazywać, że używasz Ubuntu jako gościa VirtualBox, jeśli zainstalowałeś dodatki dla gości VirtualBox, wówczas automatycznie zsynchronizują czas gościa z czasem hosta.

ps -ef | grep VBoxService

powinien pokazać działającą usługę dodawania gości VirtualBox.

Następnie możesz spróbować:

sudo /etc/init.d/vboxadd-service stop

zatrzymać go do momentu ponownego uruchomienia.

Nick Meyer
źródło
Spróbuję wtedy przerwać połączenie sieciowe z gościem.
Dan Rosenstark,
Inteligentne myślenie, wszystko jest teraz tak jasne, na zdrowie!
Jeffrey Vandenborne,
@ Yar, nie jestem pewien, czy przechodzi przez wirtualne połączenie sieciowe gościa. Prawdopodobnie pobiera wartość zegara systemowego hostów poprzez proces VirtualBox.
Nick Meyer,
@Nick Czy nie jest dostępny plik konfiguracyjny lub okno dialogowe konfiguracji dla dodatków gości vbox? Może może zmienić synchronizację czasu. pochodząc z vmware, nie mam z tym dużego doświadczenia.
Jeffrey Vandenborne,
to było świetne, ale: 1) Podczas gdy pracuję jako gość VirtualBox, usługa VBoxService nie jest ładowana (chyba nigdy nie rozszerzyłem) 2) usługa vboxadd nie istnieje 3) nawet zabicie obu połączeń sieciowych powoduje czas przywrócić w ciągu kilku sekund
Dan Rosenstark,
3

Szybka odpowiedź: rozłącz połączenie sieciowe :)

Dan McGrath
źródło
Nie jestem nawet pewien, jak to zrobić, ponieważ wydaje się, że dostaje czasu od ... hosta VirtualBox? A może… nie jestem pewien, ale odłączenie Internetu nie pomogło.
Dan Rosenstark,
Jeśli korzystasz z sieci przewodowej, sprawdź ikonę sieci w górnym panelu (zakładam, że nie poprawiłeś swojego pulpitu), kliknij ją i wybierz rozłącz.
Jeffrey Vandenborne,
Problem polega na tym, że nntp kontynuuje, jak się wydaje, podobnie jak stopniowe aktualizacje. W każdym razie synchronizacja czasu nie kończy się bez połączenia z Internetem.
Dan Rosenstark,
sudo apt-get remove ntpdate
Jeffrey Vandenborne
3

Możesz także spojrzeć na „ libfaketime ”, które jest zawarte w Ubuntu / Debian.

Pozwala sfałszować czas systemowy dla programu bez konieczności zmiany czasu całego systemu (przechwytując wywołania systemowe za pomocą LD_PRELOAD)

jor
źródło
2

Możesz uruchomić VBoxManage setextradata <guest-vm-name> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1w systemie operacyjnym hosta, aby wyłączyć automatyczną synchronizację czasu.

Roc White
źródło