Jump to Navigation

Linux

Linux/Unix操作系统

setrlimit用法中的一个问题

今天安装测试fastdfs分布式文件系统,启动过程遇到一个setrlimit的问题,提示错误22,Invalid arguments。

经过多次尝试修改代码,才发现,在fastdfs的源代码中,调用setrlimit之前,只为limit.rlim_cur设置了值,没有正确设置limit.rlim_max的成员的值,调用后出现了这个问题。

修复过程就是加一行设置rlim_max成员值的语句。成功启动了fastdfs服务。

setrlimit调用用于在应用层动态调整程序可用的系统资源。

一般使用getrlimit获取当前可用系统资源,再根据此值按需要调整可用系统资源。

Category:

vpn使用过程中一些附加用法

不管是哪个操作系统平台上的vpn,在启动后,vpn客户端会把默认的路由改为由vpn创建的一个虚拟网络卡上。

像在 linux 上会创建一个 pppx 虚拟网络卡,使用/sbin/route命令查看会看到默认路由指向了pppx。

这里有一个可能的问题,一般情况下vpn的连接速度比较慢,有些还有流量限制,如果所有的网络都走vpn的话,可能导致网速慢,vpn的流量变大。

这时可以通过手动修改路由的方式让系统对网络访问做正确的选择。

这是我使用的一个简单脚本,用来控制访问路由的,

[root@myhost ~]# more bin/setinrouter.sh

Taxonomy upgrade extras:

linux coredump 文件生成

以前用linux系统,生成的 core文件都是带进程号的,最近使用的arch与debian6,生成的core文件都不带这个值了。

查找了一个,有一个内核参数可以控制生成的core文件名。

详细使用方法,可以看man core

我现在使用的规则为,progname.time.core.pid
echo "%e.%t.core.%p" > /proc/sys/kernel/core_pattern

Category:

asterisk中自定义fd_set扩展select能处理的文件描述符个数的研究

asterisk中自定义fd_set与FD_ZERO,FD_SET几个量扩展select能处理的文件描述符个数的研究

在asterisk中,仍旧使用select处理socket文件描述符的读写事件驱动,虽然有点老套,但这种方式的移植性更好,现在几乎所有的平台都支持这个函数。如果使用一些特定平台的功能,像linux的epoll或者BSD的kqueue,还有solaris的什么 方式,都需要做一个核心兼容这几种不同操作系统上的方式。

由于进程可使用的文件描述符可使用ulimit -n 32768来设置,而系统自带的FD_SETSIZE却是固定的值,在/usr/include/bits/typesizes.h,目前我在使用的linux服务器系统上,这个值都定义为1024。对于像asterisk这样的服务,当然这个值太小了,不足以完全发挥asterisk和服务器硬件的功能。

现在我们研究下它如何,在include/asterisk/select.h文件开头,有这么一个定义,

typedef struct {
TYPEOF_FD_SET_FDS_BITS fds_bits[4096 / SIZEOF_FD_SET_FDS_BITS]; /* 32768 bits */
} ast_fdset;

我个人电脑上的文件系统

现在我的电脑上有4种不同的文件系统,包括,

EXT4: Gentoo Linux主分区, 主要数据存储分区共3个
BTRFS: 临时数据存储分区,测试用,1个
NTFS: windows 7系统分区,1个
HFS+: Mac OS X 系统分区,1个。

很强大的用法。

Taxonomy upgrade extras:

kvm 虚拟机直接从virtualbox虚拟磁盘VDI启动的方法

如果同时使用两种虚拟机,像我现在用的kvm和virtualbox,是不是要分别为两种虚拟机创建两个虚拟磁盘,一般用起来都这么做。但这样多用了一个虚拟磁盘的空间,并且还不能保证两个虚拟机的系统同步,或者即使同步了,也非常麻烦。

今天偶然在网上看到一种解决方法,能让kvkm直接从virtualbox的VDI格式虚拟磁盘启动,两种虚拟机操作的同虚拟磁盘上的同一系统,非常方便。

这里需要用到一个工具,vdfuse,它能直接使用fuse方式挂载vbox虚拟磁盘,如ubuntu11-test.VDI。不过这个工具要自己动手编译。

编译环境,gentoo amd64 系统,virtualbox-4.0.2虚拟机,fuse-2.8.5,

vbox安装在/opt/VirtualBox/目录。

https://build.opensuse.org/package/files?package=vdfuse&project=Virtuali...下载几个文件,放在一个目录下,如vdfuse/,然后下面安装,

Category:

linux下远程管理利器tmux试用

* 简介
o tmux 是screen 一个替代品,优点是比screen 配置简单,并且功能不比screen 弱; tmux 默认就有下面的statusbar ,下面显示正在运行的程序名字,当然screen 也可以配置成这样。

启动,tmux

恢复,tmux attach

其他命令见man tmux

试用了10分钟,感觉比上次试用screen的时候好,简单易用,不用怎么配置也有非常好的效果。
如果在服务器端机器写程序,不再受不稳定网络的影响,掉线后连接服务器,直接恢复之前所有的状态,从中断的地方继承之前的工作,非常方便。

tmux相比screen有优势的地方,可以横向/纵向分隔窗口。配置简单,甚至不需要配置也能用。都说代码比screen清晰,易于改进扩展。tmux的确是非常好的工具。

在本机上使用tmux,连接到服务器,那么,发送的tmux快捷键会发送给本地的tmux还是远程的tmux,这个地方有冲突,是否能解决。

Category:

解决openssh与ssh2之间文件传输

ssh2一个商业的ssh服务协议实现,其实现的scp模块与GPL的openssh的scp不兼容,在客户端的用openssh的scp向服务端为ssh2的服务器传输文件时失败,原因也在于此。
但如果scp使用sftp传输,则无论服务端是openssh还是ssh2的,都不会有问题,这引出了openssh中的scp使用sftp协议传输的补丁要求。

根据5.4版本的scp over sftp,移植到了最新的openssh 5.7版本,初步测试没有问题,

5.4的补丁,http://www.phys98.homeip.net/~ide/aboutopenssh-e.html

5.7的补丁,

Taxonomy upgrade extras:

kde 4中隐藏窗口标题栏

linux系统一个很强的特点就是可定制功能,所以看到的linux系统的桌面千变万化,各有特色。

最近正值linux桌面飞速发展的阶段,使用linux的人越多,对linux的要求也越高了。

我使用最多的是主流桌面之一,KDE 4,相比其他桌面系统确实庞大了许多,但功能齐全,不用费很多时间在桌面上。我的工作是做linux系统上跑的一些服务软件,根本用不到漂亮的桌面,其实对桌面了解的也比较少。

由于笔记本屏幕大小的原因,需要对屏幕空间尽量全部发挥,争取一点不浪费。现在有的方案,一个全局菜单方案,把所有应用程序的菜单放在一行,随着应用程序的切换动态变化,这是mac os x历来的做法,现在也在向linux上发展。另外一个还要把窗口听标题栏去掉,这样又节省了一行空间,感觉屏幕利用率又提高了不少。且把后者的设置方法记录在此,前者的设置方法可在本站搜索一下。

方法比较简单,假设使用的是kde4桌面系统,只需要用两个命令,

第一步,修改配置文件
kwriteconfig --file oxygenrc --group Windeco --key HideTitleBar --type bool true

第二步,重启kwin窗口管理器
kwin --replace &

原来qt的qmake已经能使用pkgconfig功能了

还没确定从哪版本开始支持的,我现在用的qt 4.7.1是已经支持了的,好像是在4.7.0版本加入的这个功能。

使用方法,

CONFIG += link_pkgconfig # enable the PKGCONFIG feature
PKGCONFIG += glib-2.0 # link against glib-2.0

另外,还可检没某个包是否存在,

packagesExist(glib-2.0) {
DEFINES += HAS_GLIB
PKGCONFIG += glib-2.0
}

// and in the code:
#ifdef HAS_GLIB
// use glib here
#endif

这样使用pkgconfig的功能,已经非常简便了
还有一点疑问,这个在非linux系统上,如mac, win上是什么表现呢。

页面

订阅 RSS - Linux


Main menu 2

by Dr. Radut