このガイドでは、スクリプトの使用方法を見ていきます。 およびscriptreplay 特定のセッション中に端末に出力されたコマンドとその出力を記録するのに役立つLinuxのコマンド。
historyコマンドは、コマンドの出力を保存しませんが、ユーザーが以前に使用したコマンドを保存するのに役立つ優れたコマンドラインユーティリティです。
Don ' tミス: Showterm.io –Linuxターミナルレコーディングツール
Don ' tミス: Linux用の8つの最高のデスクトップスクリーンレコーダー
したがって、スクリプト コマンドは、端末に印刷されたすべてのものを log_fileに記録するのに役立つ強力な機能を提供するのに便利です。 。 log_file からの履歴内のコマンドの出力を表示する場合は、後でこのファイルを参照できます。 。
scriptreplayを使用して記録したコマンドを再生することもできます タイミング情報を使用してコマンドを実行します。
スクリプトコマンドを使用してLinuxターミナルを記録する方法
スクリプト コマンドは、ユーザーが名前を付けることができるログファイルに端末アクティビティを保存します。ユーザーが名前を指定しない場合は、デフォルトのファイル名である typescript 使用されます。
スクリプトコマンドの基本構文
# script [options] - -timing=timing_file log_filename
Linuxターミナルの記録を開始するには、スクリプトと入力します ログのファイル名を追加します 示されているように。
[email protected] ~ $ script history_log.txt Script started, file is history_log.txt
スクリプトを停止するには 、「 exit」と入力します [Enter]を押します 。
[email protected] ~ $ exit Script done, file is history_log.txt
スクリプトが指定されたログファイルに書き込めない場合は、エラーが表示されます。
たとえば、以下の出力では、ファイルの権限 typescript ユーザーまたはグループによるファイルの読み取り、書き込み、および実行は許可されません。ログファイル名を指定せずにscriptコマンドを実行すると、デフォルトのファイル typescriptに書き込もうとします。 したがって、エラーが表示されます。
[email protected] ~ $ ls -l typescript --------- 1 ubuntu ubuntu 144 Sep 15 00:00 typescript [email protected] ~ $ script script: open failed: typescript: Permission denied Terminated
スクリプトコマンドの使用例
ログファイルにscript.logという名前を付けました 以下の例では、ファイルに別の名前を付けることができます。
[email protected] ~ $ script script.log
次に、いくつかのコマンドを実行して、スクリプトが実行されたコマンドを端末に記録できるようにします。
[email protected] ~ $ cal September 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [email protected] ~ $ w 14:49:40 up 4:06, 2 users, load average: 1.37, 1.56, 1.62 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT tecmint tty8 :0 10:45 4:06m 7:40 0.36s x-session-manager tecmint pts/5 :0 13:42 4.00s 0.07s 0.00s script script.log [email protected] ~ $ uptime 14:49:43 up 4:06, 2 users, load average: 1.37, 1.56, 1.62 [email protected] ~ $ whoami tecmint [email protected] ~ $ echo 'using script' using script [email protected] ~ $ exit exit Script done, file is script.log
次に、ログファイル「 script.log」を表示してみます ‘記録されたすべてのコマンドについて、ログを表示すると、スクリプトがラインフィードとバックスペースも保存していることがわかります。
[email protected] ~ $ vi script.log
サンプル出力
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M September 2015 ^M Su Mo Tu We Th Fr Sa ^M 1 2 3 4 5 ^M 6 7 8 9 10 11 12 ^M 13 14 15 ^[[7m16^[[27m 17 18 19 ^M 20 21 22 23 24 25 26 ^M 27 28 29 30 ^M ^M ^[[01;[email protected]^[[01;34m ~ $^[[00m w^M 14:49:40 up 4:06, 2 users, load average: 1.37, 1.56, 1.62^M USER TTY FROM [email protected] IDLE JCPU PCPU WHAT^M tecmint tty8 :0 10:45 4:06m 7:40 0.36s x-session-manager^M tecmint pts/5 :0 13:42 4.00s 0.07s 0.00s script script.log^M ^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M 14:49:43 up 4:06, 2 users, load average: 1.37, 1.56, 1.62^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whoami^M tecmint^M ^[[01;[email protected]^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M using script^M ^[[01;[email protected]^[[01;34m ~ $^[[00m exit^M exit^M Script done on Wednesday 16 September 2015 02:49:59 PM IST ~
-aを使用できます 以前の内容を保持したまま、ログファイルまたはタイプスクリプトを追加するオプション。
[email protected] ~ $ script -a script.log Script started, file is script.log [email protected] ~ $ date Wed Sep 16 14:59:36 IST 2015 [email protected] ~ $ pwd /home/tecmint [email protected] ~ $ whereis script script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz [email protected] ~ $ whatis script script (1) - make typescript of terminal session
スクリプトの内容を表示し、 -aを使用してログに記録します 追加するオプション。
[email protected] ~ $ vi script.log
サンプル出力
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m date^M Wed Sep 16 14:59:36 IST 2015^M ^[[01;[email protected]^[[01;34m ~ $^[[00m pwd^M /home/tecmint^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whre^H^[[K^H^[[Kereis script^M script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.1.gz^M ^[[01;[email protected]^[[01;34m ~ $^[[00m whatis script^M script (1) - make typescript of terminal session^M ^[[01;[email protected]^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M exit^M
対話型シェルセッション以外の単一のコマンドの結果をログに記録するには、 -cを使用します オプション。
[email protected] ~ $ script -c 'hostname' script.log Script started, file is script.log tecmint.com Script done, file is script.log
スクリプトをクワイエットモードで実行する場合は、 -qを使用できます。 オプション。スクリプトが開始または終了していることを示すメッセージは表示されません。
[email protected] ~ $ script -c 'who' -q script.log tecmint tty8 2015-09-16 10:45 (:0) tecmint pts/5 2015-09-16 13:42 (:0)
タイミング情報を標準エラーまたはファイルに設定するには、 –タイミングを使用します オプション。タイミング情報は、log_fileに保存されている出力を再表示する場合に役立ちます。
スクリプトを開始して、次のコマンドを実行してみましょう w 、稼働時間 およびcal 記録されます。
[email protected] ~ $ script --timing=time.txt script.log Script started, file is script.log [email protected] ~ $ w 15:09:31 up 4:26, 2 users, load average: 1.38, 1.39, 1.47 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT tecmint tty8 :0 10:45 4:26m 8:15 0.38s x-session-manager tecmint pts/5 :0 13:42 3.00s 0.09s 0.00s script --timing=time.txt script.log [email protected] ~ $ uptime 15:09:36 up 4:26, 2 users, load average: 1.43, 1.40, 1.48 [email protected] ~ $ cal September 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
script.logを表示できます およびtime.txt 上記のタイミングコマンドのファイル。
[email protected] ~ $ vi script.log
サンプル出力
^[[0m^[[255D^[[01;[email protected]^[[01;34m ~ $^[[00m w^M 15:12:05 up 4:28, 2 users, load average: 1.31, 1.37, 1.45^M USER TTY FROM [email protected] IDLE JCPU PCPU WHAT^M tecmint tty8 :0 10:45 4:28m 8:20 0.38s x-session-manager^M tecmint pts/5 :0 13:42 5.00s 0.09s 0.00s script --timing=time.txt script.log^M ^[[01;[email protected]^[[01;34m ~ $^[[00m uptime^M 15:12:07 up 4:28, 2 users, load average: 1.29, 1.36, 1.45^M ^[[01;[email protected]^[[01;34m ~ $^[[00m cal^M September 2015 ^M Su Mo Tu We Th Fr Sa ^M 1 2 3 4 5 ^M 6 7 8 9 10 11 12 ^M 13 14 15 ^[[7m16^[[27m 17 18 19 ^M 20 21 22 23 24 25 26 ^M 27 28 29 30 ^M ^M>
次に、 time.txtを表示します ファイル。
[email protected] ~ $ vi time.txt
サンプル出力
0.259669 306 0.037680 829 0.000006 2 0.000002 100 0.000002 2 0.000002 102 0.000019 202 0.000004 2 0.000002 102 0.000015 100 0.000002 2 0.000003 2 0.000002 99 0.000011 2 0.000003 82 ...
time.txt ファイルには2つの列があり、最初の列は最後の表示からの経過時間を示し、2番目の列は今回表示された文字数を示します。
マニュアルページを使用して–ヘルプ より多くのオプションを探し、スクリプトコマンドラインユーティリティの使用を支援します。
scriptreplayを使用してタイミング情報を使用してスクリプトを再生する
スクリプトリプレイ コマンドは、 log_fileの情報を再生するのに役立ちます スクリプトによって記録されます コマンド。
タイミング情報は、 -timing =fileによって定義されます。 スクリプトで使用されるオプション コマンドとファイル この場合はfile.txt スクリプトコマンドで使用されました。
log_fileを指定する必要があることを忘れないでください スクリプトコマンドで使用しました。
最後の3つのコマンドを再生してみましょうw 、稼働時間 およびcal 次のように実行しました。
[email protected] ~ $ scriptreplay --timing=time.txt script.log
log_file タイミング情報を使用して再生され、記録されたコマンドが実行され、記録中に元の出力が表示されたのと同時に、それらの出力が表示されます。
概要
これらの2つのコマンド、スクリプト およびscriptreplay 使いやすく、同じコマンドのバッチを複数回実行する必要がある場合に非常に役立ちます。これらは、システムと対話するためのコマンドラインインターフェイスしかないサーバーの管理に大いに役立ちます。このガイドがお役に立てば幸いです。使用中に何か追加したり、課題に直面したりする場合は、遠慮なくコメントを投稿してください。