Muszę znaleźć ostatni raz, kiedy
apt-get update
polecenie zostało uruchomione na moim serwerze. Jak mogę ustalić te informacje?
Przynajmniej w systemach Ubuntu istnieje plik /etc/apt/apt.conf.d/15update-stamp zawierający:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Sprawdź, czy masz / var / lib / apt / periodic / update-success-stamp, a jeśli go masz, możesz użyć
stat -c %y /var/lib/apt/periodic/update-success-stamp
polecenie, aby uzyskać czas ostatniego wywołania „apt-get update”.
A jeśli twój system nie ma tego pliku konfiguracyjnego apt, zawsze możesz go dodać.
/var/lib/apt/periodic/update-stamp
Możesz sprawdzić czasy dostępu do plików w / var / lib / apt / list, które są aktualizowane po uruchomieniu aktualizacji apt-get. Jeśli aktualizacja apt-get została uruchomiona z sudo, powinieneś mieć zalogowany wiersz w /var/log/auth.log, kiedy to zostało zrobione.
źródło
apt-get update
Nie mogą tworzyć lub pliki aktualizacji, to nie aktualizuje katalogu pamięci podręcznej tak, że możemy użyć, aby uzyskać znacznik czasu, gdy ostatniapt-get update
był prowadzony:źródło
apt-get update
Nie odchodź od plików blokady. Zablokuj pliki nie są niezawodne, mają tendencję do przemieszczania się w miarę upływu czasu wraz z nowymi wersjami Linuksa, a wiele programów oczyszcza (usuwa) pliki blokujące, gdy z nimi skończysz.
Następujące polecenie zapewni ci to, czego szukasz.
To są dwa polecenia w jednym. Wyniki pierwszego polecenia filtrują do drugiego przez symbol potoku (|).
W pierwszym poleceniu używam „ls”, aby wyświetlić zawartość pliku katalogu / var / log / apt, który jest katalogiem przechowującym dzienniki historii dostępu dla apt-get. Część „-lt” to tak naprawdę dwa przełączniki. Pierwszy przełącznik „l” mówi „ls”, aby szczegółowo wypisał jeden plik w wierszu. Drugi przełącznik „t” nakazuje „ls” sortowanie według daty i godziny. „--time-style” wymusza wyświetlanie daty i godziny w formacie „RRRR-MM-DD GG: MM”.
W części polecenia „grep” przełącznik „-o” mówi grep, aby pokazywał tylko te części każdego wiersza, które dokładnie pasują do wyrażenia regularnego. Użyte tutaj wyrażenie regularne wykrywa daty, które są w formacie określonym w poleceniu „ls”. Na końcu komendy „grep” zauważysz również prawdziwy kawałek magii, że jest przełącznik „-m” z cyfrą „1” bezpośrednio po nim. To mówi „grep”, aby przestał szukać meczów po znalezieniu pierwszego.
Podsumowując, podajemy szczegóły pliku dziennika apt, abyśmy mogli zobaczyć datę ostatniej modyfikacji, następnie sortujemy według daty i mówimy grepowi, aby usunął pierwszą datę z góry, którą następnie zwraca. To ostatnia data, w której apt-get został uruchomiony.
Jednak aby przez chwilę grać w adwokata diabła, platformy Debiana, takie jak Ubuntu, często planują apt-get jako zadanie, które będzie regularnie wykonywane. Jeśli szukasz osoby na drugim końcu wykonywania apt-get, możesz faktycznie znaleźć maszynę. Zawsze możesz dopasować dzienniki dostępu do dzienników apt, aby sprawdzić, czy znaczniki czasu się pokrywają. Można również w pewnym stopniu przejrzeć historię poleceń użytkownika.
Mam nadzieję że to pomoże!
źródło
/var/log/apt
nim jest również rejestrowane, kiedy na przykład zrobićapt-get install some-package
. Właściwie na Ubuntu nie loguje się, kiedy to robięapt-get update
Podejrzewam, że możesz sprawdzić czasy ostatniej modyfikacji plików / var / cache / apt, aby dowiedzieć się, kiedy ostatnie aktualizacje zostały zastosowane do list pakietów.
Właśnie to przetestowałem i uruchomiłem „sudo apt-get update” dwa razy z rzędu, a daty nie zmieniły się w stosunku do ich bieżącej wartości, ale podejrzewam, że dzieje się tak, ponieważ nie było nowych aktualizacji do zastosowania i że pamięci podręczne są uruchomione spotykać się z kimś.
źródło
źródło
Synaptic rejestruje plik historii (> Plik> Historia), aptitude rejestruje zarówno historię w / var / log / aptitude, jak i automatycznie instalowane pakiety w / var / lib / aptitude / pkgstates, abyś mógł sprawdzić ich najnowszą aktywność.
źródło
Używam,
/var/cache/apt
aby ustalić, czy muszę uruchomićapt-get update
. Domyślnie, jeśli różnica między bieżącym czasem a czasem buforowania/var/cache/apt
wynosi mniej niż 24 godziny, nie muszę uruchamiaćapt-get update
. Domyślny interwał aktualizacji można zastąpić, przekazując liczbę do funkcjirunAptGetUpdate()
Przykładowe dane wyjściowe:
Wyodrębniłem te funkcje z mojego osobistego github: https://github.com/gdbtek/ubuntu-cookbooks/blob/master/libraries/util.bash
źródło
info
iisEmptyString
? Ponadtoinfo
jest zły wybór nazwy funkcji, ponieważ jest to również polecenie. Poza tym fajne rozwiązanie!/var/log/dpkg.log będzie przechowywać historię tego, co zostało zrobione, ale niekoniecznie która aplikacja o nazwie dpkg (synaptic, apt-get itp.).
źródło
zawiń apt-get w skrypcie, który najpierw zapisuje znacznik czasu do pliku, a następnie wykonuje zwykłą pracę. w ten sposób możesz zdefiniować format i lokalizację znacznika czasu;)
źródło
Oto prosty linijka do uruchomienia aktualizacji, jeśli nie została uruchomiona w ostatnim dniu.
Poszukuje pliku pieczęci aktualizacji, który został zmodyfikowany ponad jeden dzień temu. Jeśli znajdzie plik w odpowiednim wieku, uruchomi aktualizację. Uwaga: aby to zadziałało, musi istnieć plik pieczęci aktualizacji.
źródło