Linux Process Accounting(psacct)如何工作?

我发现很多关于psacct文档,但是他们正在处理使用情况,而不是如何工作。

我真的很想知道stream程会计是如何工作的:

  1. 系统的哪个部分logging关于过程的信息?

  2. 它是如何工作的?

已经完成了

我在RHEL 6.5上安装了psacct。

  1. 服务启动脚本实际上(/etc/init.d/psacct)调用这个:

    / sbin / accton $ ACCTFILE

  2. / sbin / accton调用系统调用acct()

男子acct

描述acct()系统调用启用或禁用进程记帐。 如果使用现有文件的名称作为参数进行调用,则会计将打开,并且每个终止进程的logging将在文件名终止时附加到文件名。 NULL参数会导致会计closures。

你的问题的答案是在Linux源文件kernel/acct.c 特别是在fill_ac function

 /* * Write an accounting entry for an exiting process * * The acct_process() call is the workhorse of the process * accounting system. The struct acct is built here and then written * into the accounting file. This function should only be called from * do_exit() or when switching to a different output file. */ static void fill_ac(acct_t *ac)