除了通信网络,服务器程序还必须考虑许多其他关键问题,这些问题是零碎的,但大多数是基于模板的。
01日志
1。Linux系统软件日志:
Linux提供了一个守护进程来解决系统软件日志——syslogd,新升级——rsyslogd。
Rsyslogd守护进程可以接受客户端进程的输出日志和核心日志。
客户端处理时,通过调用syslog函数转换成系统软件日志。
该函数将日志输出到unix的本地套接字类型(AF_unix)的一个文件/dev/log中,rsyslogd监控该文件以获得客户端进程的输出。
当日志在之前的系统软件中时,方法按照另一个守护进程rklogd进行管理,rsyslogd通过使用额外的控制模块来保持相同的功能。通过更改printk之类的树,将核心日志复制到核心环缓存文件中。循环缓存文件的内容会立即投影到/proc/kmsg。
Rsyslogd根据加载该文件来获取核心日志。默认情况下,调试信息存储在/var/log/debug中,一般信息内容存储在/var/log/messages中。核心信息内容为/var/var/log/kern.log环境变量:/etc/rsyslog.conf,关键设置为核心日志的相对路径,是否接受UDP日志,监控端口号(默认设置为514/etc/services)是否接受TCP日志,以及监控端口号,日志文件权限,包含哪些环境变量。
2.syslog()
该程序运行应用程序syslog()与守护程序rsyslogd通信。
该功能选择可变参数(第二个主参数消息和第三个主参数)。。。)到结构输出。
优先级:设备值的对数级别(按位异或)。设备值的默认设置:LOG_USER。对于设备值的默认设置,日志级别将在下面讨论。
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运行。
基础知识:
一个流程有两个客户id,uid、euid和EUID。EUID的目的是方便浏览资源,它敦促运行程序流的客户拥有合理的用户权限。比如su是用来更改账户信息的,但是更改账户时su程序流的用户是root。用户运行su程序流时,其合理用户就是程序流的用户根,合理用户是根的进程称为正确进程。EGID和EUID相似。
会被转换成可执行文件,用户将其设置为root,并设置文件的set-user-id标志,然后就会运行。
从测试输出来看,进程的uid是启动程序进程的客户id,而euid是根。
2。切换用户
03进程间关联
1。进程组:
Linux下的每个进程都属于一个进程组,所以它们除了pID之外还有进程组ID(PGID)。人们使用下面的函数来获取特定进程组的PGID。
成功返回pid,不成功-1,设置错误号。
如果pid与pgid相同,则将pid的具体进程设置为进程组长:如果pid为0,则当前进程的PGID为PGID;如果pgid为0,则pid用作总目标pgid。PID函数成功时返回0,失败时返回-1,设置errno。
一个进程只能设置自身或其子进程的PGID。而且当子进程调用exec系列产品函数时,人们已经不能在父进程中为他设置PGID了。
2。应用程序
(1)一些相关的过程将构成一个应用程序,下面的函数用于构建一个应用程序:
该功能不能被流程组的领导流程调用,否则会出错。对于非领导进程,调用该函数不仅建立了一个新的会话,还具有以下额外的实际效果。
调用进程成为应用程序的领导者,并且该进程是新会话的唯一成员。
正在建立一个进程组,其PGID的意思是调用进程的PID,调用进程成为这种情况的主导。
调用过程将转储终端设备(如果有的话)。
函数成功时返回新的进程组PGID,但失败-1,errno。
Linux进程仍然没有产生应用ID的明确定义,但是Linux系统软件感觉它相当于应用领导者所属进程组的PGID。
(2)给出以下函数加载SID。
3。使用ps命令查询进程关联
ps命令可以查询进程、进程组和应用程序之间的关联。
ps和less指令是在bash_shell下实现的,所以ps和less指令的父进程是bash指令,从PPID(父进程PID)一栏可以看出。
这三个指令为一个应用程序(SID是2962)和两个进程组(PGID:2962,3102)建立了Bash指令的PID。PGID和SID是一样的,很明显它那个时代的领袖是2962组的领袖。ps3102的负责人,
04计算机资源限制
运行在Linux上的程序进程都受到资源限制的危害,比如物理机器和设备的限制(总cpu、总运行内存等。)、系统软件对策的限制(杯赛时间等。),以及实际保留的限制(文件夹名有长有短)。Linux计算机资源的限制可以根据以下一对函数进行加载和设置:
rlimit结构定义如下:
成功返回0,不成功-1,设置errno。
Rlim_t是一个整数数量类别,它描述了资源级别。
建议对rlim_cur团队成员的具体资源进行软限制,最好不要越限。如果超过限制,系统软件会将数据信号推送到进程并停止工作。如果当前进程的CPU时间超过软限制,系统软件会将SIGXCPU数据信号推送给该进程;当文件大小超过其软限制时,系统软件会将SIZEXFSZ数据信号推送到进程。
rlim_max团队成员的特定资源的硬限制。一般硬限制就是软限制。普通程序可以降低所需的限制,但只能以root身份 *** 作的程序流可以提高硬限制。此外,我们可以使用ulimit指令来改变当今shell自然环境中的资源限制(软/硬)。这种改变对于由外壳启动的所有事件后程序流都是合理的。人们还可以根据变化的环境变量来改变系统软件的软限制和所需限制,并且这种改变是永久性的。
05上班改文件目录和网站根目录
有些服务器程序在工作时必须改变文件目录和网站根目录(web/var/www)。
获取当前进程的工作文件目录和改变进程的工作文件目录的功能:
bufmain参数偏向的运行内存的绝对路径用来存放各种工作文件的目录,大小指定其大小。
如果当前目录的绝对路径名(1('))超过了大小,getcwd返回NULL,errno:ERANG。
chdir中的路径偏向于要转换到的文件目录。成功0,不成功-1设置错误号。
更改流程网站的根目录:chroot
Chroot不改变进程的工作文件目录。调用chroot后,仍然必须调用CHDIR("/")将工作转移到新的工作文件目录,原来的文件描述符在以后仍然生效。所以之前打开的文件描述符可以用来浏览调用chroot后不能立即浏览的文档(文件目录)。
06服务器程序后台管理
最后,如何让一个进程在编码中避开守护进程运行,守护进程的编写遵循一定的流程。这里有一个案例。
事实上,linux提供了执行相同功能的库函数:
Nochdir:如果传递0,工作文件目录将被设置为“/”,否则,将再次应用所有工作文件目录。
Noclose:0标准输出通过,所有标准不正确的输出跳转到,dev/null,否则重新申请原机器设备,成功为0,失败为-1,设置错误。
天地信息凭借17年IDC运营经验,发布了服务器租赁与托管、服务器机柜租赁、网络带宽租赁、云虚拟主机、云服务器、CDN等业务流程。世界各地。另外说明服务器安全保障,热忱欢迎广大群众来电垂询!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)