acctが実行されているかどうかはどうすればわかりますか? (UNIXシステム会計)

acctが実行されているかどうかはどうすればわかりますか? (UNIXシステム会計)

パッケージをインストールしましたが、acctログファイルでファイルのアクティビティを表示できるため、動作しています。これをオンにするコマンドがあることを知っていますが、accton onログファイルでアクティビティを確認していないことをどのように確認できますか?

私が読んだところでは、アカウントはカーネルの一部として管理され、プログラムは単にロギングアクティビティを許可するので、実行されるデーモンがないと思います。

PS:「acct」というプロセスはありません。

答え1

ログファイルが大きくなったり大きくなったりしないことを確認するよりも良い方法はないと思います。会計士がバックアップファイルに転送される可能性があるため、これは完璧ではありません。奇妙なことが起こらない健康なシステムでも、アカウントを停止し、ログを回転させて再起動するcronタスクがあるため、間違った答えを得る簡単なウィンドウがあります。

たぶんどこかに現在の会計ファイルへのシンボリックリンクがある/procはずです。

答え2

私はCentOSを使用していますpsacct

psacctサービスとして実行されるため、次のことができます。

 service psacct status

ロックファイルを確認できます。/var/lock/subsys/psacct

私はそれがカーネルスペースで実行されていると思い、実際にそれが実行されているか開いているかを言うのが非常に難しいように設計されていると思います(説明のない会計ファイルを使用して起動スクリプト内のロックファイルの場所を変更した場合)。ひびの入った箱のための法医学ツールがあります。

答え3

あなたは正しいです。システムアカウントに関連するプロセスはありません。これは、多くのUnixと同様に、システムアカウントファイルに直接書き込む内部カーネル関数です/var/account/acct。この内部カーネル関数の状態を取得するシステムコールはありません。

システムアカウントがオンになっていることを確認する安定した方法は、標準のUnixコマンドをlastcomm2回使用することです。最初のプロセスはシステムアカウントファイルに登録され、2番目のプロセスは最後に終了し、登録されたプロセスがあることを確認しますlastcomm

負荷の高いサーバー、特にマルチプロセッサでは、2番目のプロセスは、最初のプロセスをlastcomm表示する前に終了した他のプロセスをさらに表示できますlastcomm。これは正常です。

これは、会計ステータスを取得するための最良のシェル機能です。

is_acct_on() {
    t=`mktemp /tmp/acct.XXXX`
    touch ${t}
    sleep 1
    x=`find /var/account -newercc ${t} -name "acct" | head -1`
    rm ${t}
    [ -z "${x}" ]
}

使用法:

is_acct_on

0会計が終了した場合の返品

1会計がオンになっている場合。

関連情報