
Linux/Unix
金庆
这个作者很懒,什么都没留下…
展开
-
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 · 2003 阅读 · 1 评论 -
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 · 5272 阅读 · 2 评论 -
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 · 2633 阅读 · 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 · 4766 阅读 · 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 · 7051 阅读 · 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 · 2931 阅读 · 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 · 19485 阅读 · 0 评论 -
关于C++程序的编码问题
转自: http://blog.chinaunix.net/uid-26790551-id-3190813.html 我们传统的程序基本都只在Windows或只在Linux下运行,Windows程序使用简体中文GB18030编码,Linux程序则只使用英文,多年以来这些程序运行起来都没有问题。近年来,随着程序的组件化,部分代码特别是公用组件都需要同时支持Windows及Linux平台,这样就出现了转载 2013-11-29 17:03:58 · 1753 阅读 · 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 · 7594 阅读 · 0 评论 -
Linux编译Windows共享目录下代码
Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的。平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到Linux上编译测试。因为用VC开发,可以使用VAssist, MetalScroll工具辅助,开发效率高。VC编译通过,gcc编译仍会有出错。用CMake构建时,编译目录与源码目录是分开的,这样就可原创 2014-02-26 11:44:31 · 3048 阅读 · 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 · 2109 阅读 · 0 评论 -
shell脚本整段注释
摘自:http://zhidao.baidu.com/link?url=XmCCZmfluRe6n8TjPRKJTx4GGOUPSGX1VNBm-euqGdpKGpveTESxC0HL90UBNT5nZCvmvfq2oIJdP3JO5EoPSq利用shell空语句注释整段代码: << COMMENTBLOCK shell脚本代码段COMMENTBLOCK这个用来注释整段脚转载 2014-04-01 09:49:41 · 4912 阅读 · 0 评论 -
gcov辅助脚本
gcov辅助脚本代码原创 2014-09-26 20:59:03 · 1362 阅读 · 0 评论 -
内核自动分配端口号范围
内核自动分配端口号范围(金庆的专栏)因为单机开多区测试时,因为Tcp连接比较多,很容易出现端口号被占用而无法开启服务进程的情况。例如某个进程连接MySql本地端口号为34567,正好该端口是另一个服务进程的监听端口。本地端口号是内核自动分配的一个空闲端口。内核自动分配端口号范围配置于 /proc/sys/net/ipv4/ip_local_port_range它的值应该是32768到6100原创 2014-10-07 17:33:57 · 4481 阅读 · 0 评论 -
双线服务器策略路由设置
双线服务器策略路由设置电信网通双线服务器,发现只有电信用户能连,网通不通。经运维检查,发现是策略路由没做好。添加了策略路由后就正常了。双线服务器有2个外网网卡,一个配电信IP, 一个配网通IP.策略路由让电信网的数据走电信网卡,电信网关; 网通的数据走网通的网卡,网通网关。配置方法如下:1. 创建 /etc/rc.d/route.sh需要更改里面的网关地址和服务器地址.#!/bin/bashech原创 2014-10-24 17:02:26 · 4125 阅读 · 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 · 2232 阅读 · 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 · 5298 阅读 · 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 · 2687 阅读 · 0 评论 -
建立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 · 3125 阅读 · 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 · 4914 阅读 · 0 评论 -
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 · 2041 阅读 · 0 评论 -
Linux下的邮件系统概述
Windows下使用Outlook Express (OE) 收发邮件,配置与使用简单,在Linux图形窗口界面下使用Netscape收发邮件与OE类似。但Linux下的邮件系统是比较复杂的,邮件服务器sendmail的配置文件被称为天书,需要掌握许多概念才能配置Linux下的邮件系统。通常,邮件的编写是用mail之类的程序来完成的,例:mail jinqxxxx@163.com。mail程序为命原创 2006-05-17 16:02:00 · 3152 阅读 · 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 · 1906 阅读 · 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 · 11162 阅读 · 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 · 1838 阅读 · 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 · 1551 阅读 · 0 评论 -
make文件自动生成依赖关系
make文件自动生成依赖关系摘自:跟我一起写Makefile在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是: main.o : main.c defs.hC/C++编译器都支持一个“-M”的选项,即自动找寻源文件中包含的头文件,并生成一个依赖关系。例如,如果我们执行下面的命原创 2006-10-31 16:34:00 · 3894 阅读 · 0 评论 -
一个通用的Makefile
一个复杂的Makefile:它可以不经修改地用在大部分项目里。 摘自: 中国龍 的 Makefile资料整理 === makefile 开始 === # 用户设定 # # 如果需要,调整下面的东西。 EXECUTABLE 是目标的可执行文件名, LIBS # 是一个需要连接的程序包列表(例如 alleg, stdcx, iostr 等等)。当然你转载 2006-11-21 09:59:00 · 1925 阅读 · 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 · 1545 阅读 · 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 · 1706 阅读 · 1 评论 -
Unix 技巧
摘自:UNIX 技巧: UNIX 高手的另外 10 个习惯* 利用位置变量 $0 显示Shell名echo $0 特定变量参数 ( 摘自:http://blog.youkuaiyun.com/zgqjymx/archive/2008/05/05/2390165.aspx ) $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本原创 2008-07-30 09:01:00 · 965 阅读 · 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 · 7447 阅读 · 2 评论 -
当心虚函数重载(overloaded-virtual)
当心虚函数重载(overloaded-virtual)(转载请注明来源于金庆的专栏)为网游万王之王3(KOK3)服务器添加新功能的时候, 发现某个类成员函数应该是const函数, 因为我的const函数要调用该函数, 顺手就加上了const.再顺便看到该类有好多个明显是getter函数, 所以都加上了const.编译没错就提交了.结果没多久测试就发现了新版本的一个错误, 表现在其他功能上, 但由同原创 2009-05-22 14:00:00 · 7587 阅读 · 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 · 1611 阅读 · 0 评论 -
vi查看制表符
在VC中编辑->高级菜单中有个“查看空白”,我总是打开的。它将TAB制表符显示为箭头,空格显示为点号,颜色较浅,不影响阅读。这样就可以发现空格和TAB的混用,以及行尾的空格。在VI中,也有类似功能,可以查看TAB及行尾空格。如下设置:set listset listchars=tab:>-,trail:-set list是设置显示TAB,默认是用^I填充TA原创 2010-05-17 14:19:00 · 5014 阅读 · 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 · 1278 阅读 · 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 · 2212 阅读 · 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 · 2034 阅读 · 0 评论