Linux环境-日志&资源和限制
日志,用于记录程序的活动,错误指示、警告或是与系统有关的一般信息。
/usr/adm 或 /var/log目录。
文件/var/log/messages包含所有的系统信息
文件/var/log/mail包含所有的邮件系统日志信息
文件/var/log/debug包含调试信息
UNIX规范通过syslog函数为所有程序产生日志信息提供了一个接口
priority 指定本条日志的优先级,该参数是 facility(由openlog在日志写入前设定)与严重级别的按位或。
日志包含消息头(设施值facility与实践)和消息体(message参数),message参数类似于printf的格式字符串。转换控制符%m可以用于插入与错误变量errno当前值对应的出错消息字符串。
eg.程序不会再控制台上输出,但是会在日志中记录程序执行以及程序输出的错误信息(打开一个不存在的文件)
一些改变日志信息的其他函数,char *iddent,可以用来标识是哪个程序产生的日志文件,字符串将会添加在日志信息前面.facility参数记录被syslog()调用的默认设施值,logopt参数对后续syslog调用的行为进行配置,是表中多个参数的按位或。
openlog()函数会打开一个文件描述符,可以用closelog()关闭,注意,在调用syslog之前不需要调用openlog(),它会自行打开日志设施。
可以使用LOG_MASK(priority)为日志创建掩码 LOG_UPTO(priority)创建一个由指定优先级之上的所有优先级构成的掩码。
资源和限制
limits.h中定义了许多代表操作系统方面限制的显式常量
头文件sys/resource.h提供了资源操作方面的定义,其中对程序长度、执行优先级和文件资源等方面的限制进行查询和设置
id_t是一个整数类型,它用于用户和组标识符。rusage结构用来确定当前程序已经耗费了多少CPU时间
每个运行的程序都有一个与之关联的优先级,优先级越高的程序将分配到更多的CPU可用时间
普通用户只能降低其程序的优先级,而不能提高
程序默认的优先级是0,正数优先级用于后台任务,他们只在没有比他们优先级还高的程序正在运行时才会被运行。负数使一个程序运行更频繁,获得更多的CPU时间。优先级的有效范围是-20~+20
Linux系统资源限制
getrlimit()和setrlimit(),两个函数都使用结构rlimit来描述资源限制。分为软、硬限制,rlim_t是一个整数类型,用来描述资源级别。
软限制是一个建议性的,最好不要超过的限制,如果超越可能会导致库函数返回错误。
硬限制如果被超越,则会使系统发送SIGSEGV信号。
程序可以修改软限制为小于硬限制的任何值,它也可以减小自己的硬限制。但只有超级用户权限运行程序才可以增加硬限制。