linux高性能服务器编程 (七) --Linux服务器程序规范
第七章 LInux 服务器程序规范
1)linux服务器程序一般以后台进程形式运行。后台进程又称为守护进程,是没有控制终端的,所以不会受到外界的干扰。守护进程的父进程通常是init进程(PID为1的进程)。2)linux服务器程序有一套日志系统,大部分后台进程都会在/var/log目录下记录。3)linux服务器程序一般都会以某个专门的非root身份运行,分别拥有自己的运行账户。4)linux服务器程序通常是可配置的,通过配置文件来管理一堆命令。5)linux服务器进程通常情况会在启动的时候生成一个PID文件并存入/var/run目录中。6)linux服务器通常需要考虑系统资源和限制。以预测自身能承受多大负荷,比如进程可用文件描述符总数和内存总数等。
1、UID 、EUID、GID、EGID
linux系统中用户的信息对服务器程序的安全来说是比较重要的,很多服务器就必须用root身份启动,但是不能用root身份运行,但是也可以通过一些函数设置和获取用户的真实权限。真实用户ID(UID) 有效用户ID (EUID) 真实组ID (GID) 有效组ID (EGID); 这些函数的存在是方便资源访问。
一个进程拥有两个用户:UID、EUID。UID就是指进程的执行者是谁, EUID是进程执行时对文件的访问权限。LInux是多任务,多用户的操作系统,可以实现多用户终端登录,进行自己的操作。
在linux中添加用户 可以使用 useradd 工具 如果是修改一个现有用户账户的属性可以使用 usermod 命令。
1)UID 查看用户 UID 可以使用 id 命令,是用来展示一个实时活动用户以及用户组ID的命令工具
2) EUID 有效用户id 用于文件访问检查,euid决定了进程是否有访问某个文件的能力。
admin@admindeMacBook-Pro / id
uid=(admin) gid=(staff) groups=(staff),(everyone),(localaccounts),(_appserverusr),(admin),(_appserveradm),(_lpadmin),(_appstore),(_lpoperator),(_developer),(_analyticsusers),(com.apple.access_ftp),(com.apple.access_screensharing),(com.apple.access_ssh),(com.apple.sharepoint.group.)
admin@admindeMacBook-Pro / id admin
uid=(admin) gid=(staff) groups=(staff),(everyone),(localaccounts),(_appserverusr),(admin),(_appserveradm),(_lpadmin),(_appstore),(_lpoperator),(_developer),(_analyticsusers),(com.apple.access_ftp),(com.apple.access_screensharing),(com.apple.access_ssh),(com.apple.sharepoint.group.)
admin@admindeMacBook-Pro /
linux下的每个进程都隶属于一个进程组。进程除了pid信息外还有pgid,每个进程组都有一个首领进程,其pgid和pid相同,一个进程只能设置自己和其子进程的pgid,并且当子进程进行exec函数族调用后就不能在父进程中改变其pgid。而多个进程组可以形成一个会话,但是创建会话的进程不能是某个进程组的首领进程,否则将产生错误。对于其余进程创建会话,有如下效果:1)调用进程成为会话的首领,此时该进程是新会话的唯一成员。2)新建一个进程组,其pgid就是调用进程的pid,调用进程成为该组首领。3)调用进程将甩开终端。
通过执行ps命令可以查看进程和进程组会话之间的关系。
linux高性能服务器编程 (七) --Linux服务器程序规范的更多相关文章
- Linux之网络编程:时间服务器
基于TCP-服务器 1,创建一个socket套接字 int socket(int domain,int type,int protocol) domain:IP地址族,AF_INET(IPv4).AF ...
- Linux高性能server编程——信号及应用
信号 信号是由用户.系统或者进程发送给目标进程的信息.以通知目标进程某个状态的改变或系统异常. Linux信号可由例如以下条件产生: 对于前台进程.用户能够通过输入特殊的终端字符来给它发送信号. ...
- Linux高性能服务器编程:Linux服务器程序规范
Linux服务器程序一般以后台进程形式运行,后台进程又称守护进程.它没有控制终端,不会接收到用户输入.守护进程的父进程通常是init进程(PID为1). Linux服务器程序有一套日志系统 Linux ...
- linux高性能服务器编程 (五) --Linux网络编程基础api
第五章 Linux网络编程基础api 1.主机字节序和网络字节序 字节序是指整数在内存中保存的顺序.字节序分为大端字节序.小端字节序. 大端字节序:一个整数的高位字节数据存放在内存的低地址处.低位字节 ...
- 二、多线程及服务器编程总结------linux多线程服务端编程
- Linux高性能server编程——定时器
版权声明:本文为博主原创文章.未经博主允许不得转载. https://blog.csdn.net/walkerkalr/article/details/36869913 定时器 服务器程序通常管 ...
- Linux高性能server编程——I/O复用
IO复用 I/O复用使得程序能同一时候监听多个文件描写叙述符.通常网络程序在下列情况下须要使用I/O复用技术: client程序要同一时候处理多个socket client程序要同一时候处理用户 ...
- Linux高性能server编程——Linux网络基础API及应用
Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...
- Linux高性能server编程——多线程编程(下)
多线程编程 条件变量 假设说相互排斥锁是用于同步线程对共享数据的訪问的话.那么条件变量则是用于线程之间同步共享数据的值. 条件变量提供了一种线程间的通信机制:当某个共享数据达到某个值得时候,唤醒等待这 ...
随机推荐
- Spring Security实现OAuth2.0授权服务 - 基础版
一.OAuth2.0协议 1.OAuth2.0概述 OAuth2.0是一个关于授权的开放网络协议. 该协议在第三方应用与服务提供平台之间设置了一个授权层.第三方应用需要服务资源时,并不是直接使用用户帐 ...
- python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件
# settings 配置 UA USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, l ...
- 基于react-app搭建react-router+redux项目
前言 总括: 本文采用react+redux+react-router+less+es6+webpack,以实现一个简易备忘录(todolist)为例尽可能全面的讲述使用react全家桶实现一个完整应 ...
- Computer Networking: A Top Down Approach
目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...
- 【漏洞复现】PHPStudy后门
0x01 概述 Phpstudy软件是国内一款免费的PHP调试环境程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimizer多款软件一次性安装,无需配置即可 ...
- 关于logback日志级别的配置
logback如果需要灵活的配置日志级别,需要结合过滤器,<filter></fiter>这个标签.需要注意的是,过滤器过滤的基础是在root标签的配置基础上进行的. 过滤器可 ...
- MySQL的JOIN连接
MySQL的JOIN join的含义跟英文单词"join"一样,连接连接两张表.分为 内连接:inner join 外连接 (1)左外连接(左边的表不加限制):left joi ...
- springboot2.1.3 配置前后端跨域问题
很简单,创建一个配置类即可,如下: package com.app.gateway.common.config; import org.springframework.context.annotati ...
- 线性排序总结(c++实现)
前面介绍了一些常用的比较排序算法,它们都是通过比较两个元素的大小进行排序,归并排序和堆排序在最坏情况下的复杂度为O(nlgn),可以证明(使用决策树模型),通过比较进行排序,算法的下界为O(nlgn) ...
- jenkins构建邮件自动发送,测试邮件发送成功,构建项目邮件发送不成功的问题
提示问题: Connection error sending email,retrying once more in 10 seconds…… Connection error sending ema ...