Как автоматически регистрировать время, затраченное на все команды, выполняемые пользователем в bash

#linux #bash #shell #time #syslog

#linux #bash #оболочка #время #системный журнал

Вопрос:

Я знаю, что для регистрации времени, затраченного на выполнение команды / скрипта в Linux, мы можем указать «time <command/ script>».

Тем не менее, я ищу любой способ, как я могу регистрировать все команды, введенные пользователем в оболочке bash, и время, затраченное на каждую команду, даже не вводя время перед каждой командой пользователем.

В основном в нашей организации нам необходимо отслеживать все команды, введенные пользователями, и получать время, затраченное на определенные команды на каждой машине. Возможно ли это вообще?

Комментарии:

1. Короче говоря — НЕТ. В пользовательской оболочке нет ничего, что регистрировало бы время каждой команды. Историю оболочки можно использовать, чтобы узнать, что было запущено, но не сколько времени заняла каждая команда.

2. Я позволю себе не согласиться. Вы могли бы взломать что-то вместе, измеряя время на стене, используя trap DEBUG и PROMPT_COMMAND . Однако злоумышленники всегда найдут способ обойти ваше ведение журнала.

3. Это может сработать для отдельных команд; если вы объединяете конвейеры, вам не повезло…

4. @tink Я так не думаю. Несмотря DEBUG на то, что выполняется перед каждой отдельной командой, PROMPT_COMMAND выполняется только при каждом приглашении, поэтому после каждого приглашения вы можете измерить время между первым DEBUG и следующим приглашением. Настоящая боль начинается с фоновых заданий ( cmd amp; ).