- How do I log all input and output in a terminal session?
- 4 Answers 4
- Linux логи командной строки
- Директория /var/log
- Просмотр содержимого файла системного журнала с помощью утилиты less
- Просмотр сообщений ядра ОС с помощью утилиты dmesg
- Просмотр содержимого файла системного журнала с помощью утилиты tail
- Существуют и другие инструменты
How do I log all input and output in a terminal session?
How do I keep logs of all the work done via terminal? For example, I want a record of all the work done on database via terminal.
4 Answers 4
When you are ready to start recording a log file, type:
Now, until you stop the script, all input and output in the Terminal will be stored in screen.log. When you are done, just type:
Your screen.log file will stored in the local directory. If you want to redirect it, use an absolute pathname such as ~/screen.log . This will do exactly what you are looking for.
Hi, thanks for the reply. But will this work if I login to the mysql database from the shell using the following sequence:- 1) script screen.log 2)mysql -u
it should work with everything running in the console reading from «standard input» (usually your keyboard) and writing to standard output (usually your terminal window). So it should include the mysql command-line client. The man page ( man script ) even mentions vi (editor).
You may want to try out Asciinema. In addition to just making a recording you get the ability to share it and embed the player on your blog, article or in a conference talk.
I have a better way to use syslog for logging every shell command this can be vary upon linux distribution but method will remain same
You need to follow some steps:
Step # 1 (Create Syslog service)
# vim /etc/rsyslog.d/bash.conf local6.* /var/log/commands.log
Step # 2 (Open bashrc and enter below command)
# vim /root/.bashrc # Enable CLI Logging by Mansur 08-12-2016 whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*2\+[ ]*//" ) [$RETRN_VAL]"'
Ste # 3 (Restart Syslog Service)
Dec 7 22:13:00 validationdb2 mahasan: root@export [13291]: tail -f /var/log/mysql/mysql.log [0] Dec 7 22:13:09 validationdb2 mahasan: root@export [13291]: ls -lh [0] Dec 7 22:13:27 validationdb2 mahasan: root@export [13291]: touch test command [0]
Linux логи командной строки
Библиотека сайта rus-linux.net
/var/log . В ней находятся все файлы журналов системы и служб, с которыми вы наверняка будете плотно работать в том случае, если у вас возникнут какие-либо проблемы с системой или с одной из ее основных служб. Файлы с информацией о событиях, происходящих на уровне отдельных приложений с графическим интерфейсом, могут располагаться в различных директориях (например, приложение Thunderbird сохраняет файлы с информацией о событиях аварийного завершения работы в директории «/.thunderbird/Crash Reports» ). Путь к директории, в которой будут храниться файлы журнала событий, происходящих на уровне каждого отдельного приложения с графическим интерфейсом, зависит от намерений разработчика этого приложения, а также возможности указания произвольного пути к этой директории.
В данной статье мы сфокусируем свое внимание на файлах системных журналов, так как они чаще всего используются в процессе диагностики Linux-систем. А главный вопрос, на который мы постараемся ответить, звучит следующим образом: «Как просмотреть содержимое этих файлов?».
К счастью, существует несколько подходов к просмотру содержимого файлов системных журналов, каждый из которых связан с использованием интерфейса командной строки системы.
Директория /var/log
Данная директория является одной из наиболее важных директорий Linux-систем. Откройте окно терминала и выполните с помощью него команду cd /var/log . Теперь выполните команду ls и ознакомьтесь со списком всех файлов системных журналов из этой директории (Рисунок 1).
Рисунок 1: Список файлов из директории /var/log.
А теперь давайте попытаемся получить доступ к содержимому одного из этих файлов.
Просмотр содержимого файла системного журнала с помощью утилиты less
Одним из наиболее важных файлов из директории /var/log является файл syslog . Этот файл содержит все сообщения о системных событиях за исключением сообщений о событиях, связанных с авторизацией. Предположим, что вы хотите просмотреть содержимое этого файла. Для этого вы можете просто выполнить команду less /var/log/syslog . Эта команда позволяет открыть файл системного журнала для чтения сообщений с начала. Вы можете использовать кнопки со стрелками для прокрутки содержимого файла по строкам, пробел для прокрутки содержимого файла по страницам или колесико мыши для быстрой прокрутки его содержимого.
Единственная проблема данного метода заключается в том, что размер файла syslog со временем может стать сравнительно большим; и, ввиду того, что интересующее вас сообщение будет наверняка находиться ближе к его концу, вам может быть неудобно листать строки или страницы до достижения конца файла. Поэтому после открытия файла syslog с помощью утилиты less вы также можете воспользоваться сочетанием клавиш Shift+g для немедленного перехода к концу файла. Конец файла будет обозначен с помощью специальной метки ( END ). После этого вы сможете пролистать содержимое файла вверх с помощью клавиш со стрелками или колесика мыши и найти интересующее вас сообщение.
Конечно же, такой подход не является самым эффективным.
Просмотр сообщений ядра ОС с помощью утилиты dmesg
Утилита dmesg позволяет получить доступ к содержимому кольцевого буфера, который используется для хранения информации о событиях, происходящих на уровне ядра ОС. По умолчанию данная утилита выводит все сообщения из этого кольцевого буфера. Воспользуйтесь окном терминала для выполнения команды dmesg и убедитесь в том, что все содержимое кольцевого буфера было успешно выведено (Рисунок 2).
Рисунок 2: Проблема с внешним накопителем с интерфейсом USB требует дополнительного исследования.
К счастью, существует встроенный механизм, позволяющий выводить лишь сообщения, соответствующие определенному критерию (например, связанные с работой демонов).
Предположим, вам нужно получить сообщения уровня пользователей и вы хотите использовать критерий «user» . Для этого достаточно выполнить команду dmesg —facility=user . Если какие-либо из сообщений будут соответствовать этому критерию, они будут выведены.
В отличие от утилиты less , утилита dmesg выведет все содержимое кольцевого буфера и переместит вас в конец вывода. При этом вам ничто не помешает использовать колесико мыши для просмотра содержимого буфера окна терминала (конечно же, если такая функция поддерживается эмулятором терминала). Если же вы хотите передать вывод утилиты dmesg на ввод утилиты less , вы можете воспользоваться следующей командой:
Приведенная выше команда выведет информацию, переданную утилитой dmesg и позволит вам перемещаться в рамках строк сообщений таким же образом, как и в случае просмотра содержимого обычного файла журнала с помощью утилиты less .
Просмотр содержимого файла системного журнала с помощью утилиты tail
Утилита tail , скорее всего, является одним из наиболее полезных инструментов, для просмотра файлов системных журналов. tail осуществляет вывод завершающих строк текстовых файлов. Таким образом, если вы выполните команду tail /var/log/syslog , будет выведено несколько последних строк из файла системного журнала syslog .
Но подождите, веселье еще не закончилось. Утилита tail поддерживает параметр -f , позволяющий выполнять очень удобный трюк. В случае исполнения команды tail -f /var/log/syslog утилита tail будет отслеживать изменения файла системного журнала и выводить строки, записываемые в него. Это означает, что вы можете отслеживать сообщения, записываемые в файл системного журнала с помощью окна терминала практически в реальном времени (Рисунок 3).
Рисунок 3: Отслеживание изменений в файле /var/log/syslog с помощью утилиты tail.
Благодаря возможности использования данного трюка утилита tail является незаменимым инструментом для диагностики системных проблем.
Для завершения работы утилиты tail (в режиме отслеживании изменений в файле) достаточно воспользоваться сочетанием клавиш Ctrl+x .
Вы также можете сообщить утилите tail о необходимости отслеживания лишь заданного количества строк. Предположим, что вам нужно получить лишь последние пять строк, записанные в файл системного журнала; в этом случае вы можете воспользоваться следующей командой:
Приведенная выше команда позволяет осуществить отслеживание событий записи строк в файл системного журнала и вывести в окно терминала лишь последние пять записанных в него строк. После записи в файл следующей строки будет осуществлена замена самой первой строки вывода вверху. Данный подход позволяет дополнительно упростить процесс отслеживания изменений в файлах системного журнала. Я настоятельно рекомендую не использовать данный параметр для отслеживания изменений менее чем четырех или пяти строк, так как в этом случае будет осуществляться автоматическая обрезка строк и вы не сможете ознакомиться с полными сообщениями, записываемыми в файл системного журнала.
Существуют и другие инструменты
Вы и сами сможете найти множество других утилит (и даже несколько отличных инструментов с графическим интерфейсом), позволяющих просматривать файлы системных журналов. Обратите внимание на такие утилиты, как more , grep , head , cat , multitail и System Log Veiwer , которые также могут пригодиться в случае возникновения необходимости в работе с файлами системных журналов.