acct 中文man页面(1)

2011-08-18 13:57 佚名 博客转载 我要评论(0) 字号:T | T

如果在内核编译时开启了进程记账选项(CONFIG_BSD_PROCESS_ACCT),则可以通过调用acct(2) 来开始进程记账。

AD:2013云计算架构师峰会超低价抢票中

名字

acct - 进程记账文件

概要

#include <sys/acct.h>

描述

如果在内核编译时开启了进程记账选项(CONFIG_BSD_PROCESS_ACCT),则可以通过调用acct(2) 来开始进程记账。如:

acct("/var/log/pacct");

在进程记账开启之后,每当系统内有进程终止内核将写一个记录到记账文件。这个记录包含已经终止进程的信息,它定义在头文件 <sys/acct.h>

#define ACCT_COMM 16

typedef u_int16_t comp_t;

struct acct {
char ac_flag; /* 记账标记 */
u_int16_t ac_uid; /* 记账用户 ID */
u_int16_t ac_gid; /* 记账组 ID */
u_int16_t ac_tty; /* 控制终端 */
u_int32_t ac_btime; /* 进程创建时间
(从开机起的秒数) */
comp_t ac_utime; /* 用户 CPU 时间 */
comp_t ac_stime; /* 系统 CPU 时间 */
comp_t ac_etime; /* 流失的时间 */
comp_t ac_mem; /* 平均内存用量 (kB) */
comp_t ac_io; /* Characters transferred (未使用) */
comp_t ac_rw; /* 读写的块 (未使用) */
comp_t ac_minflt; /* Minor page faults */
comp_t ac_majflt; /* Major page faults */
comp_t ac_swaps; /* Number of swaps (unused) */
u_int32_t ac_exitcode; /* 进程终止状态
(参看 wait(2)) */
char ac_comm[ACCT_COMM+1];
/* 命令名 (执行文件名;以0结尾) */
char ac_pad[X]; /* 填充字节 */
}; enum { /* 在 ac_flag 域可以设置的位 */
AFORK = 0x01, /* 调用 fork 之后,但还没有调用 exec */
ASU = 0x02, /* 使用超级用户权限 */
ACORE = 0x08, /* 核心转储 */
AXSIG = 0x10 /* 由信号杀死 */
};

这里的 comp_t 数据类型是一个浮点值,是由以 8 为底的 3 位指数和 13 位尾数构成。一个这个类型的值 c 可以通过下面的公式转换为一个(长)整型:

    v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);

ac_utimeac_stimeac_etime 的时间测量单位是时钟嘀嗒,把这个值除以 sysconf(_SC_CLK_TCK) 转换为秒数。

记账文件格式版本 3

从内核版本 2.6.8 开始,一个记账文件的改善版本可以在编译内核时指定 CONFIG_BSD_PROCESS_ACCT_V3 来启用,当设置这个选项之后,记账文件里包含额外的域,并且 c_uidac_gid 域的宽度从 16 位增加到 32 位(在 2.4 内核之后 UID 和 GID 宽度增加了)。这个新的记录结构如下:

struct acct_v3 {
char ac_flag; /* Flags */
char ac_version; /* 总是设置为 ACCT_VERSION (3) */
u_int16_t ac_tty; /* 控制终端 */
u_int32_t ac_exitcode; /* 进程终止状态 */
u_int32_t ac_uid; /* 真实用户 ID */
u_int32_t ac_gid; /* 真实组 ID */
u_int32_t ac_pid; /* 进程 ID */
u_int32_t ac_ppid; /* 父进程 ID */
u_int32_t ac_btime; /* 进程创建时间 */
float ac_etime; /* 流失的埋单 */
comp_t ac_utime; /* 用户 CPU 时间 */
comp_t ac_stime; /* 系统时间 */
comp_t ac_mem; /* 平均内存使用量 (kB) */
comp_t ac_io; /* 传输的字符数量 (未使用) */
comp_t ac_rw; /* 读写的块数
(未使用) */
comp_t ac_minflt; /* 次页异常 */
comp_t ac_majflt; /* 主页异常 */
comp_t ac_swaps; /* 交换的次数 (未使用) */
char ac_comm[ACCT_COMM]; /* 命令名 */
};

版本

acct_v3 结构体在 glibc 2.6 之后定义。

遵循于

进程记账最初出现在 BSD,现在则在大多数系统存在。它是一个没有标准化的特性,并且在系统之间存在许多细节的不同。

注意

记账文件里记录以进程终止的时间顺序排列。

包括 2.6.9 在内或之后的内核,当使用 NPTL 线程库时,当一个线程被创建时会添加一个分隔记账记录;当整个进程的最后一个线程终止时,从 2.6.10 一个单独记账记录会写入。

proc/sys/kernel/acct 文件在 proc(5) 里描述,它定义当磁盘空间不足时如何控制进程记账行为。

参看

lastcomm(1), acct(2), accton(8), sa(8)

内容导航

 第 1 页:中文man  第 2 页:英文man

ZT acct 中文man页面(1)的更多相关文章

  1. url取值乱码问题,url加中文导致页面不能加载问题 js unicode转码,以及解码

    很多时候写H5或其他适配时,打不开url.很多原因是因为浏览器不支持中文url,从url拿 出来的中文值也会乱码,这时候就必须把中文转化成Unicode值,去进行页面传值 中文转Unicode fun ...

  2. 【nodejs】使用response输出中文但页面中文乱码的处置

    两点要确认: 1.head里有<meta charset="utf-8"/> 2.js文件编码为utf-8格式. 第二点往往容易被忽略,所以出现乱码. 附上代码: 'u ...

  3. socket 中文man页面函数

    Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套 ...

  4. Asp.net core中由于页面编码导致的中文乱码

    问题描述 最近使用asp.net core写了一个简单的网站,在windows系统下完全没有出现问题.后来在linux系统中搭建了docker,并且在linux中自动使用git获取源码,编译,部署一条 ...

  5. php向页面输出中文时出现乱码的解决方法

    今天,刚刚学习PHP发现用echo输出中文时,页面会出现乱码,然后查了一下资料说是浏览器编码格式有问题,要改成utf-8.但是每个人的浏览器编码可能会有所不同,所以找到了一个很好的解决方法, 就是在p ...

  6. phantomjs截图中文网站网页页面乱码,安装字体解决

    用phantomjs去截取中文页面的网站可能会出现乱码的情况,也就是截图中中文的位置全是方框. 解决办法就是安装字体. 在centos中执行:yum install bitmap-fonts bitm ...

  7. springMVC中文乱码问题

    1)中文JSP页面编码统一为UTF-8后,页面可以正常显示,但从数据库中获取的数据依然显示乱码(比如下拉表单的数据): 2)当使用了springMVC提供的编码Filter拦截处理后,表单数据.从数据 ...

  8. Java 关于中文乱码处理的经验总结【转载】

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事我也 ...

  9. 关于JAVA中URL传递中文参数的问题

    今天在调用一个接口时,需要传递一个中文参数,结果获取不到数据,原因就在于中文传参的编码问题. 问题来源:URL url= new URL("http://XXX?OrganName=司法厅& ...

随机推荐

  1. c# MVC返回小驼峰Json(首字母小写)

    1.与前端交互时,前端总希望传过去的json字段名首字母小写,但是.net规范是首字线大写 如果就写了下面的转换方法 /// <summary> /// Poco类字段名转换成首字母小写的 ...

  2. python time,random,os,sys,序列化模块

    一.time模块 表示时间的三种方式 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳 ...

  3. python 可迭代对象,迭代器和生成器,lambda表达式

    分页查找 #5.随意写一个20行以上的文件(divmod) # 运行程序,先将内容读到内存中,用列表存储. # l = [] # 提示:一共有多少页 # 接收用户输入页码,每页5条,仅输出当页的内容 ...

  4. google chrome 高版本 解除禁止添加本地扩展

    1.下载chrome.adb文件,找不到的可以到https://pan.baidu.com/s/1j67vz_b6CwKfCH_uZzSfgA  这里下载2.Win+R 输入 gpedit.msc 3 ...

  5. python - 约瑟夫问题

    在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中.39个犹太人决定宁愿死也不要被敌人俘虏,商定一种特殊的方式自杀,41个人排成一个圆圈,由第1个人开始报数,每报到第3人该人就必须自 ...

  6. myeclipse更改后台代码不用重启tomcat的方法

    myeclipse更改后台代码不用重启tomcat的方法   方法1:在WebRoot下的META-INF文件夹中新建一个名为context.xml文件,里面添加如下内容(要区分大小写): <C ...

  7. Hibernate 缓存机制详细解析

    一.why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数 ...

  8. CTPN_论文阅读总结

    论文全名:Detecting Text in Natural Image with Connectionist Text Proposal Network 1.摘要 (1)本文提出新型网络CTPN,用 ...

  9. 获取全球dns统计信息

    # -*- coding:UTF-8 -*- import requests, time import json from bs4 import BeautifulSoup as bp t3 = ti ...

  10. 数据从mysql迁移到hbase的一些思考及设计

    一.进行迁移的原因 由于业务的发展,使用mysql进行建立索引进行搜索已经造成数据流的瓶颈卡在了数据库io,例如每次dump全表的时候,会造成压力过大,造成耗时很长,并且当前的数据量基本上已经达到了亿 ...