国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux環境-日志、資源和限制

2024-06-28 16:03:16
字體:
來源:轉載
供稿:網友

日志:

系統運行時或者程序運行時會產生很多信息,通常將其保存于/var/log或者/usr/adm

UNIX規范提供了一個產生信息的接口

#include <syslog.h>

void syslog(int PRiority, const char *message, arguments...);

priority 是一個嚴重級別與一個設施值的按位或,根據不同的系統配置,不同的嚴重級別系統會做出不同的動作

嚴重級別:

LOG_EMERG 緊急情況

LOG_ALERT 高優先級故障

LOG_CRIT 嚴重錯誤

LOG_ERR 錯誤

LOG_WARNING 警告

LOG_NOTICE 需要注意的特殊情況

LOG_INFO 一般信息

LOG_DEBUG 調試信息

設施值:

LOG_USER,LOG_LOCAL0~LOG_LOCAL7

message、argument : 與printf的用法類似

特別的%m可以插入與錯誤變量errno當前值對應的出錯消息字符串

另有一些能夠改變日志記錄行為的函數

void closelog(void);

void openlog(const char *ident, int logopt, int facility);

int setlogmask(int maskpri);

ident: 設置該字符串,將會將該字符串加在每一條日志信息前

facility: 記錄一個將被用于后續syslog調用的默認設施值

logopt: 對后續syslog調用的行為進行配置,它是0個或者多個下列參數的按位或

LOG_PID 在日志信息中包含進程標識符

LOG_CONS 如果信息不能被記錄到日志文件中,就把他們發送到控制臺

LOG_ODELAY 在第一次調用syslog時才打開日志設施(惰性開啟)

LOG_NDELAY 立即打開日志設施,而不是等到第一次記錄日志時

openlog會分配并打開一個文件描述符,通過closelog可以關閉它

maskpri: 通過設置它來決定關注哪些等級的log 

               例:setlogmask(LOG_UPTO(LOG_NOTICE)); 只有嚴重程度在LOG_NOTICE之上的log才會被記錄

#include <sys/types.h>

#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);

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 硬限制

//確定當前程序已耗費了多少CPU時間

int getrusage(int who, struct rusage *r_usage);

who參數:

RUSAGE_SELF 僅返回當前程序的使用信息

RUSAGE_CHILDREN 還包括子進程的使用信息

r_usage結構體:

struct timeval ru_utime使用的用戶時間 //用戶時間和優先級有關

struct timeval ru_utime使用的系統時間 //一個同樣程序的系統時間時固定的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连平县| 常州市| 保定市| 临邑县| 桂阳县| 稷山县| 渑池县| 迁西县| 常州市| 新郑市| 卫辉市| 辽阳县| 阿拉善右旗| 霍林郭勒市| 大余县| 额尔古纳市| 吴桥县| 鹿泉市| 平谷区| 安庆市| 常德市| 垫江县| 鄂伦春自治旗| 喀喇沁旗| 怀安县| 惠州市| 武清区| 弥渡县| 景德镇市| 上栗县| 大城县| 孟连| 思南县| 桦甸市| 富源县| 洪洞县| 教育| 梨树县| 红原县| 筠连县| 金门县|