Linux/Unix
文章平均质量分 88
金庆
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Connection Tracking (Conntrack)
(Jin Qing’s Column, Oct., 2025)Connection tracking (often called “conntrack”) monitors and records the state of network connections passing through the system. It enables the kernel to track the lifecycle of connections (such as TCP, UDP, or ICMP sessions)原创 2025-10-16 16:17:21 · 1009 阅读 · 0 评论 -
CMake添加gcov代码覆盖测试支持
CMake添加gcov代码覆盖测试支持(金庆的专栏)在根CMakeList.txt中添加ENABLE_GCOV选项:OPTION(ENABLE_GCOV "Enable gcov (debug, Linux builds only)" OFF)IF (ENABLE_GCOV AND NOT WIN32 AND NOT APPLE) SET(CMAKE_CXX_FLAGS_DEBUG "${CMA原创 2012-07-11 11:04:46 · 5546 阅读 · 2 评论 -
建立Socket Policy服务器
建立Socket Policy服务器(金庆的专栏)Flash和Unity3D游戏服务器需要开启一个Socket Policy服务器。详细说明见:Setting up a socket policy file serverhttp://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html协议如下:Flash或U3D播放器原创 2012-01-19 16:17:50 · 3181 阅读 · 0 评论 -
MySql的CMake选项支持gcov和gprof
未来的MySql 5.6.6 中,CMake选项中添加了gprof性能测试支持,见:http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.htmlENABLE_GPROF Enable gprof (optimized Linux builds only) OFF 5.6.6 代码库原创 2012-07-11 12:09:47 · 2712 阅读 · 0 评论 -
CMake生成版本号
CMake生成版本号(金庆的专栏)原来的CMake需要用shell脚本生成SVN版本号,再作为cmake参数传入。CMake调用脚本示例:#!/bin/sh# cmake.shServerCodeRoot=~/Code/ServerCodeRevNum=`svn info ${ServerCodeRoot} | grep Revision | awk -F' ' '{ print $2 }'`cm原创 2012-08-15 12:24:13 · 4877 阅读 · 0 评论 -
多线程开启gprof性能测试的简易方法
用到gprof时才知道,原来gprof只能对主线程统计耗时。manual上也没写线程相关的问题啊?不过有现成的解决方案:http://sam.zoy.org/writings/programming/gprof.html该方案封装了pthread_create(), 让线程初始化执行一个setitimer(ITIMER_PROF, ...)。简易的方法是直接在代码中写个setitimer()。#i原创 2012-08-01 16:15:34 · 7166 阅读 · 3 评论 -
Win7访问Redhat samba共享
Win7访问Redhat samba共享首先是开启samba:service smb startservice smb restartsamba的配置文件是/ect/samba/smb.conf, 几乎不用改,使用默认配置就行了。默认是使用 security=user 模式共享,需要输入用户名密码才能访问。默认有[homes]共享配置,各个用户可访问自己的主目录。如添加新用户:useradd ji原创 2012-09-17 11:31:02 · 3025 阅读 · 0 评论 -
CMake添加-D_DEBUG宏
Linux下Debug版不会自动添加 _DEBUG宏,只有NDEBUG宏可用。cmake ../src _DCMAKE_BUILD_TYPE=Debug -D_DEBUG会报错: -D_DEBUG should be: VAR:type=value需要-D_DEBUG=1.改为在CMakeLists.txt中添加:if (CMAKE_BUILD_TYPE STREQUAL Debug) ad原创 2013-07-26 16:31:28 · 19622 阅读 · 0 评论 -
关于C++程序的编码问题
转自: http://blog.chinaunix.net/uid-26790551-id-3190813.html 我们传统的程序基本都只在Windows或只在Linux下运行,Windows程序使用简体中文GB18030编码,Linux程序则只使用英文,多年以来这些程序运行起来都没有问题。近年来,随着程序的组件化,部分代码特别是公用组件都需要同时支持Windows及Linux平台,这样就出现了转载 2013-11-29 17:03:58 · 1830 阅读 · 0 评论 -
log4xx/log4j异步日志配置示例
ASYNC异步输出到ROLLING和CONSOLE。另外,Lua日志异步输出为每天一个的独立日志。默认仅输出INFO日志,THwordOnLineServer日志类输出DEBUG日志。CONSOLE屏蔽DEBUG日志。每个服务器使用相类似的配置,仅输出文件名不同。可用如下Shell脚本生成各个配置文件:for i in {2..16}do sed 's/gsX/gs'${i}'/g' log原创 2013-12-04 11:54:02 · 7697 阅读 · 0 评论 -
Linux编译Windows共享目录下代码
Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的。平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到Linux上编译测试。因为用VC开发,可以使用VAssist, MetalScroll工具辅助,开发效率高。VC编译通过,gcc编译仍会有出错。用CMake构建时,编译目录与源码目录是分开的,这样就可原创 2014-02-26 11:44:31 · 3110 阅读 · 0 评论 -
gcov 统计 inline 函数
gcov 统计 inline 函数(金庆的专栏)gcov可以统计 inline 函数,可是实际使用中碰到统计次数总是为0的现象。假设类A的头文件为 A.h, 实现文件为 A.cpp.A 有几个 inline 成员函数定义在 A.h 中。使用 gcov 统计 A 的代码覆盖率时,可能会发现 A.h 中的 inline 成员调用次数为空或0。除了确实未调用的原因,可能是 gcov 统计的对象错了原创 2014-02-28 12:32:33 · 2202 阅读 · 0 评论 -
shell脚本整段注释
摘自:http://zhidao.baidu.com/link?url=XmCCZmfluRe6n8TjPRKJTx4GGOUPSGX1VNBm-euqGdpKGpveTESxC0HL90UBNT5nZCvmvfq2oIJdP3JO5EoPSq利用shell空语句注释整段代码: << COMMENTBLOCK shell脚本代码段COMMENTBLOCK这个用来注释整段脚转载 2014-04-01 09:49:41 · 4997 阅读 · 0 评论 -
gcov辅助脚本
gcov辅助脚本代码原创 2014-09-26 20:59:03 · 1420 阅读 · 0 评论 -
内核自动分配端口号范围
内核自动分配端口号范围(金庆的专栏)因为单机开多区测试时,因为Tcp连接比较多,很容易出现端口号被占用而无法开启服务进程的情况。例如某个进程连接MySql本地端口号为34567,正好该端口是另一个服务进程的监听端口。本地端口号是内核自动分配的一个空闲端口。内核自动分配端口号范围配置于 /proc/sys/net/ipv4/ip_local_port_range它的值应该是32768到6100原创 2014-10-07 17:33:57 · 4628 阅读 · 0 评论 -
双线服务器策略路由设置
双线服务器策略路由设置电信网通双线服务器,发现只有电信用户能连,网通不通。经运维检查,发现是策略路由没做好。添加了策略路由后就正常了。双线服务器有2个外网网卡,一个配电信IP, 一个配网通IP.策略路由让电信网的数据走电信网卡,电信网关; 网通的数据走网通的网卡,网通网关。配置方法如下:1. 创建 /etc/rc.d/route.sh需要更改里面的网关地址和服务器地址.#!/bin/bashech原创 2014-10-24 17:02:26 · 4223 阅读 · 0 评论 -
boost::coroutine 无法显示调用栈
boost::coroutine 无法显示调用栈(金庆的专栏)一例因 boost::format() 格式化参数个数错误造成的 coredump,因为使用了 boost::coroutine, 无法显示异常时的调用栈,仅显示了异常的类型:#0 raise()#1 abort()#2 __gnu_cxx::__verbose_terminate_handler()#3 ??#4 std::原创 2014-11-07 09:43:33 · 2310 阅读 · 3 评论 -
CentOS升级Svn到最新版
CentOS升级Svn到最新版(金庆的专栏)CentOS/RHEL yum 安装的 subversion 是 1.6.11 版本,连VisulaSVN服务器时会有"Key usage violation":[jinq@jinqing-centos ~]$ svn co https://.../serversvn: OPTIONS of 'https://.../server': SSL hands原创 2015-04-23 16:51:26 · 5378 阅读 · 0 评论 -
用docker stack开启redis集群
用docker stack开启redis集群(金庆的专栏 2017.10)有5个docker swarm节点,开启redis cluster.每个机器上开2个redis节点,共10个redis节点。采用官方的redis:alpine镜像。docker-stack.yml 如下:version: "3"services: redis001: image: redis:alpine vo原创 2017-10-26 12:03:44 · 2771 阅读 · 0 评论 -
etcd+registrator+confd 服务发现
etcd+registrator+confd 服务发现(金庆的专栏 2018.6)因为k8s使用 etcd, 所以选 etcd 作为服务发现的 DB.registrator 可以为 docker 方式运行的服务自动注册到 etcd.confd 读取 etcd, 生成配置文件。先运行一个etcd用于测试:docker run -d \ -p 12379:2379 \...原创 2018-06-13 14:16:19 · 2107 阅读 · 0 评论 -
Unix编程哲学
Unix编程哲学参考其它另外三个不同版本的翻译:* Imperfect C++中文版* 心开天籁* Unix编程哲学1.Rule of Modularity: Write simple parts connected by clean interfaces.模块化准则:编写简单的模块,并用清晰的接口连接它们。2.Rule of Clarity:Clarity is better than clev翻译 2007-08-29 15:22:00 · 1775 阅读 · 1 评论 -
msys中的/etc/fstat可以mount Win32下的目录
机器盘符变了以后, 发现msys中的有些工具不能用了.重新安装了MinGW/msys之后才想起来只要更新/etc/fstat文件应该就行了, 不必重装./etc/fstat 文件格式如下, 可将Win32下的目录mount到msys.#Win32_Path Mount_Pointc:/mingw /mingwc:/ActiveState/perl原创 2006-09-30 10:22:00 · 2111 阅读 · 0 评论 -
Linux下的邮件系统概述
Windows下使用Outlook Express (OE) 收发邮件,配置与使用简单,在Linux图形窗口界面下使用Netscape收发邮件与OE类似。但Linux下的邮件系统是比较复杂的,邮件服务器sendmail的配置文件被称为天书,需要掌握许多概念才能配置Linux下的邮件系统。通常,邮件的编写是用mail之类的程序来完成的,例:mail jinqxxxx@163.com。mail程序为命原创 2006-05-17 16:02:00 · 3250 阅读 · 0 评论 -
监视磁盘空间shell脚本
监视磁盘hda1#!/bin/sh# disk_mon# monitor the disk space# get percent column and strip off header row from dfLOOK_OUT=0until [ "$LOOK_OUT" -gt "90" ]do LOOK_OUT=`df | grep /hda1 | awk {print $5} | sed原创 2006-10-09 10:19:00 · 1967 阅读 · 0 评论 -
udp广播与直接广播
一直用255.255.255.255作为目的地址发UDP广播。在Windows下该广播地址定义为 INADDR_BROADCAST (defined in WINSOCK2.H)。Linux下用这个地址不能发广播,该值定义为INVALID,或NOWHERE,记不清了。为简单化,我配置一个广播地址用来发广播。该地址应为直接广播地址。ifconfig显示的Bcast地址就是直接广播地址。direct原创 2006-05-26 09:19:00 · 11245 阅读 · 1 评论 -
学习netfilter/iptables的使用
学习netfilter/iptables的使用层次结构:tables chains (build-in / user-defined) rules 规则指定了包和目标(target)。 目标就是对匹配的包的动作。目标可以是同一表内的自定义链(user-defined chain),或者是ACCEPT, DROP, QUEUE, 或RETURN。未匹配的包进行链中下一规则的检查;原创 2006-05-31 16:51:00 · 1903 阅读 · 0 评论 -
试用iptables
列出所有链的规则$ iptables -L禁用icmp$ iptables -I INPUT 1 -p icmp -j DROP恢复icmp$ iptables -D INPUT 1开放FTP$ iptables -I INPUT 1 -p tcp -s 10.0.0.0/8 --dport 21 -j ACCEPT恢复$ iptables -D INPUT 1原创 2006-05-31 16:52:00 · 1610 阅读 · 0 评论 -
make文件自动生成依赖关系
make文件自动生成依赖关系摘自:跟我一起写Makefile在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是: main.o : main.c defs.hC/C++编译器都支持一个“-M”的选项,即自动找寻源文件中包含的头文件,并生成一个依赖关系。例如,如果我们执行下面的命原创 2006-10-31 16:34:00 · 3982 阅读 · 0 评论 -
一个通用的Makefile
一个复杂的Makefile:它可以不经修改地用在大部分项目里。 摘自: 中国龍 的 Makefile资料整理 === makefile 开始 === # 用户设定 # # 如果需要,调整下面的东西。 EXECUTABLE 是目标的可执行文件名, LIBS # 是一个需要连接的程序包列表(例如 alleg, stdcx, iostr 等等)。当然你转载 2006-11-21 09:59:00 · 1972 阅读 · 0 评论 -
vi部分命令
vi部分命令转自:gerry.wu Windows Live Spaces注意,其中“s”为表示替换动作,“%”表示所有行,“g”表示全文,“^”表示行首,“$”表示行尾。在文件的第一行或其5行至最后一行的行首插入内容 :5,$s/^/要加的内容/在文件的每一行的行尾添加内容 :%s/$/要加的内容/g在整个文件中替换string成string1 :%s/string/string1转载 2006-08-25 12:49:00 · 1599 阅读 · 0 评论 -
dos文件转换成unix文件格式
dos文件转换成unix文件格式 摘自:ahsunlong的博客 dos格式文件传输到unix系统时,会在每行的结尾多一个^M,当然也有可能看不到,但是在vi的时候,会在下面显示此文件的格式,比如 "dos.txt" [dos] 120L, 2532C 字样,表示是一个[dos]格式文件,如果是MAC系统的,会显示[MAC],因为文件格式的原因有时会导致我们的unix程序,或者shell程序转载 2006-08-23 12:39:00 · 2068 阅读 · 1 评论 -
Unix 技巧
摘自:UNIX 技巧: UNIX 高手的另外 10 个习惯* 利用位置变量 $0 显示Shell名echo $0 特定变量参数 ( 摘自:http://blog.csdn.net/zgqjymx/archive/2008/05/05/2390165.aspx ) $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本原创 2008-07-30 09:01:00 · 1011 阅读 · 0 评论 -
pthread_rwlock使用错误
pthread_rwlock使用错误写锁之后读锁竟然没有阻塞, 顺利运行下去了.据常理,写锁之后,试图读加锁时会阻塞.代码如:pthread_rwlock_t rwl;cout cout cout cout cout cout cout 输出为:init: 0wrlock: 0rdlock: 35unlock: 0unlock: 0程序会死锁在接下来的写锁定上. 35错误号为EDEADLK, 意为原创 2008-11-14 10:43:00 · 7575 阅读 · 2 评论 -
当心虚函数重载(overloaded-virtual)
当心虚函数重载(overloaded-virtual)(转载请注明来源于金庆的专栏)为网游万王之王3(KOK3)服务器添加新功能的时候, 发现某个类成员函数应该是const函数, 因为我的const函数要调用该函数, 顺手就加上了const.再顺便看到该类有好多个明显是getter函数, 所以都加上了const.编译没错就提交了.结果没多久测试就发现了新版本的一个错误, 表现在其他功能上, 但由同原创 2009-05-22 14:00:00 · 7883 阅读 · 0 评论 -
Cygwin与MinGW的区别
Cygwin与MinGW的区别 摘自: http://hi.baidu.com/canicula Cygwin是Linux环境到Windows的移植。它提供了一组dll,这些dll是GPL licensed,但是提供了对GNU工具链的完整实现,而且支持GNU C运行时。MinGW是对GNU工具链到Windows的移植。跟Cygwin相比,最大的区别是其采用的不是 GNU的l转载 2010-03-29 10:19:00 · 1667 阅读 · 0 评论 -
vi查看制表符
在VC中编辑->高级菜单中有个“查看空白”,我总是打开的。它将TAB制表符显示为箭头,空格显示为点号,颜色较浅,不影响阅读。这样就可以发现空格和TAB的混用,以及行尾的空格。在VI中,也有类似功能,可以查看TAB及行尾空格。如下设置:set listset listchars=tab:>-,trail:-set list是设置显示TAB,默认是用^I填充TA原创 2010-05-17 14:19:00 · 5087 阅读 · 0 评论 -
预编译输出的行标志
<br />调用预编译器cpp预编译main.cpp生成main.i文件:<br /> $cpp main.cpp > main.i<br />或者:<br /> $gcc -E main.cpp > main.i<br /><br />生成的行号标志中有如下格式的:<br /> # 1 “/usr/include/features.h” 1 3 4<br />表示下面的内容是由某个文件的第几行产生的。<br />但是最后面的几个数字是什么意思?看不出来是什么。原创 2010-09-15 10:54:00 · 1354 阅读 · 0 评论 -
解决 undefined symbol: php_ini_scanned_files
apache加载php时出错:Starting httpd: httpd: Syntax error on line 57 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/原创 2011-09-26 16:18:52 · 2258 阅读 · 0 评论 -
MySQL无法本地连接
MySQL无法本地连接(金庆的专栏)Linux重启后,发现不知怎么的MySQL无法本地连接。结果phpMyAdmin, Zentao都无法正常工作了。远程的连接用了TCP是正常的,本地连接用了本地socket, 有问题。本地运行mysql客户端会报错:Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.s原创 2011-10-21 16:22:08 · 4965 阅读 · 0 评论
分享