- 浏览: 62656 次
- 性别:
- 来自: 武汉
最新评论
-
di1984HIT:
xuexile!!!
Linux下的UDP/TCP端口映射(netcat and socat)
文章列表
sh pipeline
- 博客分类:
- 服务器架构
sh的保留字如下:
! { } case do
done elif else esac fi
for if then until while
原来{ 和 }都是保留字,这样我真正明白它们前后必须有空格的原因。
Pipelines
Note that unlike some other shells, sh executes each process in the pipe-
line ...
FreeBSD在做IPsec-Gateway或作路由的情况下,当处理的数据包到达一定数量级(>15000包/每秒)时,系统的负载会很高,表现是输入任何命令响应很慢。
用TOP显示CPU的状态时,大量时间被中断(interrupt),如下:
CPU states: 0.0% user, 0.0% nice, 1.0% system, 98.8% interrupt, 0.2% idle
原因是每个数据包过来,网卡都会请求CPU中断,当包的数量过高时,CPU很难正常处理其它事情。
这时候可以利用网卡的polling模式解决这个问题,polling模式就是让cpu定期去取网卡内存中的数据包 ...
今天一同事说把A机器的/var/spool/cron/admin scp到B机器上的/var/spool/cron/目录下,有时不生效,需要restart crond.
经过实际验证,发现此现象描述不对。为了查明现象,又看了一下cron 的manual page,有这么一段描述:
Additionally, cron checks each minute to see if its spool directory's modtime (or the modtime on /etc/crontab) has changed, and if it has, cron wi ...
大家知道物理内存的存取速度是通常磁盘的10倍以上,直接使用它来存放客户频繁访问的资源有很多应用场景,比方说我们的少量静态资源,例如css,js,image),那么我们就可以直接使用内存来存放这些资源,能很好的提高用户访问网站的体验。
传统的ramdisk是个块设,是把物理内存拿出来一部份当作磁盘使用,使用它需要用mkfs来创建文件系统,才能真正地使用它,且改变ramdisk的默认大小(默认是16MB)好像还比较麻烦.这个功能其实已可以使用tmpfs来代替,并且更简单.
tmpfs是一种基于内存的文件系统,使用它不需要像ramdisk还需要手工创建文件系统,直接mount即可. ...
信号的处理
程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:
handle SIGPIPE nostop
如果连提示信息都不想看见,就可以这样设置:
handle SIGPIPE nostop noprint
就可以了。其他相关信号也可以类似处理。想了解目前的signal状态可以使用info signal察看。
启动配置文件
GDB使用中比较麻烦的事情,就是每次启动,还要手动敲一把命令,特别是断点比较多的情况,这个特便影响,工作效率。查了一下 gdb info,gdb ...
linux 中信号相关的一个结构体 struct sigaction 主要在sigaction信号安装和sigqueue信号发送时会用到
该结构位于/usr/include/bits/sigaction.h
在里面可以找到该结构的描述 {我现在实现的系统是as 4 内核版本 2.6.9-5.EL}
/* Structure describing the action to be taken when a signal arrives. */
struct sigaction
{
/* Signal handler. */
#ifdef __USE_POSI ...
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。
但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不 ...
sprintf() 的整个介面长的样子的是:
int sprintf ( char * str, const char * format, ... )
也就是在使用前,必须要先建立好一个字元阵列的空间,再用这个函式把内容填入,下面就是简单的例子:
int tmp = 10;
char cstr[20];
sprintf( cstr, "%d * %d = %d", tmp, tmp, tmp * tmp );
在这个例子里,cstr 最后的值,会是「10 * 10 = 100」,看起来好像很好?但是如果把 tmp 的值改成 10 ...
需求:
从终端获取用户输入的用户名和密码(有效长度为n),我把 buffer 设为 n+10,这样当用
户输入过长时可以接收到多余的字符,从而判断出超长了;如果用户直接按回车键,那么应该
接收到0个字符。
函数:
fgets( buf, buf_size, stdin)
问题:
当用户输入超过 buf_size 时,下次再调用 fgets(),它会直接返回而不是等待用户输入,
因为 fgets() 是直接从 stdin 拿字符的,上次没有取完的字符,直接被 fgets() 拿走然
...
说起来有点土,事到如今才第一次用socat.
不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都不想再去改动它的功能.结果导致多年来没有任何进步…现任的RHEL5里面好像也是由 ...
disown是bash内部命令,nohup是外部命令
disown跟bg,fg一样是针对job进行操作,nohup是针对命令操作
disown -h 和nohup一样,在退出bash后,把进程的控制权都交给init
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。
__attribute__书写特征是:__attribute__前后都有两个下划线, ...
TCP_NODELAY 和 TCP_CORK,
这两个选项都对网络连接的行为具有重要的作用。许多UNIX系统都实现了TCP_NODELAY选项,但是,TCP_CORK则是Linux系统所独有的 而且相对较新;它首先在内核版本2.4上得以实现。此外,其他UNIX系统版本也有功能类 ...
boost 字符串算法解密 修剪(trim.hpp)
trim 算法库中是用于修剪字符串的:
trim_left_copy_if()
trim_left_if()
trim_left_copy()
trim_left()
trim_right_copy_if()
trim_right_if()
trim_right_copy()
trim_right()
trim_copy_if()
trim_if()
trim_copy()
trim()
第一组
绿色
表示修剪字符串左端的空格(含 _if 的代表断言为真的字符)。
第二组 ...
本章介绍的主题是multi_index_container
注:继续往下读之前希望你对C++模板和stl的一些知识有过了解
什么是多索引容器?为什么要使用它?如何使用?
接下来一一回答以上的问题。
想必大家在实际开发中一定多多少少 ...