acctcomコマンドによる終了ステータスの確認:UNIX処方箋(2/2 ページ)
「事件は枯れたシステムが稼働する現場で起こってるんだ」と現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、プロセスの開始/終了時刻および終了ステータスを確認するacctcomコマンドの活用法を紹介する。
acctcomコマンドによる終了ステータス
acctcomコマンドでは、/var/adm/pacctファイルに記録された終了プロセスの情報から、プロセスの起動/終了時刻やCPU使用時間などの情報を取り出すことが可能です。
出力内容
acctcomコマンドで「-f」オプションを指定すると、実行例1のような内容が表示されます。各項目の意味は表1を、終了ステータス(シグナル)の詳細については表2を参照してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
項目 | 意味 |
---|---|
MEAN SIZE | 平均メモリサイズ |
F | fork/exec実行時のフラグ(8進数)。表示される値は、AFORK(forkは実行されたが、execが実行されていない状態)が「001」、ASU(スーパーユーザー特権で実行)が「002」、AEXPND(拡張レコードタイプを使用。デフォルト)が「040」 |
STAT | プロセスの終了ステータス(8進数)。下2桁のみが意味を持つため、例えば「203」の場合は「03」と読み替える。正常終了は「00」 |
シグナル名 | 番号 | アクション概要 |
---|---|---|
SIGHUP | 1 | 強制終了ハングアップ |
SIGINT | 2 | 強制終了割り込み |
SIGQUIT | 3 | コアファイル出力終了 |
SIGILL | 4 | コアファイル出力不正な命令 |
SIGTRAP | 5 | コアファイル出力トレーストラップ |
SIGABRT | 6 | コアファイル出力異常終了 |
SIGEMT | 7 | コアファイル出力エミュレーショントラップ |
SIGFPE | 8 | コアファイル出力浮動小数点例外 |
SIGKILL | 9 | 強制終了プロセスの強制終了 |
SIGBUS | 10 | コアファイル出力バスエラー |
SIGSEGV | 11 | コアファイル出力セグメンテーション違反 |
SIGSYS | 12 | コアファイル出力引数が不正なシステムコール |
SIGPIPE | 13 | 強制終了読み手のないパイプへの書き込み |
SIGALRM | 14 | 強制終了アラームクロック |
SIGTERM | 15 | 強制終了プロセスの終了 |
SIGPOLL | 22 | 強制終了ポーリング可能イベントの発生 |
SIGSTOP | 23 | 停止プロセスの停止(捕捉や無視は不可能) |
SIGTSTP | 24 | 停止ユーザーからのプロセス停止要求 |
SIGTTIN | 26 | 停止バックグラウンドプロセスからのtty入力要求 |
SIGTTOU | 27 | 停止バックグラウンドプロセスからのtty出力要求 |
SIGVTALRM | 28 | 強制終了仮想タイマーの時間超過 |
SIGPROF | 29 | 強制終了プロファイリングタイマーの時間超過 |
SIGXCPU | 30 | コアファイル出力CPU使用時間制限の超過 |
SIGXFSZ | 31 | コアファイル出力ファイルサイズ制限の超過 |
プロセス異常終了のテスト
プロセスが異常終了し、プロセスの終了ステータスが正常終了以外になった場合の例を紹介します。ここでは、実行中のfindコマンドに対してkillコマンドで各シグナルを送信し、findコマンドが異常終了した後にacctcomコマンドを実行してみます。
まずは、findコマンドを次のように実行します。これは、後述するシグナルの送信に合わせて6回実行することになります。
# find / -print > /dev/null
findコマンド実行後、psコマンドによってプロセスIDを確認し、killコマンドで各シグナルを送信します(実行例2)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
killコマンド実行後、
# acctcom -f
のようにacctcomコマンドを実行すると、リスト1のような出力となり、「STAT」の項目には受信したシグナルの種類が表示されます。この値を表2の内容と照らし合わせて、例えば「12」であれば「異常終了の原因はバスエラーであるため、コアファイルが残っているはず」などの情報が取得できるわけです。
関連記事
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.