Используйте getent
для перечисления домашних каталогов.
getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern"
Если ваши домашние каталоги находятся в известном месте, это может быть так же просто, как
grep -e "$pattern" /home/*/.bash_history
Конечно, если пользователь использует другую оболочку или другое значение HISTFILE
, это мало что скажет. Это также не скажет вам о командах, которые не выполнялись через оболочку, или о псевдонимах и функциях, а также удаленных в настоящее время внешних командах, которые были в каком-то пользовательском каталоге на ранних этапах $PATH
. Если вы хотите знать, какие команды запускают пользователи, вам нужен учет процессов или какая-то более совершенная система аудита; см. Мониторинг активности на моем компьютере. , Как проверить , как долго процесс бежал после того, как он закончил? ,