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?


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.


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.


1
Działa to tylko wtedy, gdy wcześniej pozyskałeś środowisko tego użytkownika (ponieważ mógł on ustawić HISTFILEcoś innego).
DevSolar,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.