温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

LINUX高性能服务器读书笔记之程序规范

发布时间:2020-06-26 19:37:31 来源:网络 阅读:494 作者:jackdongting 栏目:建站服务器

背景:除了网络通信,服务器程序还有许多细节问题,。
特点:细节都是模板式的,所以只需要讲明白就好,遵循一定的规范就好
类别:1.1运行形式-->后台进程,又称为守卫进程。没有控制终端,也不会意外受到用户输入。
它的父进程是:init进程(pid是1 的进程)
1.2日志系统。一般至少输出到文件,还可以输出到专门的UDP服务器。一般在/var/log 都拥有自己的日志目录
1.3运行身份:某个专门的非root身份。例子:mysqld,httpd,syslogd等后台程序,都分别拥有自己的账户mysql,apache,syslog
1.4可配置。能处理很多很多命令行选项。如果一次性运行的选项太多,则需要配置文件来管理。一般会放在/etc。比如squid在/etc/squid3/squid.conf
1.5记录后台进程的pid。启动会有生成pid文件并且存入/var/run.例子:syslogd的pid文件是/var/run/syslogd.pid
1.6考虑系统资源和限制(自身最大负荷)例子:文件描述符的总数和内存总量。
linux细节处理方式
2.1日志:rsyslogd(syslog函数)
2.2用户信息:UID,EUID(有效用户ID),GID,EGID
EUID:方便资源访问。用途:它使得运行程序的用户拥有该程序的有效用户的权限。(su程序,su必须要访问/etc/passwd来改变用户信息。/etc/passwd是需要root权限的,所以普通用户能够访问它必须依靠EUID,拥有者可以设定自己拥有程序的set-user-id,命令是:chmod +s ****程序)

                2.3进程间关系
                2.3.1linux每个进程都隶属于一个进程组,除了pid还有PGID,每个进程组都有一个首领进程。首领进程的pid和PGID是一样的。
                2.3.2进程组会一直存在。当其中所有进程都退出或者加入其他组才会终止。
                2.3.3一个进程只能设置自己或者其子进程的{PGID。当子进程调用exec一系列函数后,父进程也不能再设置它的PGID。
                2.4 会话
                2.4.1定义:一些有关联的进程组将形成一个会话\\
                实现:非首领进程可以调用该函数来创建新会话。
                实现特点:调用进程会成为会话的首领,此时该进程是新会话的唯一成员。新建一个进程组,其PGID就是调用进程的PID,调用进程就是该组的首领。调用进程将离开终端
                函数:pid_t  setsid(void );
                特点:没有sid,linux认为他等于会话首领所在的进程组的PGID,pid_t  getsid(pid_t pid);
                2.5系统资源限制
                2.6改变工作目录和根目录
                2.6.1函数:获取当前工作目录和改变进程工作目录char * getcwd(char*  buf,size_t size);
                int chdir(const  char* path)
                函数2:改变进程根目录chroot
                int  chroot(const char*  path)

                2.7.1服务程序后台化

                linux 库函数
                int  deamon(int nochdir,int  noclose);
                参数nochdir:是否改变工作目录;0是为根目录,否则使用当前目录,noclose是0,标准输入和标准输出和标准错误输出都将重定向到/dev/null文件,否则依旧使用原有设备。该函数成功返回0.失败返回-1;
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI