- 博客(25)
- 资源 (15)
- 收藏
- 关注
转载 shell脚本调试方法
shell脚本调试方法2008-12-28 21:23 和其它编程语言一样,shell脚本编写完,往往也要经过一段不短的时间的调试。一般使用以下三种方式调试:<br />(1) echo 利用echo在可能出错的地方打印出变量的值;<br />(2) sh -n your_script 这种运行模式可在不执行脚本的情况下检查出脚本的所有语法错误;<br />(3) sh -x your_script 这是shell的调试模式。这种方式运行脚本时将会打印出整个脚本运行过程中的变量值。<br /><
2010-11-30 17:07:00 1138
转载 Linux的脚本自动 交互
Linux的脚本中自动登陆远程主机方法汇总为了方便,我写了个脚本自动ssh登录远端机器,如下,这个脚本需要安装expect包================================#!/usr/bin/expectset timeout 30spawn ssh -l root 192.168.1.117expect "password:"send "nopasswd/r"interact================================set timeout 30设置超时时间的,计时单
2010-11-30 16:22:00 10118
转载 socket 设置非阻塞
阻塞和非阻塞 阻塞函数在完成其指定的任务以前不允许程序调用另一个函数。例如,程序执行一个读数据的函数调用时,在此函数完成读操作以前将不会执行下一程序语句。当服务器运行到accept语句时,而没有客户连接服务请求到来,服务器就会停止在accept语句上等待连接服务请求的到来。这种情况称为阻塞(blocking)。而非阻塞操作则可以立即完成。比如,如果你希望服务器仅仅注意检查是否有客户在等待连接,有就接受连接,否则就继续做其他事情,则可以通过将Socket设置为非阻塞方式来实现。非阻塞socket在没有客户
2010-11-30 11:15:00 17354
原创 什么是2MSL
<br />MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文,而ip头中有一个TTL域,TTL是time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经过一个处理他的路由器
2010-11-30 10:09:00 67712 3
转载 TCP三次握手/四次挥手详解
<br />1、建立连接协议(三次握手)<br />(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。<br />(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。<br />(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。<br />2、连接终止协议(四次挥手)<br /> 由于TCP连接是全双工的,因此每个方向都
2010-11-30 09:40:00 2007
转载 Socket状态变迁图
服务端,端口的状态变化 先在本机(IP地址为:192.168.1.10)配置FTP服务,然后在其它计算机(IP地址为:192.168.1.1)访问FTP服务,从TCPView看看端口的状态变化。 下面黑体字显示的是从TCPView中截取的部分。 1、LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态。 State显示是LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来。 从TCPView可以看
2010-11-30 09:21:00 14214 1
转载 recv send 阻塞和非阻塞
<br />int send( SOCKET s, const char FAR *buf, int len, int flags ); <br />不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。<br /> <br />该函数的第一个参数指定发送端套接字描述符;<br /> <br />第二个参数指明一个存放应用程序要发送数据的缓冲区;<br /> <br />第三个参数指明实际要发
2010-11-26 16:47:00 85179 15
转载 linux上编写守护进程的例程
<br />linux上编写守护进程的例程<br /> 摘自《开放系统世界》2004年第5期郭吉平、任莲的文章“亲自动手编写守护进程”。<br />/*郭吉平、任莲亲自动手编写守护进程*/<br />#include <br />#include <br />#include <br /><br />void main(int argc, char ** argv){<br />time_t now;<br />int childpid, fd, fdtablesize;<br />int error,
2010-11-24 11:20:00 2373 1
转载 Linux 动态库剖析
<br />库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法 — 即,从模块中构建程序。Linux 支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。图 1 展示了 Linux 中的库的层次结构。<br /><br />图 1. Linux 中的库层次结构<br /> developerWorks 上 Tim 所著的其他剖析…… 系列文章Li
2010-11-19 11:41:00 624
原创 实现的小函数 mkdir rmdir
int mkdirs(const char *path){ char pathname[PATH_MAX]; strcpy(pathname, path); int i; int len = strlen(pathname); if (pathname[len -1] != '/') { strcat(pathname, "/"); } len = strlen(pathname); for (i=1; i if (pathname
2010-11-16 17:10:00 790
转载 C语言自增、自减运算符使用中应注意的问题 王红
<br />C语言自增、自减运算符使用中应注意的问题<br />王红<br />摘 要 运算符多、操作灵活是C语言的一大特色。在诸多运算符中,最难理解、最容易出错的便是自增、自减运算符。本文就这两个运算符使用中应注意的问题进行了分析介绍。<br />关键词 C语言 自增运算符 自减运算符<br />Points for Attention of Using Auto-increasing and Auto-decreasing Operators in Language C<br />Wang Hong<b
2010-11-16 16:04:00 4224
转载 C语言自增、自减运算符
一道C语言基础题int a[10]={1,2,3};int *p =a;问下面那个不能表达a[1]; A. a+1 B. p+1 C. a++ D. p++基础知识--------------------------------------------------C语言自增、自减运算符 <br /><br />1 注意表达式的值和变量值的区别<br /> 以自增运算符为例,当自增运算符++作用于一个变量时,例如:当i=3时++i这个算术表达式的值为4,同时变量i的值也由原来的3改变为4。一般情况下,计算
2010-11-16 16:01:00 8042
转载 关于Linux下的/dev/null和/dev/zero文件
使用/dev/null<br />把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出<br />cat $filename >/dev/null<br /># 文件内容丢失,而不会输出到标准输出.<br /><br /><br />禁止标准错误<br />rm $badname 2>/dev/null # 这样错误信息[标准错误]就被丢到太平洋去了<br
2010-11-12 15:35:00 735
原创 Linux 命令 使用
1.nc 命令使用:以下是linux打开端口命令的使用方法。 nc -lp 12990 &(打开12990端口,即telnet) netstat -an | grep 12990 (查看是否打开12990端口)2.lsof命令使用:lsof -Pnl +M -i4我总结一下lsof指令的用法:lsof abc.txt 显示开启文件abc.txt的进程 lsof -i :22 知道22端口现在运行什么程序 lsof -c abc 显示abc进程现在打开的文件 lsof -g gid 显示
2010-11-12 15:00:00 585
转载 Linux服务器中的TCP连接状态详细解释
Linux服务器中的TCP连接状态详细解释!1.LISTEN监听状态,表示服务器进程监听某端口等待着为到来的TCP客户端提供服务。2.SYN_RECV表示服务器接收到了TCP客户端发送来的SYN数据包后,服务器已经发出了对应的响应ACK包和自己的SYN包给客户端。3.SYN_SEND此状态通常用在客户端发起到服务器的连接,表示客户端主机主动向服务器发出了SYN包后的状态。4.ESTABLISHED在客户端受到服务器的ACK应答包和SYN包后,向服务器发出ACK包以响应其SYN包后,TCP连接已经正是建立。通
2010-11-12 14:17:00 1420
转载 提高 Linux 上 socket 性能
<br />加速网络应用程序的 4 种方法<br /> <br />在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。<br />为了能够开发性能卓越的应用程序,请遵循以下技巧:最小化报文传输的延时。 最小化系统调用的负载。 为 Bandwidth Delay Pro
2010-11-10 12:17:00 541
转载 Linux下面socket编程的非阻塞TCP
<br />tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.<br /><br />在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容纳的那部分数据,并等待对端确认后再返回(接收端只要将数据收到接收缓存中,就会确认,并
2010-11-10 11:54:00 2011
转载 UNIX中各种网络异常情况下的处理
UNIX中各种网络异常情况下的处理<br /><br />情形<br />对端进程崩溃<br />对端主机崩溃<br />对端主机不可达<br />1.本端TCP正主动发送数据<br />对端TCP发送一个FIN,这通过使用select判断可读条件立即能检测出来。如果本端TCP继续发送,对端TCP就以RST响应。如果在本端TCP收到RST之后应用进程仍试图写套接口,我们的套接口实现就给该进程发送一个SIGPIPE信号<br />本端TCP将超时,且套接口的待处理错误被设置为ETIMEDOUT<br />本端
2010-11-05 14:44:00 1016
转载 tcp要点学习断开连接
tcp要点学习断开连接<br /> <br /> 主要部分,四次握手:<br />断开连接其实从我的角度看不区分客户端和服务器端,任何一方都可以调用close(or closesocket)之类的函数开始主动终止一个连接。这里先暂时说正常情况。当调用close函数断开一个连接时,主动断开的一方发送 FIN(finish报文给对方。有了之前的经验,我想你应该明白我说的FIN报文时什么东西。也就是一个设置了FIN标志位的报文段。FIN报文也可能附加用户数据,如果这一方还有数据要发送时,将数据附加到这个FIN报
2010-11-04 15:35:00 673
转载 检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析
<br />检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析<br /><br /> <br />目前手头有个关于心博功能的一个案例, 在使用SOL_SOCKET, SO_KEEPALIVE上有一点心得,想写出来和大家分享一下。<br />关于SOL_SOCKET选项SO_KEEPALIVE有一个很详细的英文How TO, 在下面的网页中大家可以看到详细的内容<br />http://www.icewalkers.com/Linux/Howto/TCP-Keepalive-HOWTO/ind
2010-11-04 14:02:00 1098
转载 linux软件安装卸载步步通
linux软件安装卸载步步通<br />我们使用各种软件要有安装,给大家介绍linux软件安装卸载常用方法,学习时,你可能会考虑到卸载问题,这里也稍微讲了卸载的解决方法,给大家分享。<br />linux软件安装卸载,分以下几种情况:<br />一.RPM包,这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图形界面里你只需要双击就能自动安装。<br />1.如何卸载:<br />1)打开一个SHELL终端<br />2)因
2010-11-04 13:31:00 810
转载 Linux系统网络配置详解
Linux系统网络配置详解<br />1、查看IPIfconfig<br />2、配置IP的方法:<br />A、 这种方法立即生效 但是重启将不会保存。(除了这个方法的其它方法都可以保存下来)<br />Ifconfig eth0 1.1.1.1 netmask 255.0.0.0 up<br />Ifconfig eth0:1 1.1.1.3 up设置一个网卡多个IP的方法(在设置虚拟主机时有用到)<br />激活网卡:Ifconfig eth0 up<br />关闭网卡:Ifconfig eth0 d
2010-11-04 13:30:00 599
转载 客户端套接字(Socket)超时
客户端套接字(Socket)超时<br />关键字: 客户端套接字(socket)超时 <br /><br /> Java代码 Socket socket = new Socket(); socket.setSoTimeout(5000); socket.connect(… …); socket.getInputStream().read(); Socket socket = new Socket();socket.setSoTimeout(5000);socket.connect(…
2010-11-04 09:27:00 3270
转载 signal和sigaction的分析比较
signal函数每次设置具体的信号处理函数(非SIG_IGN)只能生效一次,每次在进程响应处理信号时,随即将信号处理函数恢复为默认处理方式.所以如果想多次相同方式处理某个信号,通常的做法是,在响应函数开始,再次调用signal设置,如下图: <br />int sig_int();//My signal handler<br /><br /> ...<br /> signal(SIGINT, sig_int);<br /> ...<br /><br />int sig_int()<br /
2010-11-02 17:07:00 966
转载 linux文件锁例子
UNIX下多用户不定时写同一个文件,如何写程序?<br />如何能保证写文件时不发生冲突,且要写的内容不丢失?<br />O_APPEND<br />man 2 open .你查找O_APPEND.<br />原子操作.~ 和文件的i结点有关.每次用户写都写到文件的最末尾.<br /><br /><br />转自:<br />http://blog.chinaunix.net/u1/59254/showart_1724842.html<br /><br />//lock.c#include <stdio
2010-11-02 17:01:00 984
Berkeley DB 资料
2010-09-21
linux c函数速查手册
2009-10-13
lcd ampire128x64 的使用 proteus
2009-05-17
autocad做的小户型平面图
2009-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人