201609-27 history命令显示执行时间和执行者及IP 315 VIEW 1.用vi编辑器打开/etc/profile 2.加两句代码 代码代码 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` export HISTTIMEFORMAT=&q.... Read More >
201609-26 linux线程浅析 74 VIEW 关于linux线程 在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. 为了让进程完成一定的工作, 进程必须至少包含一个线程. 如图1. .... Read More >
201609-26 linux进程调度浅析 70 VIEW 操作系统要实现多进程,进程调度必不可少。 进程调度是对TASK_RUNNING状态的进程进行调度(参见《Linux进程状态浅析》)。如果进程不可执行(正在睡眠或其他),那么它跟进程调度没多大关系。 所以,如果你的系统负载非常低,盼星星盼月亮才出现一个可执行状态的进程。那么进程调度也就不会太.... Read More >
201609-26 linux进程状态浅析 82 VIEW 众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。Linux就是这样的一个操作系统。 在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中.... Read More >
201609-22 fcntl函数详解 86 VIEW 功能描述:根据文件描述词来操作文件的特性。 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cm.... Read More >
201609-21 TCP/IP三次握手与四次挥手 72 VIEW 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 &nb.... Read More >
201609-21 TCP/IP状态变迁 75 VIEW 下面会详细分析图中的所有状态,这些状态跟TCP三次握手与四次挥手有着非常密切的联系 CLOSED:表示初始状态。对服务端和C客户端双方都一样。 .... Read More >
201609-21 进程(四)进程调度及切换 73 VIEW 一、调度策略 每个linux进程总是按照下边的调度类型被调度: SCHED_FIFO:先进先出的实时进程。适用于时间性要求比较强,但每次运行所需的时间比较短的进程,实时的应用大都具有这样的特点。 SCHED_RR:时间片轮流的实时进程。轮流,适合比较大,每次运行需时较长的进程。 SCHED_OTHER:普通的分时进程。传统的调度政策,适合于交互式分时应用。 L.... Read More >
201609-21 进程(三):进程睡眠 61 VIEW //nanosleep()使当前进程进入睡眠,但是在指定时间以后由内核唤醒,常常实现周期性的运行 //sleep()等库函数就是调用nanosleep()实现的 asmlinkage long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp) { //rqtp指定睡眠时间,rmt.... Read More >
201609-21 进程(二):进程创建 91 VIEW 一、进程创建 现代Unix内核通过引入三种不同的机制解决了这个问题: 写时复制技术允许父子进程读相同的物理页。只要两者中有一个试图写一个物理页。内核就把这个页的内容拷贝到一个新的物理页,并把这个新物理页分配给正在写的进程。 轻量级进程允许父子进程共享每进程在内核的很多数据结构,如页.... Read More >
201609-21 进程(一):进程描述 110 VIEW 一、进程概念 进程是程序执行的一个实例。 从内核观点看,进程的目的就是担当分配系统资源(cpu时间、内存等)的实体。 二、进程描述符 1.进程描述符包含了与一个进程相关的所有信息。 struct task_struct { vol.... Read More >
201609-21 select函数详细用法解析 201 VIEW 1.表头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 2.函数原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,s.... Read More >
201609-21 linux网络配置相关文件详细解析 54 VIEW 要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf(其中网络部分的配置可以通过netconf命令来实现)命令来实现。 下面介绍基本的 TCP/IP网.... Read More >
201609-20 TCP连接异常终止分析 60 VIEW TCP的异常终止是相对于正常释放TCP连接的过程而言的,我们都知道,TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成,但是有些情况下,TCP在交互的过程中会出现一些意想不到的情况,导致TCP无法按照正常的四次挥手来释放连接,如果.... Read More >
201609-18 十条命令在一分钟内检查Linux服务器性能 47 VIEW 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。 uptime dmesg | tail vmstat 1 mpstat -P ALL.... Read More >
201609-16 计算机网络知识大全-普及版 138 VIEW 因特网 因特网 因特网是当今世界上最大的网络, 是”网络的网络”. 即因特网是所有网络互连起来的一个巨型网络. 因特网的组成 : 边缘部分 : 主机 .... Read More >
201609-14 幽他一默–3 39 VIEW 我正在午睡时,有一通陌生电话打了过来。我随手拿起手机:“喂!”那头是低沉的男声:“是李先生吗?”我:“是。”那头继续问:“你住在XX路XX号吧?准备好钱没有?”我紧张了起来,小声问道:“你咋知道我的地址?”对方有些怒了:“我是快递!赶紧下楼签收,货到付款啊.... Read More >
201609-09 Linux网络编程:原始套接字的魔力(三) 172 VIEW 如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了.... Read More >
201609-09 Linux网络编程:原始套接字的魔力(二) 298 VIEW 可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报.... Read More >
201609-09 Linux网络编程:原始套接字的魔力(一) 156 VIEW 基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: .... Read More >
201609-07 Linux网络编程:基于TCP的程序开发 115 VIEW 面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照.... Read More >
201609-05 Linux网络编程:基础 57 VIEW 一、大端、小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址; 大端字节序:big-endian,将高字节存放在内存的其实地址。 例如,数字index=0x112233.... Read More >
201609-01 linux 内核网络,数据接收流程图 125 VIEW 数据接收流程图 各层主要函数以及位置功能说明: 1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base..... Read More >
201609-01 linux 内核网络,数据发送流程图 171 VIEW 数据发送流程图 各层主要函数以及位置功能说明: 1)sock_write:初始化msghdr{}结构 net/socket.c 2)sock_sendmsg:net/socket.c 3)inet_send.... Read More >