7-liunx服务器规范

目录

概况

liunx服务器上有很多细节需要注意 ,这些细节很重要而且是 模版状,称为服务器规范

比如

  • 服务器程序一般在后台运行,又称为守护进程,没有控制终端,因此,不会意外收到用户输入,它们的父进程一般是init进程 PID为1的进程
  • liunx服务器程序一般以非root权限运行,而且有自己的运行账户,比如mysql,apache 和syslog等
  • liunx服务器程序是可配置的,通常有很多命令行选项,可以针对不同的情况采取不同的措施,这些程序一般有自己的配置文件,配置文件一般放在/etc目录下面
  • liunx服务器启动的时候会生成一个PID文件存入 /var/run目录下面 以记录后台进程的PID 比如syslog的pid文件是/var/run/syslogd.pid
  • 服务器程序需要考虑系统资源和限制 ,预测自身能承受多大符合,比如进程可用文件描述符总数和内存总量.

liunx日志

liunx系统日志

服务器的调试和维护都需要一个专业的日志系统,liunx提供一个守护进程来处理日志 ---syslogd

现在liunx用到的都是他的升级版 --- rsyslogd


rsyslogd 既能接受用户日志 也能接受内核日志 用户调用syslog来将信息输出到本地UNIX域中的socket类型的文件/dev/log rsyslog则监听该文件以获取 用户进程的输出。

在老系统上内核日志是通过守护进程rklogd来管理的。 rsyslogd利用额外的模块来实现了相同的功能。内核日志由printk等函数打印到内核的环状缓存中 环状缓存中的内容直接映射到/proc/kmsg文件中. rsyslogd则通过读取该文件获得内核日志。


rsyslogd守护进程收到用户进程或者内核输入的日志后 会输出到指定的日志文件中,这些都是可以配置的

  • 默认情况下调试信息回报错在/var/log/debug文件,普通信息报错在/var/log/messages文件 内核消息保存在/var/log/kern.log文件
  • 日志系统如何分发可以在/etc/rsyslog.conf中。主要可以设置的项包括,内核日志输出路径,是否接受UDP日志及监听端口(默认514 在、/ect/services文件),是否接受TCP日志及监听端口,日志文件的权限,包含那些子配置文件(/etc/rsyslog.d/*.conf) 这些配置文件指定各类日志的目标存储文件

一图概括

syslog函数

应用程序采用syslog函数和rsyslogd守护进程通信,定义如下

第一个参数是日志级别

第二个可变参数 用于输出具体日志内容

日志级别如下

openlog 可以改变syslog默认输出方式 ,进一步结构化
  • ident 将被添加到日志消息的日期和时间之后 常被设置为程序的名称
  • logopt参数对后续syslog调用的行为进行配置 下面为可取值

    -facility参数可用来修改syslog函数中的默认设施值

还可以通过设置日志掩码 来保证发布的程序不会出现大量的日志日志级别大于日志掩码的日志信息将会被忽略

maskpri 指定日志掩码值 返回该进程之前的日志掩码值

调用完后日志 需要通过下面函数关闭日志

用户信息

大部分服务器以root身份启动,但不能以root的身份运行。这关乎用户信息的安全性。

下面函数可以获取和设置当前进程的真实用户,有效用户,真实组,有效组。

一个进程有两个用户ID:UID 和EUID。

EUID存在的目的是为了方便资源访问:让运行程序的用户拥有有效用户的权限

任何用户都能用su程序来修改自己的账号信息 ,因为su程序的有效用户是root,可以访问到/etc/passwd文件 su程序被设置成了set-user-id.

任何运行su程序的普通用户都能访问/etc/passwd文件。有效用户为root的进程被称为特权进程

进程间的关系

liunx下面的每一个进程 有自己的pid 也有进程组ID(PGID)

通过下面函数获取指定进程的PGID

成功返回进程所属PGID,失败则返回-1 并设置errno

设置PGID

该函数将PID为pid的进程PGID设置为pgid,如果pid和pgid相同,则把pid对应的进程设置为进程组首领。如果pid为0 ,则表示当前进程的PGID 为pgid 如果pgid为0 ,则使用pid作为目标PGID。setgid函数成功时返回0,失败则返回-1并设置erron

注意:一个进程只能设置自己或者其子进程的PGID ,并且,当子进程调用exec相关函数后,

我们不能再在父进程中它设置PGID

会话

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

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

  • 调用进程会成为会话的首领 ,此时该进程是新会话的唯一成员.
  • 新建的一个进程组 ,其PGID就是调用进程的PID 调用进程称为了该组的首领
  • 调用进程将甩开终端
    该函数调用成功将返回新的进程组PGID 失败返回-1 并设置errno

liunx进程并未提供所谓的会话ID的概念,但liunx系统认为它等于会话首领所在的进程组PGID

并提供了如下函数来读取SID

ps命令查看进程关系

系统资源限制

待补充

改变工作目录和根目录

待补充

服务器程序后台话

待补充

相关推荐
SPC的存折18 小时前
3、主从复制实现同步数据过滤
linux·运维·服务器
SPC的存折18 小时前
openEuler 24.03 MariaDB Galera 集群部署指南(cz)
linux·运维·服务器·数据库·mysql
xcbrand18 小时前
文旅行业品牌策划公司找哪家
大数据·运维·人工智能·python
SPC的存折18 小时前
MySQL 8.0 分库分表
linux·运维·服务器·数据库·mysql
风吹迎面入袖凉18 小时前
【Redis】Redisson分布式锁原理
java·服务器·开发语言
cyber_两只龙宝18 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle
斌味代码18 小时前
Shell 性能监控:指标采集、告警规则与可视化大盘设计
运维
22信通小白19 小时前
USRP初学者使用手册(基础配置及bug记录)——Linux+Clion(单台X310收发)
linux·运维·c++·5g·bug·信息与通信
day day day ...20 小时前
MyBatis条件误写引发的查询条件污染分析与防范
java·服务器·tomcat
TechMasterPlus20 小时前
Linux U-Boot 与内核启动流程深度解析:从上电到 Shell 的完整之旅
linux·运维·服务器