Bagaimana saya bisa memeriksa riwayat perintah pengguna di Unix?

13

Saya tahu perintah 'sejarah' memberi saya daftar perintah yang saya ketik di terminal Unix.

Bagaimana cara melihat riwayat perintah untuk semua pengguna yang saat ini masuk ke sistem?

Taji
sumber
Tidak terkait pemrograman. Saya sarankan Anda bertanya di superuser.com .
Tidak ada alat standar untuk mendapatkan informasi, jadi saya pikir ini pemrograman (setidaknya dalam arti 'scripting') - terkait.
IanH

Jawaban:

11

Anda mendapatkan daftar pengguna yang saat ini masuk /var/run/utmp(lihat man 5 utmp). Riwayat disimpan di ~ / .history atau untuk pengguna bash di ~ / .bash_history. Kerang lain mungkin menggunakan file riwayat lain, jadi tidak mudah untuk mendapatkan semua informasi.

Selain itu, jika pengguna login berkali-kali, file .bash_history tidak selalu dapat diandalkan.

Untuk membaca utmpfile ada "frontend" yang dipanggil who, jadi Anda juga bisa menulis shell-script untuk beralih pada pengguna yang sedang login.

IanH
sumber
2
Riwayat saat ini disimpan dalam memori. File riwayat hanya menunjukkan apa yang ditulis menggunakan history -aatau serupa atau ketika pengguna keluar dari shell.
Dijeda sampai pemberitahuan lebih lanjut.
2
Perhatikan bahwa nama file yang diberikan dalam jawaban ini hanyalah default. Setiap pengguna bisa mengatur lokasinya sendiri (lihat jawaban Joy). Jika pengguna menggunakan shell yang berbeda, mereka dapat menyimpan histori mereka di lokasi yang berbeda dan non-default (misalnya ~ / mybashhist, ~ / histories / ksh atau semacamnya). Perlu diketahui juga bahwa mengintip data pengguna seperti itu mungkin memiliki implikasi hukum.
DevSolar
3
echo $HISTFILE

Kemudian lihat file itu.

Kegembiraan
sumber
1
Ini hanya berfungsi jika Anda sebelumnya telah bersumber dari lingkungan pengguna itu (karena ia mungkin telah mengatur HISTFILEsesuatu yang lain).
DevSolar