Jak mogę sprawdzić historię poleceń użytkownika w Uniksie?

13

Wiem, że polecenie „historia” daje mi listę poleceń, które wpisałem w terminalu Unix.

Jak wyświetlić historię poleceń dla wszystkich użytkowników aktualnie zalogowanych w systemie?

Gafel
źródło
Nie związany z programowaniem. Sugeruję, aby zapytać na superuser.com .
Nie ma standardowego narzędzia do uzyskania informacji, więc myślę, że jest to związane z programowaniem (przynajmniej w sensie „skryptowania”).
IanH

Odpowiedzi:

11

Otrzymasz listę aktualnie zalogowanych użytkowników w /var/run/utmp(patrz man 5 utmp). Historia jest przechowywana w ~ / .history lub dla użytkownika bash w ~ / .bash_history. Inne powłoki mogą korzystać z innych plików historii, więc nie jest tak łatwo uzyskać naprawdę wszystkie informacje.

Ponadto, jeśli użytkownik jest zalogowany wiele razy, plik .bash_history nie zawsze jest niezawodny.

Aby odczytać utmpplik who, wywoływana jest „nakładka” , dzięki czemu można również napisać skrypt powłoki, aby iterować aktualnie zalogowanych użytkowników.

IanH
źródło
2
Obecna historia jest przechowywana w pamięci. Plik historii pokazuje tylko to, co zostało napisane przy użyciu history -alub podobnie lub gdy użytkownik opuści powłokę.
Wstrzymano do odwołania.
2
Pamiętaj, że nazwy plików podane w tej odpowiedzi są jedynie wartościami domyślnymi. Każdy użytkownik mógł ustawić własną lokalizację (patrz odpowiedź Joy). Jeśli użytkownik używa różnych powłok, może przechowywać swoje historie w różnych domyślnych lokalizacjach (np. ~ / Mybashhist, ~ / histories / ksh lub somesuch). Pamiętaj też, że zerkanie takich danych użytkownika może mieć konsekwencje prawne.
DevSolar,
3
echo $HISTFILE

Następnie przejrzyj ten plik.

Radość
źródło
1
Działa to tylko wtedy, gdy wcześniej pozyskałeś środowisko tego użytkownika (ponieważ mógł on ustawić HISTFILEcoś innego).
DevSolar,