Linux环境-日志、资源和限制
来源:互联网 发布:商品房 网络拓扑结构图 编辑:程序博客网 时间:2024/05/20 14:42
日志:
系统运行时或者程序运行时会产生很多信息,通常将其保存于/var/log或者/usr/adm
UNIX规范提供了一个产生信息的接口
#include <syslog.h>
void syslog(int priority, const char *message, arguments...);
priority 是一个严重级别与一个设施值的按位或,根据不同的系统配置,不同的严重级别系统会做出不同的动作
message、argument : 与printf的用法类似严重级别:
LOG_EMERG 紧急情况
LOG_ALERT 高优先级故障
LOG_CRIT 严重错误
LOG_ERR 错误
LOG_WARNING 警告
LOG_NOTICE 需要注意的特殊情况
LOG_INFO 一般信息
LOG_DEBUG 调试信息
设施值:
LOG_USER,LOG_LOCAL0~LOG_LOCAL7
特别的%m可以插入与错误变量errno当前值对应的出错消息字符串
另有一些能够改变日志记录行为的函数
void closelog(void);
void openlog(const char *ident, int logopt, int facility);
int setlogmask(int maskpri);
openlog会分配并打开一个文件描述符,通过closelog可以关闭它ident: 设置该字符串,将会将该字符串加在每一条日志信息前
facility: 记录一个将被用于后续syslog调用的默认设施值
logopt: 对后续syslog调用的行为进行配置,它是0个或者多个下列参数的按位或
LOG_PID 在日志信息中包含进程标识符
LOG_CONS 如果信息不能被记录到日志文件中,就把他们发送到控制台
LOG_ODELAY 在第一次调用syslog时才打开日志设施(惰性开启)
LOG_NDELAY 立即打开日志设施,而不是等到第一次记录日志时
#include <sys/types.h>maskpri: 通过设置它来决定关注哪些等级的log
例:setlogmask(LOG_UPTO(LOG_NOTICE)); 只有严重程度在LOG_NOTICE之上的log才会被记录
#include <unistd.h>
pid_t getpid(void); //获得进程PID
pid_t getppid(void);//获得父进程PID
限制:
在linux系统上运行的程序会受到资源的限制,有来自硬件方面的物理限制,系统策略上的限制或具体实现的限制
在limits.h头文件中便定义了许多代表操作系统方面的限制的显式常量
例如:
NAME_MAX 文件名中的最大字符数
CHAR_BIT char类型值的位数
CHAR_MAX char类型的最大值
INT_MAX int类型的最大值
资源:
在头文件sys/resource.h中提供了资源操作方面的定义,其中包括对程序长度、执行优先级和文件资源等方面限制进行查询和设置的函数
#include <sys/resource.h>
//获得与优先级参数
int getpriority(int which, id_t who);//失败返回-1,由于-1也是一个有效优先级所以需要检查errno且在之前需要将errno设置为0
int setpriority(int which, id_t who, int priority);//失败返回-1,成功 0
//获得与设置资源限制which参数
PRIO_PROCESS who参数时进程标识符
PRIO_PGRP who参数是进程组
PRIO_USER who参数时用户标识符
priority参数: -20 ~ 20 负的优先级将会占用更多的CPU时间,普通用户只能降低程序的优先级,而不能升高
int getrlimit(int resource, struct rlimit *r_limit);
int setrlimit(int resource, const struct rlimit *r_limit);
//确定当前程序已耗费了多少CPU时间resource参数:
RLIMIT_CORE 内核转储(core dump)文件的大小限制(字节为单位)
RLIMIT_CPU CPU时间限制(秒为单位)
RLIMIT_DATA 数据段限制(字节)
RLIMIT_FSIZE 文件大小限制(字节)
RLIMIT_NOFILE 可以打开的文件数限制
RLIMIT_STACK 栈大小限制(字节)
RLIMIT_AS 地址空间(栈和数据)限制(字节)
r_limit成员:
rlimit_t rlim_cur 当前的软限制
rlimit_t rlim_max 硬限制
int getrusage(int who, struct rusage *r_usage);
who参数:
RUSAGE_SELF 仅返回当前程序的使用信息
RUSAGE_CHILDREN 还包括子进程的使用信息
r_usage结构体:
struct timeval ru_utime使用的用户时间 //用户时间和优先级有关
struct timeval ru_utime使用的系统时间 //一个同样程序的系统时间时固定的
- Linux环境-日志、资源和限制
- linux编程中的资源和限制
- LINUX环境(六)--资源与限制
- linux进程资源限制
- Linux Note – 通过ulimit和PAM来限制资源
- 如何灵活运用Linux 进程资源监控和进程限制
- 如何灵活运用Linux 进程资源监控和进程限制
- CUDA学习日志:开发环境配置和学习资源
- Linux 内核资源限制 -- 栈限制
- 修改linux资源限制---ulimit
- 修改linux资源限制---ulimit
- linux下限制资源吗?
- linux资源限制级别汇总
- Linux中进程资源限制
- linux之cgroups资源限制
- 资源的软限制和硬限制
- Linux限制用户资源(RedHat Linux)
- Linux的一些资源使用限制
- MMAP简单介绍
- Java 使用Redis缓存工具的图文详细方法
- android studio http proxy 设置代理
- Python模块安装方法
- DSP的InitSysCtrl()函数详谈
- Linux环境-日志、资源和限制
- 活动中的Toast
- 聊聊同步、异步、阻塞与非阻塞
- 架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)
- graphicsmagick+apache图片请求在线生成规定尺寸图片
- 88.hdu--1201--18岁生日
- 【Java并发编程实战】-----“J.U.C”:CyclicBarrier
- 31.提示标签
- 高德,百度,Google地图定位偏移以及坐标系转换