システム管理者や開発者は、重要なタスクを実行するために、多くの複雑で長いコマンドを使用する必要がある場合があります。ほとんどのユーザーは、レビューや将来の参照のために、これらのコマンドとそれぞれのコマンドによって生成された出力をテキストファイルにコピーします。もちろん、シェルの「履歴」機能は、過去に使用されたコマンドのリストを取得するのに役立ちますが、それらのコマンドに対して生成された出力を取得するのには役立ちません。
幸いなことに、この仕事をするスクリプトと呼ばれるシンプルで時間の節約になるユーティリティがあります。スクリプトコマンドは、バックグラウンドで実行することにより、静かにビジネスを行います。このユーティリティは、管理するサーバーでコマンドラインインターフェイスのみを使用できる場合に必須です。この記事では、例を使用してその使用法について説明します。
ターミナルセッションのアクティビティの記録を開始します
コマンドラインで「script」と入力するだけです:
$ script
「スクリプトが開始されました。ファイルはtypescriptです」という起動メッセージが次のように表示されます。
$ script Script started, file is typescript $
これで、スクリプトコマンドは、ユーザーが「exit」と入力するか、Control-Dを押して記録を停止するまで、バックグラウンドでユーザーコマンドの記録を開始します。
$ exit
「script」コマンドと「exit」コマンドの間のすべては、デフォルトで現在のディレクトリ内のファイルに記録されます。いくつかのコマンドを実行して、スクリプトがコマンドと対応する出力を次のように保存する方法を見てみましょう。
上のスクリーンショットでは、スクリプトコマンドはコマンド「free–h」および「vmstat」で実行されています。ユーザーが「exit」またはCtrl+Dを入力して記録を終了すると、実行されたすべてのコマンドとそれぞれの出力が、現在の作業ディレクトリのファイル「typescript」に記録されます。とてもシンプルで素晴らしい!
アクティビティをファイルに記録する
後で参照できるように、スクリプト記録セッションをタイムスタンプ付きのユーザー定義ファイルに保存することをお勧めします。このため、次の引数として目的のファイル名を指定して、scriptコマンドを実行する必要があります。 $ script
以下のスクリーンショットは、記録がユーザー提供のログファイルにどのように保存されるかを示しています。
既存のファイルに記録アクティビティを追加する
記録履歴を既存のログファイルに追加する必要がある場合があります。このため、追加操作を示す「-a」オプションをファイル名に指定して、スクリプトコマンドを実行する必要があります。
$ script –a <existing_file_name>
スクリプトのマニュアルページから、より多くのオプションを入手できます。
結論
非対話型シェルでscriptコマンドを実行することはお勧めしません。 scriptコマンドは、すべて(改行などの制御文字)をログファイルに保存します。環境変数SHELLが設定されている場合、シェルはスクリプトによってフォークされます。設定されていない場合、Bourneシェルがデフォルトとして想定されます。スクリプトにログファイル名が指定されていない場合、デフォルトのファイルであるtypescriptが使用されます。提供されたログファイルを作成できない場合、scriptコマンドは文句を言います。指定されたログファイルがすでに存在し、「-a」オプションが使用されていない場合、古いファイルは上書きされます。