web-dev-qa-db-ja.com

ターミナルセッションですべての入力と出力を記録するにはどうすればよいですか?

ターミナルを介して行われたすべての作業のログを保存するにはどうすればよいですか?たとえば、ターミナルを介してデータベースで行われたすべての作業の記録が必要です。

44
Ankit

ログファイルの記録を開始する準備ができたら、次のように入力します。

script screen.log

これで、スクリプトを停止するまで、ターミナルでのすべての入力と出力はscreen.logに保存されます。完了したら、次のように入力します。

exit

Screen.logファイルはローカルディレクトリに保存されます。リダイレクトする場合は、~/screen.logなどの絶対パス名を使用します。これはまさにあなたが探しているものです。

出典:buntuガイド-端末コマンドのログ方法

64
xlukasx

アシネマ を試してみてください。録音を作成するだけでなく、それを共有して、ブログ、記事、またはカンファレンストークにプレーヤーを埋め込むことができます。

10
sickill

すべてのシェルコマンドのログにsyslogを使用するより良い方法があります。これはLinuxディストリビューションによって異なる場合がありますが、方法は変わりません。

いくつかの手順に従う必要があります。

ステップ#1(Syslogサービスの作成)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

ステップ#2(bashrcを開き、以下のコマンドを入力します)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export Prompt_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste#3(Syslogサービスの再起動)

# /etc/init.d/rsyslog

ログのサンプルは次のとおりです。

 12月7日22:13:00 validationdb2 mahasan:root @ export [13291]:tail -f /var/log/mysql/mysql.log [0] 
 12月7 22:13:09 validationdb2 mahasan:root @ export [13291]:ls -lh [0] 
 Dec 7 22:13:27 validationdb2 mahasan:root @ export [13291]:タッチテストコマンド[0] 
6
Mansur Ali