史上最全Linux服务器程序规范

admin 2025-09-24 阅读:28 评论:0
http://blog.csdn.net/dextrad_ihacker/article/details/51930998 除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上都是模板式的。 ———引 01 日志 1.Lin...

http://blog.csdn.net/dextrad_ihacker/article/details/51930998

除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上都是模板式的。 ———引

01

日志

1.Linux系统日志:

linux 设置服务器时间_服务器程序日志管理_服务器程序用户信息处理

2.syslog()

应用程序使用syslog()与守护进程rsyslogd通信。

该函数采用可变参数(第二个参数message和第三个参数。。。)来结构化输出。

priority:设施值 (按位异或) 日志级别。设施值默认:LOG_USER,下面针对默认设施值,讨论日志级别。

linux 设置服务器时间_服务器程序用户信息处理_服务器程序日志管理

2.1下面这个函数可以改变syslog的默认输出方式,进一步结构化日志内容

(1)ident:指定字符串将被添加到日志消息的日期和时间之后,通常设为程序的名字。

(2)logopt:对后续syslog调用的行为进行配置,它可取下列值的按位异或

(3)facility: 用来修改ysyslog默认设施值

此外,日志过滤也很重要,程序再开发阶段可能需要输出很多调试信息,而发布之后,我们又要将这些调试信息关闭,解决这个问题的方法并不是再程序发布之后,删除调试代码(日后可能还会用到),而是缉拿但地设置日志掩码,使日志级别大于日志掩码的日志被系统忽略。

2.2下面这个函数用于设置syslog的日志掩码。

maskpri:指定日志掩码值,该函数始终回成功,它返回调用进程先前的日志掩码值。

2.3关闭日志功能:

02

用户信息

1.UID, EUID, GID, EGID

用户信息对于服务器安全很重要,大多说服务器以root启动, 非root运行

服务器程序日志管理_linux 设置服务器时间_服务器程序用户信息处理

基础知识:

一个进程拥有两个用户ID, UID, EUID, EUID存在的目的是为了方便资源的访问, 它使得运行程序的用户拥有该程序的有效用户权限,比如,su用来更改账户信息,但修改账户时su程序的所有者是root,在普通用户运行su程序时,其有效用户就是该程序的所有者root, 有效用户为root的进程称为特权进程,EGID与EUID类似,下面演示uid, euid区别:

服务器程序日志管理_linux 设置服务器时间_服务器程序用户信息处理

将生成的可执行文件,所有者设置为root,并设置该文件set-user-id标志,然后运行。

从测试输出结果看,进程的uid是启动程序的用户id, 而euid是root。

2.切换用户

linux 设置服务器时间_服务器程序日志管理_服务器程序用户信息处理

03

进程间关系

1.进程组:

Linux下每一个进程都属于一个进程组,因此他们除了pid之外,还有进程组ID(PGID)。我们用如下函数获取指定进程组PGID.

成功返回pid, 失败-1,设置errno。

如果pid与pgid相同,则由pid指定的进程别设置为进程组首领:如果pid为0, 表示当前进程的PGID为pgid;如果pgid为0, 则使用pid作为目标pgid。setpid函数成功时返回0, 失败-1, 设置errno。 一个进程只能设置自己或者其子进程的PGID。并且, 当子进程调用exec系列函数后,我们也不能再在父进程中对他设置PGID。

2.会话

(1)一些有关联的进程将组成一个会话, 下面的函数用于创建一个会话:

该函数不能由进程组的首领进程调用,否则将产生一个错误。对于非首领的进程, 调用该函数不仅创建新会话, 而且有如下额外效果。

调用进程成为会话的首领,此时该进程时新会话的唯一成员。 新建一个进程组whatsapp网页版登录whatsapp登录,其PGID就是调用进程的PID, 调用进程成为该组的首领。 调用进程将甩开终端(如果有)

该函数成功时返回新的进程组PGID, 失败-1, errno。 Linux进程并未提供所谓会话ID的概念, 但Linux系统认为它等于会话首领所在的进程组的PGID, (2)并提供了如下函数读取SID

3.用ps命令查看进程关系

执行ps命令可查看进程,进程组和会话之间的关系。

在bash_shell 下执行ps和less命令whatsapp官网,所以ps和less命令的父进程时bash命令,这个可以从PPID(父进程PID)一列看出。 这三条命令创建了一个会话(SID是2962)和两个进程组(PGID:2962, 3102)bash命令的PID,PGID和SID都相同,显然它时会话的首领, 也就是组2962的首领。ps时3102的首领,

服务器程序日志管理_服务器程序用户信息处理_linux 设置服务器时间

04

系统资源限制

Linux上运行的程序都会受到资源限制的影响,比如物理设备限制(cpu数量,内存数量等),系统策略限制(cup时间等),以及具体实现的限制(文件名最大长度)Linux系统资源限制可以通过如下一对函数来读取和设置: getrlimit , setrlimit

rlimit 结构体定义如下:

linux 设置服务器时间_服务器程序用户信息处理_服务器程序日志管理

成功返回0, 失败-1, 置errno

rlim_t 是一个整数类型,它描述资源级别

rlim_cur 成员指定资源的软限制,建议性的,最好不要超越的限制,如果超越,系统可能向进程发送信号,并终止运行,如果当前进程CPU时间超过软限制,系统将向进程发送SIGXCPU信号;当文件尺寸超过其软限制时,系统将向进程发送SIZEXFSZ信号。 rlim_max 成员指定资源的硬限制。硬限制一般是软限制的上限,普通程序可以减小应限制,而只有以root身份运行的程序才能增加硬限制,此外我们可以使用ulimit命令修改当前shell环境下的资源限制(软/硬)这种修改对该shell启动的所有后续程序都有效,我们也可以通过修改配置文件来改变系统软限制和应限制,而这种修改时永久的。

resource参数指定资源限制类型。如下表

服务器程序日志管理_服务器程序用户信息处理_linux 设置服务器时间

05

改变工作目录和根目录

有些服务器程序好需要改变工作目录和根目录(web /var/www) 获取当前进程工作目录和改变进程的工作目录的函数:

buf参数指向的内存用于存储当前工作目录的绝对路径,size指定其大小

如果当前目录的绝对路径超度(+1 (‘\0’))超过了size,则getcwd返回NULL,errno:ERANG。

chdir中path指向要切换到的目录。成功0, 失败-1 置errno。

改变进程根目录:chroot

chroot并不改变进程的当前工作目录,调用chroot之后,仍需要调用chdir(“/”)来将工作转至新的工作目录,之后原来的文件描述符依然生效。所以可以利用早先打开的文件描述符来访问调用chroot之后不能直接访问的文件(目录).

06

服务器程序后台化

最后,如何在代码中让一个进程以守护进程的防止运行,守护进程的编写遵循一定的步骤,下面一个实例。

linux 设置服务器时间_服务器程序日志管理_服务器程序用户信息处理

实际上,linux提供了完成同样功能的库函数:

nochdir:传0则工作目录将被设置为”/”,否则继续使用当前工作目录。 noclose:传0标准输入输出,标准错误输出都被重定向到,dev/null,否则继续使用原来的设备,成功0, 失败-1 置error。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

3502文章数 0评论数
热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...