
linux开发
文章平均质量分 70
tycoon1988
这个作者很懒,什么都没留下…
展开
-
linux RPC 测试
RPC是glibc提供的函数参数/返回值封装服务, 并将封装结果通过网络传到服务器.RPC服务端首先要启动portmapper服务.测试一个简单的RPC传输示例, 先定义一个模板文件test.xprogram TESTPROG{ version VERSION{ int int_echo(int)=1;原创 2014-08-06 11:36:35 · 1085 阅读 · 0 评论 -
RPC简单使用
test.x1 program TESTPROG {2 version TESTVERS {3 int Test(string) = 1;4 } = 1;5 } = 0x30000000;原创 2014-08-06 12:30:46 · 540 阅读 · 0 评论 -
Linux 容器相关的2个重要概念
http://www.cnblogs.com/wang_yb/p/3923040.html原创 2014-09-04 16:02:33 · 775 阅读 · 0 评论 -
用DNAT实现外网访问内网web服务
http://zhangyic.blog.51cto.com/1819414/347575原创 2014-09-04 17:14:47 · 1879 阅读 · 0 评论 -
Linux协议栈
skb包 headroom不够, 每次都要realloc原创 2014-09-04 15:16:09 · 453 阅读 · 0 评论 -
ip netns相关命令
1.增加虚拟网络命名空间 ip netns add net0 2.显示所有的虚拟网络命名空间EULER:~ # ip netns listnet0也可通过查看/var/run/netns目录下的文件来listEULER:~ # ls /var/run/netns/net0 3.进入虚拟机网络环境ip netns exec net0 `c原创 2014-09-04 16:36:17 · 3161 阅读 · 0 评论 -
network namespace与veth pair
network namespace创建network namespace# ip netns add blue# ip netns listblue 添加网口到namespace先创建veth# ip link add veth0 type veth peer name veth1在当前namespace可以看到veth0和veth1# ip link原创 2014-09-04 16:55:10 · 12297 阅读 · 1 评论 -
xargs命令
xargs命令的作用就是将上一个命令的结果,作为xargs后面命令的参数来使用。命令对比:1、假设当前目录下有111.txt和222.txt两个文件find -name 111.txt | ls -la搜索出来的结果和ls -la命令执行结果一样。find -name 111.txt | xargs ls -la搜索出来的结果只有111.txt信息。第二原创 2014-09-04 10:00:13 · 537 阅读 · 0 评论 -
Linux Network Namespaces
Basic network namespace commandsThe tool to handle network namespaces is the command ip. Some users may know this tool as the replacement for the deprecated tools ifconfig, route, netstat…. You must原创 2014-09-04 16:29:23 · 593 阅读 · 0 评论 -
linux find 详细说明,以及实例
一,遇到find之前经常用的查找命令which,whereis来查找安装的程序文件[zhangy@BlackGhost ~]$ whereis phpphp: /usr/bin/php /etc/php /usr/lib/php /usr/include/php /usr/local/php /usr/share/man/man1/php.1.gz[zhangy@BlackGh原创 2014-09-04 14:23:55 · 574 阅读 · 0 评论 -
Linux Network Namespaces – Background
NamespacesManaging network namespaces using the ip command is the prefered way. It is helpful to understand, what’s going on in the (kernel) background.If you create two network namespaces using原创 2014-09-04 17:23:28 · 617 阅读 · 1 评论 -
HTTP协议与curl
HTTP协议刚才说到PUT,嘿嘿,自然让老服想起来了其他几种methos还没讲呢!GET和POST都不能忘哦。http提交一个表单,比较常用的是POST模式和GET模式GET模式什么option都不用,只需要把变量写在url里面就可以了比如:1curl http://www.yahoo.com/login.cgi?us原创 2014-09-04 20:35:50 · 936 阅读 · 0 评论 -
dirs\pushd\popd命令用法
Bourne Again和TC Shell都允许用户将其正在使用的目录列表存放起来,这样就可以在这些目录之间轻易移动。这个目录列表称为栈。它模拟了餐厅所用的盘子:一般将盘子放到栈的顶部或者从栈的顶部取盘子,这就创建了一个先入后出(FILO)的栈。 dreamliang@ISD_223_121_sles10:~/mySvn/sdn_proj/branches/oss> push ../mon原创 2014-09-05 09:54:09 · 436 阅读 · 0 评论 -
Linux命令********************** 鸟哥的 Linux 私房菜 -- 服务器架设篇目录
Linux常用网络命令介绍http://vbird.dic.ksu.edu.tw/linux_server/0140networkcommand/0140networkcommand-centos4.php原创 2014-09-04 14:31:00 · 1045 阅读 · 0 评论 -
Linux的Cgroup
百度私有PaaS云就是使用轻量的cgoups做的应用之间的隔离,以下是关于百度架构师许立强,对于虚拟机VM,应用沙盒,cgroups技术选型的理解 本文用脚本运行示例进程,来验证Cgroups关于cpu、内存、io这三部分的隔离效果。测试机器:CentOS release 6.4 (Final)启动Cgroupsservice cgconfig start #原创 2014-09-05 10:16:42 · 778 阅读 · 0 评论 -
ICMP报文
一。为什么需要ICMP?因为IP协议不提供可靠性且不能保证信息传递,因此发生问题时,通知发送人是很重要的。(IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP)二。什么是ICMP? ICMP: Internet Control Message Protocol 即Internet消息控制协议。ICMP报文分为两种类型(1)ICMP差错报告原创 2014-09-18 11:41:24 · 5285 阅读 · 0 评论 -
Linux的udp服务端、客户端例子
UDP编程的服务器端一般步骤是:1、创建一个socket,用函数socket();2、设置socket属性,用函数setsockopt();* 可选3、绑定IP地址、端口等信息到socket上,用函数bind();4、循环接收数据,用函数recvfrom();5、关闭网络连接;UDP编程的客户端一般步骤是:1、创建一个socket,用函数socket();2、设置socket属性,用函数set原创 2014-09-18 11:58:48 · 692 阅读 · 0 评论 -
Generic Netlink详解
netlink socket是一种用于用户态进程和内核态进程之间的通信机制。它通过为内核模块提供一组特殊的API,并为用户程序提供了一组标准的socket接口的方式,实现了全双工的通讯连接。原创 2014-08-08 13:44:43 · 868 阅读 · 0 评论 -
深入理解SetUID ************************888
而内核检查一个进程是否具有访问某权限时,是使用进程的有效用户 ID 来进行检查的。转载 2014-09-05 18:24:24 · 606 阅读 · 0 评论 -
shell
if 语句格式if 条件then Commandelse Commandfi 别忘了这个结尾If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi if 的三种条件表达式原创 2014-09-05 20:34:22 · 361 阅读 · 0 评论 -
shell如何模块化和复用——shell深入学习
shell如何模块化和复用——shell深入学习2011-09-18 星期天 阴天基本上所有的编程语言都支持模块化,以达到功能复用的效果。比如java和python的import xxx。C/C++的include。那么shell支持模块化吗?shell本质上并不支持模块化,但是有些机制可以使它达到类似的效果。首先要了解有两种方式可以执行一个sh原创 2014-09-05 20:45:43 · 717 阅读 · 0 评论 -
服务器的实现(采用poll方式,只能在linux下运行
#!/usr/bin/env python# encoding: utf-8import selectimport socketimport sysimport Queueserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.setblocking(0)server_address =原创 2014-08-21 12:16:28 · 424 阅读 · 0 评论 -
memcached源码分析之线程池机制-----worker线程
/* Create threads after we've done all the libevent setup. */ for (i = 0; i //为线程池创建数目为nthreads的线程,worker_libevent为线程的回调函数, create_worker(worker_libevent, &threads[i]); }原创 2014-09-05 15:50:59 · 522 阅读 · 0 评论 -
memcached Master-Worker 模型分析
scgi的实现是用的多进程,主进程负责监听socket连接请求,然后分发给各个子进程来处理。nginx的实现是用的多进程,创建好子进程之后,各个子进程直接自己来监听socket连接请求并处理。memched的实现则是用的多线程,主线程负责监听请求,然后分发给各个子线程来处理。原创 2014-09-05 14:36:14 · 470 阅读 · 0 评论 -
memcached源码学习-Main线程
看了看memcached, memcached 主要的线程框架是master-slave的主线程-工作线程模式,单进程,多线程,之间通过管道和链表通信,基本就是这样。下面具体看下代码。worker工作线程memcached服务其使用libevent库进行网络事件的监听等,在main函数的开头,解析完所有的配置参数后,主线程会先创建一个struct event_base *main_ba原创 2014-09-05 15:59:08 · 436 阅读 · 0 评论 -
系统日志函数syslog(),openlog(),closelog()
今天完成一个守护进程实验。 1 熟悉守护进程编写和调试(系统日志) 2 编写多进程程序的方法 本实验首先创建一个守护进程,然后在其中新建一个子进程,暂停10秒,自动退出,守护进程收集子进程退出的消息。源代码来自华清远见 #include #include #include #include #include #include int ma原创 2014-09-05 18:05:08 · 757 阅读 · 0 评论 -
Linux使用日志系统调试守护进程
守护进程脱离终端控制,在调试时候造成一定不便。可以用syslog服务把程序出错信息输入日志文件中。从而可以看出问题所在。 把上次的程序用日志方式改写。 主要用到三个函数:syslog,openlog,closelog。 守护进程的写法不变,加入日志服务。 代码来自华清远见: #include #include #include #include原创 2014-09-05 18:08:02 · 1266 阅读 · 0 评论 -
vim常用命令之多行注释和多行删除
3.多行删除1.首先在命令模式下,输入“:set nu”显示行号;2.通过行号确定你要删除的行;3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧原创 2014-08-22 11:41:24 · 398 阅读 · 0 评论 -
Memcached线程模型(1)
http://liuzhaomin.blog.163.com/blog/static/18363949820121913425501/原创 2014-08-22 14:35:06 · 523 阅读 · 0 评论 -
Memcached源码分析之内存管理篇
http://kenby.iteye.com/blog/1423989原创 2014-08-22 14:41:01 · 353 阅读 · 0 评论 -
Libevent分析笔记(3)-I/O复用(Multiplexing)机制的确定
struct eventop { const char *name; /**//*机制名称*/ void *(*init)(struct event_base *); /**//*初始化事件*/ int (*add)(void *, struct event *); /**//*添加事件*/ int (*del)(void *, struct even原创 2014-08-22 14:59:45 · 400 阅读 · 0 评论 -
A tiny introduction to asynchronous IO
http://www.wangafu.net/~nickm/libevent-book/01_intro.html原创 2014-08-22 15:19:27 · 548 阅读 · 0 评论 -
nginx proxy_pass 里的”/”
见配置,摘自nginx.conf 里的server 段:server {listen 80;server_name abc.163.com ;location / {proxy_pass http://ent.163.com/ ;}location /star/ {proxy_pass http://ent.163.com ;}}里面有两个location,我先说原创 2014-08-09 17:39:34 · 383 阅读 · 0 评论 -
静态路由与默认路由( 原理+区别+实例)
http://zhaoyuqiang.blog.51cto.com/6328846/1177924静态路由静态路由的概念 (1) 最为原始的配置路由方式,纯手工,易管理,但是耗时,一般用于小型企业或者中等偏下型企业(2)静态路由的缺点是不能动态反映网络拓扑,当网络拓扑发生变化时,管理员必须手工改变路由表;(3)静态路由不会占用路由器太多的CPU和RAM资源,也不占用线路的带原创 2014-08-09 17:54:13 · 20667 阅读 · 0 评论 -
Nginx反向代理+负载均衡+健康探测+缓存
由于apache具有良好的稳定性,但不能提供大量的连接并发请求;而nginx能够提供强大的连接并发请求而没有很好的稳定性,结合这两种截然不同的特征,可以在内网的前端使用nginx作为反向代理服务器,后方的apache作为原始服务器,这样既满足大量的连接并发请求,也具有良好的稳定性,当然,前端应该使用多台nginx反向代理,由于是实验环境,这里就使用一台作为演示,具体的拓扑示意图如下:原创 2014-08-09 17:14:11 · 2583 阅读 · 0 评论 -
Nginx负载均衡与反向代理的例子(图文)
Nginx负载均衡与反向代理,配置内容如下:1,设置在http段: Nginx.conf代码upstream my_server_pool { server 192.168.10.21:80 weight=1 max_fails=2 fail_timeout=30s; server 192.168.10.20:80 weight=1 max原创 2014-08-09 17:06:37 · 458 阅读 · 0 评论 -
Linux 添加自定义命令
1. vim ~/.bashrc2.原创 2014-08-21 17:28:47 · 467 阅读 · 0 评论 -
vim tab设置为4个空格
在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)set expandtab对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:TAB替换为空格::set ts=4:set expandtab:%retab!空格替换为TAB::set ts=4:set n原创 2014-08-22 11:57:42 · 2322 阅读 · 0 评论 -
libevent 事件loop分析
event_init初 始化libevent事件全局对象current_base初始化全局current_base是一个进程的个全局的变量 struct event_base *event_init(void){ struct event_base *base = event_base_new(); if (base != NULL)原创 2014-08-22 14:51:36 · 583 阅读 · 0 评论 -
event_add
支持Libevent运转的就是一个大循环,这个主循环体现在event_base_loop(Event.c/1533)函数里,该函数的执行流程如下:图1 event_base_loop主循环 上图的简单描述就是: (1)校正系统当前时间。 (2)将当前时间与存放时间的最小堆中的时间依次进行比较,将所有时间小于当前时间的定时器事件从堆中取原创 2014-08-22 16:01:41 · 1531 阅读 · 0 评论