Ведение журнала каждый раз, когда выполняется команда

Я хочу регистрировать каждый раз, когда я запускаю определенный тип команды в терминале. Например, каждый раз, когда я запускаю:

sudo apt-get install [something]

Я хочу добавить [something] в файл журнала в моем домашнем каталоге, который будет выглядеть следующим образом:

[timestamp] [something]
2012-10-02 mysql-server
2012-10-03 ruby1.9.1
2012-10-06 gedit-plugins
2012-10-07 gnome-panel synaptic

Каков самый простой способ сделать это автоматически?

1
задан 3 October 2012 в 06:33

1 ответ

Обратите внимание, что любое использование sudo в системе уже будет зарегистрировано в /var/log/auth.log. Этот файл также содержит другую информацию, связанную с авторизацией (см. Более подробные сведения о файлах журналов).

Sudo также регистрирует больше, чем только временную метку, но также и пользователя, который вызывается sudo, рабочий каталог и т. Д. Если вы хотите просто извлечь использование apt-get install и только зарегистрировать имя пакета, это сделало бы это:

zcat /var/log/auth.log* | awk  '/apt-get install/ {print $1 " " $2 " " $16}'

Я не знаю, важно ли форматирование даты, Я не беспокоился, потому что в том числе, что в приведенной выше командной строке было бы более длинным и менее удобочитаемым. Но если вы хотите иметь более длинный скрипт bash, который преобразует формат, date -I -d "Apr 27" преобразует его для вас.

(Кстати, ваш пользователь должен быть членом группы adm, чтобы читать /var/log/auth.log. Если вы видите Permission denied, вам может потребоваться добавить команду grep с помощью или добавьте себя в группу с помощью sudo addgroup USERNAME adm, где USERNAME - ваше имя пользователя.)

1
ответ дан 25 May 2018 в 05:54

Другие вопросы по тегам:

Похожие вопросы: