JP2014182462A - 情報処理装置、情報処理方法、及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法、及び情報処理プログラム Download PDF

Info

Publication number
JP2014182462A
JP2014182462A JP2013055096A JP2013055096A JP2014182462A JP 2014182462 A JP2014182462 A JP 2014182462A JP 2013055096 A JP2013055096 A JP 2013055096A JP 2013055096 A JP2013055096 A JP 2013055096A JP 2014182462 A JP2014182462 A JP 2014182462A
Authority
JP
Japan
Prior art keywords
command
file
information
installation
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013055096A
Other languages
English (en)
Other versions
JP5994693B2 (ja
Inventor
Toshihiro Shimizu
智弘 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013055096A priority Critical patent/JP5994693B2/ja
Priority to US14/189,343 priority patent/US9317273B2/en
Priority to GB201403409A priority patent/GB2515598A/en
Publication of JP2014182462A publication Critical patent/JP2014182462A/ja
Application granted granted Critical
Publication of JP5994693B2 publication Critical patent/JP5994693B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

【課題】情報処理装置の使用環境の構築に関する手順書の作成を容易にする。
【解決手段】情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得し、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、抽出されたコマンドを出力する。
【選択図】図4

Description

本発明は、情報処理装置の使用環境の構築に関する手順書の作成支援技術に関する。
計算機には様々なソフトウェアがインストールされ、また様々な設定がなされる。ソフトウェアのインストールや設定動作は、まとめて配備と呼ばれる。負荷分散のために同じ内容の配備をしたり、故障時に新しいマシンに旧来のマシンと同じ内容で配備をしたりするとき等、同じ配備のための操作を複数回行うことが必要になる場合がある。これまでは計算機の台数が少なかったり、故障時の再設定時には構築時とまったく同じサーバがない等環境が変わったりして、多数の同じ環境のサーバを構築するということがそれ程多くなかった。しかしながら近年は、クラウドと呼ばれる仮想環境において長期間にわたって多数の同じ環境を用意することが可能になっており、同じ内容の配備を行うことの必要性が増している。これらの場合に操作間違いや、操作時の試行錯誤による時間の無駄を少なくするため、配備の手順書を用意したり、自動で配備を行うプログラムを作成したりする。
インストールする操作手順は最初から全て分かっているものではなく、一度インストールや設定の操作を実行して、その記録から作成される。この理由は、インストールマニュアルは特定の環境に特化して書かれている場合や、また、インストールマニュアルに書かれているのは、インストール手順の大まかな内容で、具体的なインストール手順が記載されていない場合が多いからである。これは、OS(Operating System)のバージョンによってインストールされているソフトウェアが異なったり、パッケージ管理システムがサポートするものが異なったりすることがあるためである。
ところで、配備の記録を見ればそのまま手順が分かるものではないことに注意が必要である。なぜなら配備の記録にはインストール手順と関係のない処理が含まれていることがあるからである。配備の作業時には、パラメータの設定の間違いや、ファイルや時刻を画面に表示させるような不要な処理を行ったり、誤って不要なソフトウェアをインストールしてそのソフトウェアを削除したり、といった試行錯誤が行われることがよくある。これらの無駄な作業を、手順書作成者が実行した記録を見て本当に不要だったかを判断するのは困難である。数分の作業であれば何が不要かすぐ分かるかもしれないが、作業は数時間にわたることもよくあり、また実行するコマンドも数百に及ぶこともある。このため、これまで手順記録から抜き出す形で作った手順書やプログラムは、その中に必要な処理が欠けていたり、不要な処理が混じっていたりすることがあり、一度で十分なものを作ることが困難である。
また、特に近年DevOpsと呼ばれる開発と運用の一体化が提唱されている。DevOpsとは、開発(Dev)と運用(Ops)の間の壁を取り払うことを指し、具体的には開発者と運用者が互いを意識して作業を進めることを指す。そのようなDevOpsにおいては、開発者と運用者の間の情報伝達を速くすることが特に求められる。
開発者は、実際にインストール作業を行い、作業結果を精査して、運用者のことを考慮した開発ソフトウェアのインストールスクリプトまたは手順書を用意する。開発者はインストールスクリプトまたは手順書素早く作成することが求められる。
また、運用者はインストールの困難さ等を開発者にフィードバックし、インストールした際の失敗事項(どこが不要だったか等)を伝える。運用者が失敗事項を精査して開発者に伝えることで、開発者は、その内容の確認と修正を容易に行うことができるようになる。
一方、配備の作業記録から手順を作成する技術がある。
特開平6−230948号公報 特開2007−80166号公報 特開2000−242504号公報 特開2010−123045号公報 特開2003−15881号公報 特開2007−079703号公報 特開2006−133825号公報
しかしながら、上記の技術では、作業記録にインストールとは無関係な処理が含まれることが考慮されていない。
そこで、1つの側面では、本発明は、情報処理装置の使用環境の構築に関する手順書を容易に作成することを目的とする。
一態様の情報処理装置は、取得部、抽出部、及び出力部を含む。取得部は、情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得する。抽出部は、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する。出力部は、抽出されたコマンドを出力する。
本実施形態に係る情報処理装置によれば、情報処理装置の使用環境の構築に関する手順書を容易に作成することができる。
インストール処理の一例(その1)を示す。 インストール処理の一例(その2)を示す。 インストール処理の一例(その3)を示す。 本実施形態に係る情報処理装置のブロック図の一例を示す。 本実施形態に係る情報処理装置の構成の一例を示す。 本実施形態に係る観測データの一例を示す。 本実施形態に係るログ保存処理の動作フロー図である。 インストール処理の一連のコマンドにおける最終状態形成コマンドを説明するための図である。 入出力一覧の一例(その1)を示す。 複数のコマンドの各々の副作用によってファイルの内容が変化する場合において、最終状態形成コマンドを選別する様子を説明するための図である。 出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部15が判別する場合の動作のフロー図である。 複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合において、最終状態形成コマンドが選別される様子を説明するための図である。 入出力一覧の一例(その2)を示す。 ファイルFが変化する様子を説明するための図である。 本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。 パッチファイルをインストールする際の手順の一例を示す。 入出力一覧の一例(その3)を示す。 本実施形態に係る情報処理装置のハードウェア構成の一例を示す。
本実施形態においては、手順書作成者がインストール作業を実施し、情報処理装置では、その際に手順書作成者により入力されたコマンドを取得とログ情報が保存される。そして、ログ情報を使用してインストールに関連するファイルを選別する処理が行われる。これは、手順書やインストールスクリプトの作成にかかる時間の削減につながる。またDevOpsにおいては、運用者が不要だったりやり直したりしたコマンドを開発者にフィードバックすることを容易にする。
先ず、手順書を作成する上で、手順書作成者が実行したインストール作業のうち、インストール処理と関連しないコマンドの例について説明する。
例えば、図1に示すような一連のコマンドを実行するインストール処理について考える。先ず、それぞれのコマンドの内容について説明する。(1)の「{install epel}」は、パッケージ「epel.rpm」をコマンド「wget」等で取得して、「rpm -ihv」のコマンドでインストールすることを意味する。(2)、(3)、(4)における「gem install」コマンドは、パッケージをインストールするコマンドである。この例の場合、(2)、(3)、(4)のコマンドはいずれも異常終了し、インストールによるファイルの追加はないものとする。(5)の「ls」は、ファイルやディレクトリの情報を表示させるコマンドである。「ls」コマンドが実行されても、システムに対する副作用は発生しない。また、この例の場合、「ls」は正常終了しているものとする。(6)の「{remove epel}」は、コマンド「rpm -e」でパッケージ「epel」をアンインストールし、ファイルを「rm」コマンドで削除することを意味する。尚、図1において、「#succ」、「#fail」はそれぞれ、コマンドが成功したこと、失敗したことを示し、説明のために記したものである。
図1の例では、「gem install」コマンドによるインストール処理は失敗しており、手順書を作成する上では、図1のすべてのコマンドは不要である。
また、手順書に反映すべきでないコマンドのその他の例として、図2に示すような一連のコマンドを実行するインストール処理について考える。(1)及び(4)−(8)は、図1で説明したコマンドと同様である。(2)、(3)の「yum install」コマンドは、パッケージを取得してインストールするコマンドである。(2)、(3)のコマンドはいずれも正常終了しており、システムに対する副作用があるものとする。また、図2の例では、(2)、(3)のコマンドは、(1)でインストールされたepelの副作用には無関係であるとする。
図2の例では、「gem install」コマンドによるインストール処理は失敗しており、かつ、「yum install」コマンドには関連のない(1)及び(4)−(8)コマンドは、手順書を作成する上では不要である。
さらに、手順書に反映すべきでないコマンドのその他の例として、図3に示すような一連のコマンドを実行するインストール処理について考える。図3の例では、(2)の「yum install」コマンドは、「epel」の副作用と関係があるものとする。
図3の例の場合、副作用のない(3)の「ls」コマンドが手順書を作成する上では不要である。
図1〜図3に示したように、インストール処理において実行されるコマンドが異常終了したり、インストールとは関係のないコマンドが実行されたりする場合がある。このようなインストールとは関係ないコマンドは手順書作成には記載されない。
本実施形態では、インストールで実行される複数のコマンドのうち、コマンドの副作用に基づいて、インストールに関連するコマンドを抽出する。ここで、コマンドの副作用とは、そのコマンドが実行されることにより影響を受ける情報を指す。
本実施形態に係る情報処理装置が実行する処理は、大きく、ログ保存処理、コマンド抽出処理、出力処理の3つの処理に分けられる。ログ保存処理は、手順書作成者によりインストール作業が行われる際に、インストール作業で実行されたコマンドとそのコマンドが実行されることにより発生する情報処理装置の動作環境に対する影響をログ情報として保存する処理である。コマンド抽出処理は、ログ情報を参照して、インストールに関係のあるコマンドを抽出する処理である。出力処理は、抽出したコマンドを出力する処理である。
図4は、本実施形態に係る情報処理装置の機能ブロック図の一例である。情報処理装置1は、取得部2、抽出部3、出力部4を含む。
取得部2は、情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得する。影響を受ける情報には、例えば、ファイル、プロセス、環境変数などがある。
抽出部3は、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する。また、抽出部3は、インストールが正常終了したときに存在するファイルである対象ファイルを検出し、対象ファイルに対して実行された1以上のコマンドのうちのいずれかである対象コマンドの実行前後の対象ファイルの差分が、インストールが正常終了したときの対象ファイルと対象コマンドの実行前の対象ファイルの差分に含まれる場合、対象コマンドを抽出する。また、抽出部3は、インストールが正常終了したときに存在するファイルである対象ファイルを検出し、対象ファイルを生成するコマンドを抽出する。また、抽出部3は、対象ファイルに対する、抽出されたコマンドの実行により、対象ファイルと異なる名称のファイルが生成された場合、対象ファイルを出力したコマンドを抽出する。また、抽出部3は、対象ファイルが、抽出されたコマンドと、インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、非対象ファイルを出力したコマンドを抽出する。
出力部4は、抽出されたコマンドを出力する。
本実施形態の情報処理装置1の構成の一例を説明する。図5は、本実施形態に係る情報処理装置の構成の一例を示す。
図5に示すように、情報処理装置1は、情報取得部11、コマンド実行部12、ログ保存処理部13、ログ記憶部14、分析処理部15、及び処理出力部16を含む。情報取得部11は取得部2の一例である。分析処理部15は抽出部3の一例である。処理出力部16は出力部4の一例である。
情報取得部11は、手順書を作成するためにユーザが行うインストール作業において、入力装置を用いてユーザにより入力されたコマンドを取得する。
コマンド実行部12は、情報取得部11が取得したコマンドを実行する。
ログ保存処理部13は、手順書を作成するためにユーザが行うインストール作業のログ情報をログ記憶部14に保存する。
ログ記憶部14は、ログ保存処理部13により保存されるログ情報を格納する。
分析処理部15は、ログ記憶部14に格納されたログ情報を用いて、手順書を作成するためのインストール処理における一連のコマンドからインストールに関連のあるコマンドを選別する。
処理出力部16は、分析処理部15により選別されたコマンドを出力する。処理出力部16の出力先は、例えばユーザが確認するための画面表示装置、ファイルなど種々に設定される。
次に、ログ保存処理部13の処理の詳細について説明する。
ログ保存処理部13は、手順書を作成するためにユーザが行うインストール作業のログ情報をログ記憶部14に保存する。本実施形態において、ログ情報には、各コマンドの実行前後のシステムのスナップショット、及び、各コマンドが実行されることにより呼び出されるシステムコールの情報が含まれる。
ログ情報の一つとして、ログ保存処理部13は、各コマンドの実行の前後にシステムのスナップショットを取得してログ記憶部14に保存する。スナップショットは、情報処理装置1のファイルシステム全体のファイルの情報である。尚、スナップショットには、情報処理装置1の外部に存在する装置に記憶されたファイル情報を含めてもよい。
二つ目のログ情報として、ログ保存処理部13は、コマンドにより実行されるシステムコールの情報を取得する。具体的な保存方法は、例えば、システムコールフックや、コマンドが使用するシステムコールおよび受け取るシグナルを監視する監視コマンドを用いる。そのような監視コマンドには、例えば、Linux(登録商標)では「strace」コマンド、Unix(登録商標)では「truss」コマンド等がある。以下の説明では、ログ保存処理部13により記録される、コマンドを実行することにより呼び出されるシステムコールの情報を観測データと記す。
図6は本実施形態に係る観測データの一例を示す。観測データ20は、順序21、コマンド22、システムコール列23のデータ項目を含む。
順序21は、インストール処理において実行される一連のコマンドの実行順序を示す情報である。順序21には、コマンド22の実行順に、一つのコマンドに対して一意の値が昇順で割り当てられる。
コマンド22は、手順書を作成するためにユーザが行うインストール作業において実行される各々のコマンドである。コマンド22には、ログ保存処理部13が情報取得部11から取得したコマンドの情報が格納される。
システムコール列23は、コマンド22が実行されることにより発生するシステムコールの一覧である。
尚、図6に示す観測データ20のデータ構造はテーブル構造であるが、順序21、コマンド22、及び、システムコール列23の各情報の対応関係が判別可能であれば、種々のデータ構造を採ることができる。
ここで、本実施形態に係るログ保存処理の動作フローを説明する。図7は、本実施形態に係るログ保存処理の動作フロー図である。
先ず、情報取得部11は、インストール処理において入力装置を用いてユーザにより入力されるコマンドを取得する(S201)。次に、ログ保存処理部13は、ファイルシステムのスナップショットをログ記憶部14に保存する(S202)。次に、コマンド実行部12は、情報取得部11が取得したコマンドを実行する(S203)。次に、ログ保存処理部13は、コマンド実行部12がコマンドを実行した直後に、そのコマンドにより呼び出されるシステムコールの情報をログ記憶部14に保存する(S204)。次に、ログ保存処理部13は、システムのスナップショットをログ記憶部14に保存する(S205)。そして、情報取得部11は、インストール処理が完了したか否かを判定し(S206)、インストール処理が未完了である場合、処理はS202に遷移する。そして、S201からS206までの動作が繰り返される。インストール処理が完了した場合(S206でYes)、処理は終了する。
次に、分析処理部15の処理の詳細について説明する。
分析処理部15は、ログ記憶部14に格納されたログ情報を用いて、手順書を作成するためのインストール処理における一連のコマンドからインストール手順に関連のあるコマンドを選別する。
ここで、以下の説明では、情報処理装置1の所定の時点における動作環境をシステム状態と記す。システム状態は、ファイル、プロセス、及び環境変数の状態である。
インストール作業は、ファイルなどシステムへの副作用の集合であり、最終的に特定のシステム状態を形成する。そこで分析処理部15はインストールにおいて実行されたコマンドがインストールの正常完了時点のシステムの状態(以下、最終的なシステム状態と記す)に影響を与えたか否かを判別することによって、そのコマンドがインストールに関連するか否かを判別する。そして、コマンドが最終的なシステム状態に影響を与えたか否かは、各々のコマンド間の副作用の差分、もしくは副作用としてファイルまたはプロセスを生成したか否かに基づいて行われる。ここで、各々のコマンドの副作用の、インストール作業において実行される一連のコマンド間における関連性を確認する処理を以下の説明では、副作用の分析と記す。尚、システム状態には、外部装置のシステム状態を含めてもよいし、所定のファイルが存在しない状態を含めてもよい。また、最終的なシステム状態においては、インストールにおいて発生した不要なファイル等は全て削除さているとする。もしくは、インストールするソフトウェアに応じてインストールの正常完了した場合に満たす条件を予め定めておき、その条件を満たすシステムの状態を最終的なシステム状態としてもよい(例えば、特定のファイルが存在する等)。
コマンドの実行による副作用には、大きく分けて、ファイル、プロセス、環境変数、及びその他に対する副作用がある。ファイルに対する副作用としては、コマンドを実行することにより、ファイルの内容が変化すること、ファイルが作成されること、または、ファイルが削除されることがある。プロセスに対する副作用としては、プロセス(デーモンなどのバックグラウンドプロセス等を含む)が生成、または削除されることがある。環境変数に対する副作用としては、環境変数が設定されることがある。その他に対する副作用としては、情報処理装置1の外部に対する情報の送信または受信、「su」等のコマンドによりシェルのユーザが切り替わること、「chkconfig」等のコマンドによりサービスが設定されることがある。尚、「chkconfig」等のコマンドによりサービスが設定される動作は、ファイルに変更が加えられたものであると考えてもよい。
以下の説明では、最終的なシステム状態に影響を与える、インストールに関連のあるコマンドを最終状態形成コマンドと記す。また、最終的なシステム状態における、インストールに関連するファイルを最終的なファイルと記す。
図8は、インストール処理の一連のコマンドにおける最終状態形成コマンドを説明するための図である。図8において、最終的なファイルは、ファイルA、B、Cである。初期状態からコマンドを実行することによって、ファイルQ、Pが作成される。ファイルQは、コマンドに入力として与えられ、そのコマンドが実行されることにより、ファイルB、Cが作成される。一方、ファイルPは、ファイルA、B、Cの作成には関与していない。この場合、ファイルPを作成するコマンドは最終状態形成コマンドではないと判別される。
次に、分析処理部15の副作用の分析の動作を詳細に説明する。副作用の分析では、分析処理部15は、各々のコマンドの副作用の、インストール作業において実行される一連のコマンド間における関連性を確認する。副作用の分析のために、分析処理部15は、各コマンドが実行される際にそのコマンドの入力として使用されたファイル、及び各コマンドが実行された際に発生するすべての副作用を、ログ記憶部14に保存されたログ情報から抽出して、入出力一覧を作成する。
図9に入出力一覧の一例を示す。入出力一覧は、順序31、入力32、コマンド33、出力34のデータ項目を含む。
順序31は、インストール処理において実行される一連のコマンドの実行順序を示す情報である。
入力32は、コマンド33の入力情報である。入力32は、例えば、コマンド33が実行される際に与えられる引数、またはコマンド33の処理で使用されるファイルを示す。入力32は、コマンドの実行前に取得されたスナップショット、及び観測データ20を用いて抽出される。
コマンド33は、手順書を作成するためにユーザが行うインストール作業において、実行されるコマンドである。
出力34は、コマンド33の出力情報であり、各コマンドが実行された際に発生するすべての副作用である。出力34は、コマンドの実行後に取得されたスナップショット、及び観測データ20を用いて抽出される。尚、コマンドの実行により生成または削除されるプロセスの情報は、観測データ20を用いて特定されるが、この情報は統計情報に基づいて特定される構成としてもよい。例えば、クラウド環境下で作成されたVM(Virtual Machine)上で予めコマンドを実行し、コマンドの実行により生成または削除されるプロセスを統計情報として保存しておく。分析処理部15は、保存された統計情報を参照してコマンドの実行により生成または削除されるプロセスの情報を特定する。
図9の例において順序31が「1」の行のコマンド33を参照すると、インストール処理の最初にコマンド「ls」が実行されていることが分かる。そして、入力32には、「ls」の入力として、「/etc/ld.so.cache」、「/lib/libselinux.so.1」その他が示されている。そして、出力34には、「ls」の出力として、「file :」、「new process :」、「env : stdout : ”.\n..\n.emacs”」が示されている。図9の例では、「file :」の後に「ファイル名 : ファイルの内容」が記載される形式で示されている。また、「new process :」の後にコマンドの実行により作成されたプロセス名が、「env :」の後に、設定される環境変数名とその値が格納される。すなわち、出力34には、環境変数に対する副作用として、「stdout」の内容が「.\n..\n.emacs」に変更されたことが示されている。また、出力34には、ファイル、プロセス、及びその他に対する副作用はないことが示されている。
尚、図9に示すログ情報のデータ構造はテーブル構造だが、順序31、入力32、コマンド33、及び、出力34の各情報の対応関係が判別可能であれば、種々のデータ構造を採ることができる。また、出力34に記載される形式は、図9に示したものに限定されず、種々の形式で保存されてもよい。例えば、ファイル(ディレクトリを含む)が作成された場合には、「new file : ファイル名」、ファイルが削除された場合には「delete file : ファイル名」等としてもよい。また、プロセスが削除された場合には「delete process : プロセス名」等とし、コマンドによるすべての副作用が判別可能なように出力34に情報を保存する。
次に、分析処理部15は入出力一覧を作成すると、作成した入出力一覧を用いて最終状態形成コマンドを選別する処理を行う。
先ず、複数のコマンドによって一つのファイルの内容が変化する場合の、最終状態形成コマンドの選別の様子を説明する。図10は、複数のコマンドの各々の副作用によって同一名称のファイルの内容が変化する場合において、最終状態形成コマンドを選別する様子を説明するための図である。
図10の例では、ファイルFに対して、コマンドc1、c2、c3、c4を順に実行し、最終的にファイルF’’’’となる場合の例を示している。FからF’’’’はいずれも同じファイル名のファイルでありファイルの内容が異なるものである。先ず、初期状態において、ファイルFの内容はa、b、cから構成されている。ファイルFを入力としてコマンドc1が実行されると、aにvが代入され、bに0が代入されてF’となる。次に、ファイルF’を入力としてコマンドc2が実行されると、bに1が代入されてF’’となる。次に、ファイルF’’を入力としてコマンドc3が実行されると、cに‘a’が代入されてF’’’となる。そして、ファイルF’’’を入力としてコマンドc4が実行されると、cに‘z’が代入されてF’’’’となる。
ここで、bに代入された0と、cに代入された‘a’は、最終的なファイルであるF’’’’には現れていない。そこで、bに0を代入する動作と、cに‘a’を代入する動作は、最終的なシステム状態に影響を与えない動作であると判別する。この例の場合、コマンドc3では、cに‘a’を代入する動作しか行われていないため、コマンドc3は最終状態形成コマンドではないと判別される。コマンドc1では、bに0が代入する動作の他に、aにvを代入する動作が行われるため、最終状態形成コマンドであると判別される。
次に、図10に示したような、複数のコマンドによって一つのファイルの内容が変化する場合における、分析処理部15の最終状態形成コマンドの選別動作について具体的に説明する。図11は、出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部15が判別する場合の動作のフロー図である。
先ず、分析処理部15は、あるコマンドXが最終状態形成コマンドか否かを判定する場合、そのコマンドXが出力するファイルYが、最終的なシステム状態において存在するか否かを判定する(S301)。最終的なシステム状態においてファイルYが存在しない場合(S301でNo)は、分析処理部15は、コマンドXは最終状態形成コマンドではないと判別する(S302)。最終的なシステム状態においてファイルYが存在する場合(S301でYes)、分析処理部15は、最終的なシステム状態におけるファイルYと、コマンドXの実行前のファイルYとの内容の差分Aをとる(S303)。次に、分析処理部15は、コマンドXの実行の前後のファイルYの内容の差分Bをとる(S304)。そして、分析処理部15は、差分Aに差分Bが含まれるか否かを判定する(S305)。差分Aに差分Bが含まれる場合(S305でYes)、分析処理部15は、コマンドXは最終状態形成コマンドであると判別する(S306)。差分Aに差分Bが含まれない場合(S305でNo)、分析処理部15は、コマンドXは最終状態形成コマンドでないと判別する(S302)。
図11に示すフローを図10において適用することにより、出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部15が判別する場合の動作のフローの説明をする。
先ず、図11の説明におけるコマンドXが図10におけるコマンドc1である場合の動作を説明する。コマンドc1が最終状態形成コマンドか否かを判定する場合、分析処理部15は先ず、コマンドc1の出力ファイルであるファイルF’が最終的なファイルに含まれるか否かを判定する(S301)。最終的なファイルはF’’’’であるので、判定の結果はYesとなる。次に、分析処理部15は、最終的なファイルであるファイルF’’’’と、コマンドc1の入力ファイルであるFの差分Aをとる(S303)。F’’’’とFの差分Aは、「a=v」、「b=0」、「c=‘z’」である。また、分析処理部15は、コマンドc1の出力ファイルであるファイルF’と、コマンドc1の入力ファイルであるFの差分Bをとる(S304)。F’とFの差分Bは、「a=v」、「b=0」である。そして、S303とS304の結果を用いて、分析処理部15は、差分Bは差分Aに含まれると判定する(S305でYes)。そして、分析処理部15は、コマンドc1は最終状態形成コマンドであると判別する(S306)。
次に、図11のXがコマンドc3である場合の動作を説明する。コマンドc3が最終状態形成コマンドか否かを判定する場合、分析処理部15は、先ず、コマンドc3の出力ファイルであるファイルF’’’が最終的なファイルに含まれるか否かを判定する(S301)。最終的なファイルはF’’’’であるので、判定の結果はYesとなる。次に、分析処理部15は、最終的なファイルであるファイルF’’’’と、コマンドc3の入力ファイルであるF’’の差分Aをとる(S303)。F’’’’とF’’の差分Aは、「c=‘a’」である。また、分析処理部15は、コマンドc1の出力ファイルであるファイルF’’’と、コマンドc1の入力ファイルであるF’’の差分Bをとる(S304)。F’’’’とF’’の差分Bは、「c=‘z’」である。そして、S303とS304の結果を用いて、分析処理部15は、差分Bは差分Aに含まれると判定する(S305でYes)。そして、分析処理部15は、コマンドc1は最終状態形成コマンドであると判別する(S306)。
次に、複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合の、最終状態形成コマンドの選別の様子を説明する。図12は、複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合において、最終状態形成コマンドが選別される様子を説明するための図である。
図12の例においては、最終的なシステム状態は、ファイルF、ファイルG、プロセスPが作成された状態である。先ず、分析処理部15は、ログ記憶部14に記憶されたログ情報から、入出力一覧を作成する。図12の例の場合に作成される入出力一覧を図13に示す。
次に、分析処理部15は、最終的なシステム状態に含まれるファイル及びプロセスを作成したコマンドの集合を最終状態形成コマンドとして判別する。図12の例の場合、最終的なシステム状態に含まれる、ファイルF、ファイルG、プロセスPを作成するコマンド{c0、c5、c8}を最終状態形成コマンドとして判別する。最終状態形成コマンドとして判別されたコマンドの集合をSと記す。
次に、分析処理部15は、最終的なシステム状態に含まれるファイルの内容を変更する副作用を発生するコマンドのうち、図11のフローに従って最終状態形成コマンドを抽出する。
先ず、分析処理部15はファイルFに着目し、ファイルFを変更させるコマンドの中から、最終状態形成コマンドを選別する。図12に示すように、c1からc4までのコマンドにおいてはファイルFの内容を変化させる副作用が発生している。
図14は、コマンドc1からc4においてファイルFが変化する様子を説明するための図である。コマンドc1からc4のうちいずれが最終状態形成コマンドかは、図11のフローに従って判別される。ここで、c1に着目すると、最終的なファイルであるファイルFと、コマンドc1の入力ファイルであるF’の差分Aは、「c」、「e」である。また、コマンドc1の出力ファイルであるファイルF’’と、コマンドc1の入力ファイルであるF’の差分Bは、「b」である。よって、差分Bは差分Aに含まれないので、分析処理部15は、コマンドc1を最終状態形成コマンドではないと判別する。また、c2からc4に対しても、分析処理部15は、図11のフローに従って最終状態形成コマンドの識別を行い、c2、c4を最終状態形成コマンドであると判別する。そして、分析処理部15は最終状態形成コマンドの集合Sにc2、c4を追加する。
次に、分析処理部15は、ファイルGに着目し、ファイルGを変更させるコマンドのうち、最終状態形成コマンドを選別する。図12に示すように、c6、c7のコマンドにおいてはファイルFの内容を変化させる副作用が発生している。図11のフローに従って分析処理部15は、最終状態形成コマンドの識別処理が実行し、c7を最終状態形成コマンドであると判別する。そして、分析処理部15は最終状態形成コマンドの集合Sにc7を追加する。
次に、分析処理部15は、最終状態形成コマンドの集合Sの各コマンドの入力となる情報(ファイル、プロセス、環境変数等)のうち、その最終状態形成コマンドが出力する情報以外の入力情報を出力するコマンドを、新たに最終状態形成コマンドとして判別する。最終状態形成コマンドの集合Sは{c0、c2、c4、c5、c7、c8}であるので、各々のコマンドの入力となるファイルは、c1、c3、c6である。
先ずc1に着目すると、c1は、c2とc5の入力となるファイルを出力している。c2が出力するファイルはFであり、c5が出力するファイルはGであるので、c1は、c5の出力するファイルG以外のファイルであるFを出力している。よって、分析処理部15は、c1を最終状態形成コマンドであると判別し、最終状態形成コマンドの集合Sにc1を追加する。
次に、c3に着目すると、c3は、c4の入力となるファイルを出力している。c4が出力するファイルはFであるので、c3は、c4の出力するファイルF以外のファイルを出力していない。よって、分析処理部15は、c3を最終状態形成コマンドではないと判別する。
次に、c6に着目すると、c6は、c7とc8の入力となるファイルを出力している。c7が出力するファイルはGであり、c8が出力するプロセスはPであるので、c6は、c8の出力するプロセスP以外のファイルであるGを出力している。よって、分析処理部15は、c6を最終状態形成コマンドとして判別し、最終状態形成コマンドの集合Sにc6を追加する。
そして、分析処理部15は、再度新たな集合Sに対して、各コマンドの入力となるファイルのうち、その最終状態形成コマンドが出力するファイル以外の入力ファイルを出力するコマンドを抽出して、新たに最終状態形成コマンドと判別する。さらに、この動作が新たな最終状態形成コマンドが判別されなくなるまで繰り返し行われる。
図15は、本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。
先ず、分析処理部15は、ログ記憶部14に保存されたログ情報を取得する(S201)。
次に、分析処理部15は、インストール処理が正常に完了した最終的なファイルを取得する(S202)。図12の例の場合、分析処理部15は、最終的なファイルとして、{F、G、P}を取得する。
次に、分析処理部15は、ログ情報からコマンドの実行と入出力一覧を作成する(S403)。図12の例の場合、分析処理部15は、図13の入出力一覧を作成する。
次に、分析処理部15は、各コマンドの最終状態への影響の有無を確認し影響があるコマンドを集合Sの初期値として抽出する(S404)。具体的には、分析処理部15は、最終的なファイル及びプロセスを作成したコマンド、ならびに、最終的なファイルの内容を変更するコマンドのうち、図11のフローに従って最終状態形成コマンドとして抽出したものをSとする。図12の例の場合、分析処理部15はSの初期値として、{c0、c2、c4、c5、c7、c8}を抽出する。
次に、分析処理部15は、Sの入力と最終状態の集合をIとして抽出する(S405)。図12の例の場合、Sの入力は{F’’、F’’’’、G’’}であり、最終状態の集合は{F、G、P}である。よって、分析処理部15は、Sの入力と最終状態の集合Iとして、{F、G、P、F’’、F’’’’、G’’}を抽出する。
次に、分析処理部15は、Iの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する(S406)。図12の例の場合、Iの何れかを出力するコマンドの集合Hは、H={c4、c7、c8、c1、c3、c4、c6}である。ここで、Iの何れかの同じ情報を出力するコマンドと入力するコマンドとは対応関係にあると記載すると、H={c4、c7、c8、c1、c3、c4、c6}に対応するコマンドJは、それぞれJ={−、−、−、(c2, c5)、c4、(c7, c8)}となる。Hのうち、対応するJのコマンドが出力する情報以外の情報を出力しているものは、{c1、c6}となる。尚、c1やc6のように対応するコマンドが複数ある場合には、対応するコマンドのいずれかが、Hが出力する情報以外の情報を出力していればよい。よって、S406で分析処理部15は、S’として{c1、c6}を抽出する。
S406の処理では、Sに含まれるコマンドをCとし、最終的なファイルに含まれるファイルをDとすると、ファイルDに対するコマンドCの実行により、ファイルDと異なる名称のファイルが生成された場合、ファイルDを出力したコマンドがSとして抽出される。また、ファイルDが、コマンドCと、最終的なファイルに含まれないファイルEを入力として実行されたコマンドとにより得られる場合、ファイルEを出力したコマンドがSとして抽出される。
次に、分析処理部15は、Sに含まれるコマンドとS’に含まれるコマンドが等しいか否かを判定する(S407)。SがS’と同じ場合(S407でYes)、Sを最終状態形成コマンドの集合として判別する(S408)。そして、処理出力部16はSを出力する。
SがS’と異なる場合(S407でNo)、分析処理部15は、Sの集合にS’を加える(S409)。図12の例の場合、分析処理部15は、S={c0、c2、c4、c5、c7、c8}に、S’={c1、c6}を加えて、S={c0、c1、c2、c4、c5、c6、c7、c8}となる。そして、処理は、S405に遷移し、S405からS407が繰り返される。その結果、図12の例の場合、S408で最終的に最終状態形成コマンドとして抽出されるコマンドは{c0、c1、c2、c4、c5、c6、c7、c8}となる。
次に、実際のインストール処理における最終状態形成コマンド選別の動作を、図15を参照して説明する。
図16は、パッチファイルをインストールする際の手順の一例を示している。先ず、図16の(1)〜(6)のコマンドの内容を説明する。
(1)「$ cd ~/tmp」では、カレントディレクトリを作業ディレクトリである~/tmpに移動させる。
(2)「$ wget http://.../p」では、パッチファイルであるpを「http://.../」から、カレントディレクトリに取得する。
(3)「$ cd dir0」では、カレントディレクトリを「dir 0」に移動させる。この例では、誤ってdir0にカレントディレクトリを移動させてしまったとする。
(4)「$ cd /usr/local/src/...」では、パッチをインストールするディレクトリである「/usr/local/src/...」にカレントディレクトリを移動させる。
(5)「$ patch < ~/tmp/p」では、パッチファイル「~/tmp/p」をカレントディレクトリにインストールする。その結果ファイルfがカレントディレクトリに作成される。
(6)「$ cp f /usr/local/lib/...」では、パッチのインストールで作成されたファイルfを「/usr/local/lib/...」にコピーする。
(7)「$ rm ~/tmp/p」では、「~/tmp/p」を削除する。
図16の例の場合、最終的なファイルは「/usr/local/lib/…f」とする。
先ず、分析処理部15はログ記憶部14に保存されたログ情報を取得し(S401)、最終的なファイルを取得する(S402)。図16の例の場合、分析処理部15は、最終的なファイルとして、「/usr/local/lib/…f」を取得する。
次に、分析処理部15は、ログ情報からコマンドの実行と入出力一覧を作成する(S403)。図16の例の場合、分析処理部15は図17に示す入出力一覧を作成する。
次に、分析処理部15は、各コマンドの最終状態への影響の有無を確認し影響があるコマンドを集合Sの初期値として抽出する(S404)。図16の例の場合、分析処理部15はSの初期値として、{cp f /usr/local/lib/...}を抽出する。
次に、分析処理部15は、Sの入力と最終状態の集合をIとして抽出する(S405)。図16の例の場合、分析処理部15は、Sの入力と最終状態の集合Iとして、{/usr/local/lib/…f、/usr/local/src/…f}を抽出する。
次に、分析処理部15はIの何れかを出力するコマンドのうち、そのコマンドが出力するファイルを入力とするSのコマンドが出力するファイル以外のファイルを出力するコマンドの集合をS’として抽出する(S406)。図16の例の場合、分析処理部15は、S’として、{patch < ~/tmp/p}を抽出する。
次に、分析処理部15は、SとS’の値が等しいか否かを判定する(S407)。S={cp f /usr/local/lib/...}、S’={patch < ~/tmp/p}であるので、SとS’は異なる。よって、処理はS409に遷移する。
次に、分析処理部15はSの集合にS’を加える(S409)。図16の例の場合、分析処理部15は、S={cp f /usr/local/lib/...}に、S’={patch < ~/tmp/p}を加えて、Sは、S={cp f /usr/local/lib/...、patch < ~/tmp/p}となる。
そして、処理はS405に遷移し、分析処理部15は、S409で更新されたSの入力と最終状態の集合Iとして、{/usr/local/lib/…f、/usr/local/src/…f、~tmp/p、${PWD}=/usr/local/src/...}を抽出する。
次に、分析処理部15は、分析処理部15はIの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する(S406)。図16の例の場合、S’として、{patch < ~/tmp/p、$ wget http://.../p、 $ cd /usr/local/src/...}を抽出する。
次に、分析処理部15は、SとS’の値が等しいか否かを判定する(S407)。S={cp f /usr/local/lib/...、patch < ~/tmp/p}、S’={patch < ~/tmp/p、$ wget http://.../p 、$ cd /usr/local/src/...}であるので、SとS’は異なる。
次に、分析処理部15は、Sの集合にS’を加える(S409)。図16の例の場合、分析処理部15は、S={cp f /usr/local/lib/...、patch < ~/tmp/p、$ cd /usr/local/src/...、$ wget http://.../p}となる。
そして、処理は、S405に遷移し、S405からS407が繰り返される。その結果、図16の例の場合、最終的にSとして抽出されるコマンドはS={cp f /usr/local/lib/...、patch < ~/tmp/p、$ cd /usr/local/src/...、$ wget http://.../p、$ cd ~/tmp}となる。
図18は、本実施形態に係る情報処理装置1のハードウェア構成の一例を示す。サーバは、図18に示すように、CPU201、メモリ202、記憶装置203、読取部204、着脱可能記録媒体205、通信インターフェース206、入出力部207を含む。なお、CPU201、メモリ202、記憶装置203、読取部204、通信インターフェース206、及び入出力部207は、例えば、バス209を介して互いに接続されている。
CPU(Central Processing Unit)201は、メモリ202を利用して上述のフローチャートの手順を記述したプログラムを実行する。CPU201は、情報取得部11、コマンド実行部12、ログ保存処理部13、及び分析処理部15の一部または全部の機能を提供する。
メモリ202は、例えば半導体メモリであり、RAM(Random Access Memory)領域およびROM(Read Only Memory)領域を含んで構成される。メモリ202は、ログ記憶部14の一部または全部の機能を提供する。
記憶装置203は、例えばハードディスクであり、ログ記憶部14の機能の一部または全部の機能を提供する。なお、記憶装置203は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置203は、外部記録装置であってもよい。
読取部204は、CPU201の指示に従って着脱可能記録媒体205にアクセスする。着脱可能記録媒体205は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。尚、読取部204はなくてもよい。
通信インターフェース206は、CPU201の指示に従ってネットワークを介してデータを送受信する。尚、通信インターフェース206はなくてもよい。
入出力部207は、例えば、ユーザからの指示を受け付けるデバイスに相当する。ユーザは入出力部207を用いて、情報処理装置にインストール処理におけるコマンドを入力する。
実施形態を実現するための情報処理プログラムは、例えば、下記の形態でサーバに提供される。
(1)記憶装置203に予めインストールされている。
(2)着脱可能記録媒体205により提供される。
(3)ネットワークを介して提供される。
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
尚、スナップショットの保存は、ファイルシステム全体のファイルを保存するとしたが、コマンドが実行されることにより発生する副作用の影響を受けるファイルの内容が保存されているということを満たせばファイルシステム全体のファイルを保存しなくてもよい。
また、ログ保存処理とコマンド抽出処理は、異なる情報処理装置1上で実行されてもよい。
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得する取得部と、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する抽出部と、
抽出された該コマンドを出力する出力部と、
を備えることを特徴とする情報処理装置。
(付記2)
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された1以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
ことを特徴とする付記1に記載の情報処理装置。
(付記3)
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
ことを特徴とする請求項1または2に記載の情報処理装置。
(付記4)
前記抽出部は、前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記2または3に記載の情報処理装置。
(付記5)
前記抽出部は、前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記2または3に記載の情報処理装置。
(付記6)
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
ことを特徴とする情報処理方法。
(付記7)
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された1以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
ことを特徴とする付記6に記載の情報処理方法。
(付記8)
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
ことを特徴とする付記6または7に記載の情報処理方法。
(付記9)
前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記7または8に記載の情報処理方法。
(付記10)
前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記7または8に記載の情報処理方法。
(付記11)
プロセッサに、
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
処理を実行させることを特徴とする情報処理プログラム。
(付記12)
プロセッサに、
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された1以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
処理を実行させることを特徴とする付記11に記載の情報処理プログラム。
(付記13)
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
処理を実行させることを特徴とする付記11または12に記載の情報処理プログラム。
(付記14)
プロセッサに、
前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
処理を実行させることを特徴とする付記12または13に記載の情報処理プログラム。
(付記15)
プロセッサに、
前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
処理を実行させることを特徴とする付記12または13に記載の情報処理プログラム。
1 情報処理装置
2 取得部
3 抽出部
4 出力部
11 情報取得部
12 コマンド実行部
13 ログ保存処理部
14 ログ記憶部
15 分析処理部
16 処理出力部
20 観測データ
21 順序
22 コマンド
23 システムコール列
31 順序
32 入力
33 コマンド
34 出力
本実施形態においては、手順書作成者がインストール作業を実施し、情報処理装置では、その際に手順書作成者により入力されたコマンド取得され、ログ情報が保存される。そして、ログ情報を使用してインストールに関連するファイルを選別する処理が行われる。これは、手順書やインストールスクリプトの作成にかかる時間の削減につながる。またDevOpsにおいては、運用者が不要だったりやり直したりしたコマンドを開発者にフィードバックすることを容易にする。
次に、図11のXがコマンドc3である場合の動作を説明する。コマンドc3が最終状態形成コマンドか否かを判定する場合、分析処理部15は、先ず、コマンドc3の出力ファイルであるファイルF’’’が最終的なファイルに含まれるか否かを判定する(S301)。最終的なファイルはF’’’’であるので、判定の結果はYesとなる。次に、分析処理部15は、最終的なファイルであるファイルF’’’’と、コマンドc3の入力ファイルであるF’’の差分Aをとる(S303)。F’’’’とF’’の差分Aは、「c=‘a’」である。また、分析処理部15は、コマンドc1の出力ファイルであるファイルF’’’と、コマンドc1の入力ファイルであるF’’の差分Bをとる(S304)。F’’’’とF’’の差分Bは、「c=‘z’」である。そして、S303とS304の結果を用いて、分析処理部15は、差分Bは差分Aに含まれると判定する(S305でYes)。そして、分析処理部15は、コマンドc3は最終状態形成コマンドであると判別する(S306)。
次に、分析処理部15は、最終状態形成コマンドの集合Sの各コマンドの入力となる情報(ファイル、プロセス、環境変数等)のうち、その最終状態形成コマンドが出力する情報以外の入力情報を出力するコマンドを、新たに最終状態形成コマンドとして判別する。最終状態形成コマンドの集合Sは{c0、c2、c4、c5、c7、c8}であるので、各々のコマンドの入力となるファイルを出力しているコマンドは、c1、c3、c6である。
図15は、本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。
先ず、分析処理部15は、ログ記憶部14に保存されたログ情報を取得する(S01)。
次に、分析処理部15は、インストール処理が正常に完了した最終状態を取得する(S02)。図12の例の場合、分析処理部15は、最終状態として、{F、G、P}を取得する。
次に、分析処理部15は、ログ情報からコマンド実入出力一覧を作成する(S403)。図12の例の場合、分析処理部15は、図13の入出力一覧を作成する。
次に、分析処理部15は、Iの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する(S406)。図12の例の場合、Iの何れかを出力するコマンドの集合Hは、H={c4、c7、c8、c1、c3、c6}である。ここで、Iの何れかの同じ情報を出力するコマンドと入力するコマンドとは対応関係にあると記載すると、H={c4、c7、c8、c1、c3、c6}に対応するコマンドJは、それぞれJ={−、−、−、(c2, c5)、c4、(c7, c8)}となる。Hのうち、対応するJのコマンドが出力する情報以外の情報を出力しているものは、{c1、c6}となる。尚、c1やc6のように対応するコマンドが複数ある場合には、対応するコマンドのいずれかが、Hが出力する情報以外の情報を出力していればよい。よって、S406で分析処理部15は、S’として{c1、c6}を抽出する。
次に、分析処理部15は、ログ情報からコマンド実入出力一覧を作成する(S403)。図16の例の場合、分析処理部15は図17に示す入出力一覧を作成する。
次に、分析処理部15はSの集合にS’を加える(S409)。図16の例の場合、S={cp f /usr/local/lib/...}に、S’={patch < ~/tmp/p}を加えて、Sは、S={cp f /usr/local/lib/...、patch < ~/tmp/p}となる。

Claims (7)

  1. 情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得する取得部と、
    前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する抽出部と、
    抽出された該コマンドを出力する出力部と、
    を備えることを特徴とする情報処理装置。
  2. 前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された1以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記抽出部は、前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
    ことを特徴とする請求項2または3に記載の情報処理装置。
  5. 前記抽出部は、前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
    ことを特徴とする請求項2または3に記載の情報処理装置。
  6. 情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
    前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
    抽出された該コマンドを出力する
    ことを特徴とする情報処理方法。
  7. プロセッサに、
    情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
    前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
    抽出された該コマンドを出力する
    処理を実行させることを特徴とする情報処理プログラム。
JP2013055096A 2013-03-18 2013-03-18 情報処理装置、情報処理方法、及び情報処理プログラム Expired - Fee Related JP5994693B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013055096A JP5994693B2 (ja) 2013-03-18 2013-03-18 情報処理装置、情報処理方法、及び情報処理プログラム
US14/189,343 US9317273B2 (en) 2013-03-18 2014-02-25 Information processing apparatus and information processing method
GB201403409A GB2515598A (en) 2013-03-18 2014-02-27 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013055096A JP5994693B2 (ja) 2013-03-18 2013-03-18 情報処理装置、情報処理方法、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2014182462A true JP2014182462A (ja) 2014-09-29
JP5994693B2 JP5994693B2 (ja) 2016-09-21

Family

ID=50490445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013055096A Expired - Fee Related JP5994693B2 (ja) 2013-03-18 2013-03-18 情報処理装置、情報処理方法、及び情報処理プログラム

Country Status (3)

Country Link
US (1) US9317273B2 (ja)
JP (1) JP5994693B2 (ja)
GB (1) GB2515598A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018087823A1 (ja) * 2016-11-09 2018-05-17 株式会社日立製作所 コンテナ型仮想コンピュータ管理装置、方法、及びコンピュータプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017519300A (ja) * 2014-06-13 2017-07-13 ザ・チャールズ・スターク・ドレイパー・ラボラトリー・インコーポレイテッド ソフトウェアアナリティクスのためのシステム及び方法
US10360026B1 (en) * 2017-11-07 2019-07-23 Amdocs Development Limited System, method, and computer program for RPM versioning

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03223928A (ja) * 1989-12-22 1991-10-02 Hitachi Ltd 対話処理方法およびプログラム生成方法
JPH1049492A (ja) * 1996-07-29 1998-02-20 Nec Corp 目的達成型利用者インタフェース装置
JP2007011532A (ja) * 2005-06-29 2007-01-18 Fujitsu Ltd 操作手順書の自動生成装置
JP2008052570A (ja) * 2006-08-25 2008-03-06 Hitachi Software Eng Co Ltd 操作履歴管理システム
JP2010039752A (ja) * 2008-08-05 2010-02-18 Hitachi Information Systems Ltd コマンド操作及びファイル変更の復元方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06230948A (ja) 1993-02-07 1994-08-19 Fuji Xerox Co Ltd 自動プログラム作成装置
JP2000242504A (ja) 1999-02-19 2000-09-08 Nec Corp コンパイラ装置
JP2003015881A (ja) 2001-07-03 2003-01-17 Nec Soft Ltd ソフトウェア製品インストールシステムおよび方法
US7203937B1 (en) * 2003-01-09 2007-04-10 Microsoft Corporation Software installation and configuration with specific role for target computer and identity indicator for authorization for performance of features
US20060048137A1 (en) * 2004-09-02 2006-03-02 Oracle International Corporation Method and apparatus for cloning an ORACLE RDBMS software
JP4788127B2 (ja) 2004-11-02 2011-10-05 セイコーエプソン株式会社 インストールシステム、インストール方法
JP4382726B2 (ja) 2005-09-12 2009-12-16 中部日本電気ソフトウェア株式会社 ソフトウェア製品インストールシステムおよび方法ならびに実行端末およびそのプログラム
JP4613770B2 (ja) 2005-09-16 2011-01-19 株式会社島津製作所 分析機器用標準操作手順書作成支援ソフトウエア
JP4941779B2 (ja) 2008-11-21 2012-05-30 Necフィールディング株式会社 作業手順書生成装置、方法、及び、プログラム
US8793681B2 (en) * 2011-06-24 2014-07-29 International Business Machines Corporation Determining best practices for applying computer software patches
US20130179480A1 (en) * 2012-01-05 2013-07-11 Stec, Inc. System and method for operating a clustered file system using a standalone operation log
US9355017B2 (en) * 2012-01-06 2016-05-31 Iii Holdings 4, Llc Automated error checking system for a software application and method therefor
WO2014043812A1 (en) * 2012-09-20 2014-03-27 Delta-Q Technologies Corp. System and method for data transfer with a battery charger

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03223928A (ja) * 1989-12-22 1991-10-02 Hitachi Ltd 対話処理方法およびプログラム生成方法
JPH1049492A (ja) * 1996-07-29 1998-02-20 Nec Corp 目的達成型利用者インタフェース装置
JP2007011532A (ja) * 2005-06-29 2007-01-18 Fujitsu Ltd 操作手順書の自動生成装置
JP2008052570A (ja) * 2006-08-25 2008-03-06 Hitachi Software Eng Co Ltd 操作履歴管理システム
JP2010039752A (ja) * 2008-08-05 2010-02-18 Hitachi Information Systems Ltd コマンド操作及びファイル変更の復元方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018087823A1 (ja) * 2016-11-09 2018-05-17 株式会社日立製作所 コンテナ型仮想コンピュータ管理装置、方法、及びコンピュータプログラム

Also Published As

Publication number Publication date
GB201403409D0 (en) 2014-04-16
US9317273B2 (en) 2016-04-19
US20140282492A1 (en) 2014-09-18
GB2515598A (en) 2014-12-31
JP5994693B2 (ja) 2016-09-21

Similar Documents

Publication Publication Date Title
US10140115B2 (en) Applying update to snapshots of virtual machine
US9367305B1 (en) Automatic container definition
US9582268B2 (en) Automatic communications graphing for a source application
US9417865B2 (en) Determining when to update a package manager software
JP5970617B2 (ja) 開発支援システム
US10635473B2 (en) Setting support program, setting support method, and setting support device
WO2018036342A1 (zh) 基于csar的模型文件的可视化设计方法及装置
US20170123777A1 (en) Deploying applications on application platforms
US20150264198A1 (en) Automatic installation system and method, information processing apparatus, and image forming apparatus
US9256509B1 (en) Computing environment analyzer
US20160124795A1 (en) Evaluation method and apparatus
JP6256115B2 (ja) 操作探索プログラム、操作探索方法、および操作探索装置
US20230409305A1 (en) Continuous integration and deployment system time-based management
JP5994693B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
US9836365B2 (en) Recovery execution system using programmatic generation of actionable workflows
EP2575037A1 (en) Generation apparatus, generation method and computer readable information recording medium
JP6996629B2 (ja) 検証自動化装置、検証自動化方法、およびプログラム
JP5968451B2 (ja) 計算機システム、及びプログラム
WO2019099008A1 (en) Software builds using a cloud system
WO2020161994A1 (ja) 依存関係検出装置および依存関係検出方法
WO2016120989A1 (ja) 管理計算機及びルールの試験方法
US20200142689A1 (en) System And Methods for Patch Management
CN111858234A (zh) 一种任务执行方法、装置、设备、介质
US20120131569A1 (en) Automated solaris container creation
US20230129217A1 (en) Removing software operators from distributed computing environments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160808

R150 Certificate of patent or registration of utility model

Ref document number: 5994693

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees