
Linux系统
_飞翔的企鹅_
这个作者很懒,什么都没留下…
展开
-
Linux脚本 删除指定日期以前的文件
find /data1/* -type f -mtime +7 -exec rm {} \;删除修改时间七天以前的文件,加入crontab可以实现定时清理磁盘文件。其他用法:find . –mtime n: 最后一次修改发生在距离当前时间n*24小时至(n+1)*24 小时find . –mtime +n: 最后一次修改发生在n+1天以前,距离当前时间为(n+1)*24小时或者更原创 2013-12-12 11:41:00 · 3090 阅读 · 0 评论 -
LVS 配置脚本分析
环境描述:配置LVS时使用三台linux,虚拟VIP:172.18.3.209一台做Directorserver(172.18.3.208) 两台做realserver(172.18.3.205,172.18.3.207)访问时通过虚拟VIP:172.18.3.209负载均衡机:#!/bin/sh VIP=172.18.3.209 RIP1=172.18.3原创 2013-12-17 14:45:10 · 1120 阅读 · 0 评论 -
LVS的三种负载均衡技术,八大负载调度算法
1、LVS项目简介LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。章文嵩博士目前工作于阿里集团,主要从事集群技术、操作系统、对象存储与数据库的研究。2、LVS功能及其原理针对高可伸缩、高可用网络服务的需求,我们给出了基于IP层和基于内容请求分发的负转载 2013-12-17 14:32:35 · 3832 阅读 · 0 评论 -
valgrind工具的使用,检测内存泄露
第1章valgrind的安装1.1 valgrind的介绍Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind这个名字取自北欧神话中英灵殿的入口。 Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖。 Valgrind遵守GNU原创 2013-12-15 23:32:34 · 1292 阅读 · 0 评论 -
发一个自己用过的makefile
#gcc test.cpp -L. -Wl,-Bdynamic -ltestlib -Wl,-Bstatic -ltestlib -Wl,-Bdynamic #make clean; make init; make SERVER_NAME=krc_search#make clean; make init; make SERVER_NAME=krc_feedbackCC=g++原创 2013-12-14 16:38:36 · 1874 阅读 · 0 评论 -
Makefile中用宏定义进行条件编译
在源代码里面如果这样是定义的: #ifdef MACRONAME //可选代码 #endif 那在makefile里面 gcc -D MACRONAME=MACRODEF 或者 gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。 对于GCC编译器,有如下选项: -D macro=s转载 2013-12-13 09:20:39 · 9180 阅读 · 0 评论 -
调整系统的inode数量
inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况不需要特殊配置,如果存放文件很多,需要配置。有时磁盘空间有剩余但是不能存放文件,可能是由于inode节点数量不做了。查看inode的数量:df -iFilesystem Inodes IUsed I原创 2013-12-12 11:48:56 · 20826 阅读 · 1 评论 -
Linux内存文件系统——tmpfs(/dev/shm)
一、/dev/shm理论默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录。可以通过df 命令查看结果./dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。默认系统就会加载/dev/shm ,它就是所谓的tmpf转载 2013-12-12 11:36:00 · 6529 阅读 · 0 评论 -
OD命令查看二进制文件内容
查看文本文件使用vim/less就足够了,但如果想要查看一些其他二进制文件(例如DB的数据文件、程序的二进制代码)则借助于od/hexdump这些工具会很方便,这里会通过一些实例来详细介绍od命令的相关参数。1. od参数详解$od -j 49152 -N 38 -w4 -A d -t x1 -v tmp_test.ibd0049152 fd 6f fb 700049156 00转载 2013-12-11 15:36:41 · 7452 阅读 · 0 评论 -
简单通用的一则makefile
在linux下面下写程序少不了写makefile,如果每个文件都按部就班的详细的写编译脚本,效率势必低下;makefile提供了自动化变量、模式规则等,稍加利用可以提高写makefile的效率。下面列举一个简单通用的makefile书写规则:SRCS = $(wildcard *.c)OBJS = $(SRCS:.c = .o)CC = gccINCLUDES = -I/usr/your原创 2012-12-08 21:12:31 · 956 阅读 · 0 评论 -
利用Linux命令按行去重以及按重复度排序
最近杂事太多,正事进展缓慢。Fighting!linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用Linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重,cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行)转载 2014-05-06 17:12:16 · 7547 阅读 · 0 评论 -
Linux服务程序性能评估文档
1.1影响Linux服务程序性能的因素CPU、内存、磁盘I/O带宽、网络I/O带宽1.2性能评判CPU:user% + sys%< 70%; 程序在用户态和内核态的执行时间百分比。内存:Swap In(si)=0; Swap Out(so)=0; 以不使用交换分区为准,如果频繁用到交换分区,内存可能不够了。硬盘:iowait % < 20%;网络:只要有足够带宽尽情的使用吧,达到网卡带宽linux系统表示毫无压力其中: %user:表示CPU处在用户模式下的时间百分比。 %sys:表原创 2013-12-11 10:47:54 · 3076 阅读 · 0 评论 -
TCP/IP协议选项——TCP_KEEPALIVE
1、KEEPALIVE作用KEEPALIVE机制,是TCP协议规定的TCP层(非应用层业务代码实现的)检测TCP本端到对方主机的TCP连接的连通性的行为。避免服务器在客户端出现各种不良状况时无法感知,而永远等在这条TCP连接上。2、KEEPALIVE代码示例该选项可以设置这个检测行为的细节,如下代码所示:int keepAlive = 1; // 非0值,开启keepaliv转载 2013-12-17 14:55:33 · 3657 阅读 · 1 评论 -
Linux内核开篇之谈
曾经做过内核方面的开发;也曾经啃过《Understanding Linux Kernel》等一系列的巨著;也曾想过毕生致力于Linux Kernel方面的开发;两年多前的就业还是选择了上层应用开发、框架设计;公司的工作发现永远干不完,尽量挤点时间把内核捡起吧;作为C、C++程序员还是对底层多了解点的好;知其然,还要知其所以然!原创 2013-12-18 15:15:33 · 822 阅读 · 0 评论 -
手把手教你玩GDB
第一部分牛刀小试:启动GDB开始调试1. 编译带调试信息的可执行程序:用gcc(g++)编译的时候带上-g选项即可2. 启动GDB开始调试(1)gdb program ///最常用的用gdb启动程序,开始调试的方式(2)gdb program core ///用gdb查看core dump文件,跟踪程序core的原因(3)gdb转载 2013-12-18 17:17:54 · 1558 阅读 · 0 评论 -
linux程序编译期加入编译时间和svn版本号
通常我们在程序开发时会加入版本查询命令,如:“-v”,此时一般会显示build版本,以及build日期等,因此如果每次编译时能自动添加这些信息的话,就非常方便了。下面先说说添加时间的方法:1.最简单方式,代码中直接加入宏[cpp] view plaincopy__TIME__和__DATE__ 通过他们可以直接得到编译时间,转载 2014-05-06 17:10:55 · 1048 阅读 · 0 评论 -
rsyslogd日志丢失的解决
最近发现跑keepalived的几台机器的日志总是打印不完,还好给抛了一个报错,信息如下:[root@yw_lvs2_backup etc]# tail -n 1000000 /var/log/messages-20130526 | grep "rate-limiting"May 20 11:43:55 yw_lvs2_backup rsyslogd-2177: imuxsock be转载 2014-05-06 17:09:30 · 5424 阅读 · 0 评论 -
Makefile中使用shell注意点
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙。下面总结了一些。1:尽在Makefile文件的目标项冒号后的另起一行的代码才是shell代码。eg:xx = xx1 // 这里时makefile代码yy:xx = xx2 // 这是是makefile代码,makefile允许变量赋值时,转载 2014-04-24 09:22:44 · 1151 阅读 · 0 评论 -
linux内存管理及手动释放机制
linux系统中查看内存状态一般都会用到freelinux的free命令中,cached和buffers的区别FreeMem:表示物理内存统计 -/+ buffers/cached:表示物理内存的缓存统计 Swap:表示硬盘上交换分区的使用情况 系统的总物理内存:8098060 8Gb,但系统当前真正可用的内存并不是第一行free 标记的6054972Kb,它仅代转载 2014-04-16 09:17:33 · 857 阅读 · 0 评论 -
undefined reference问题总结
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o转载 2014-01-02 15:30:47 · 874 阅读 · 0 评论 -
编译静态库、动态库以及条件编译用法
关于-fPIC选项不加fPIC编译出来的so,是要再加载时根据加载到的位置再次重定位的.(因为它里面的代码并不是位置无关代码)如果被多个应用程序共同使用,那么它们必须每个程序维护一份so的代码副本了.(因为so被每个程序加载的位置都不同,显然这些重定位后的代码也不同,当然不能共享)这样就失去了共享库的好处,实际上和静态库的区别并不大,在运行时占用的内存是类似的,仅仅是二进制代码占的硬盘空间小一些.而且在加载时才重定位的开销也很大(这一点使得这种做法更加没有意义).我们总是用fPIC来生成原创 2014-01-02 11:38:57 · 2496 阅读 · 0 评论 -
Linux内核设计与实现——从内核出发
内核开发的特点内核编程是不能访问C库。内核编程是不能使用GNU C。缺乏像用户空间编程时的内存访问保护机制。内核编程时浮点数很难使用。内核只有一个很小的定长堆栈,编译时配置大小通常在8K。由于内核支持异步中断、抢占、SMP等要时刻注意并发与同步。要考虑可移植性。原创 2013-12-30 10:30:07 · 838 阅读 · 0 评论 -
Linux内核设计与实现——内核简介
0、系统设计的一下特点,使其优良、健壮、弹性好a、简洁:仅有几百个系统调用接口。b、一切皆是文件:提供统一的访问接口。c、 采用C语言实现:移植性强。d、进程创建迅速:采用写时赋值技术。e、进程间通信方式简单、稳定。1.2 处理器所处上下文a、运行于内核空间,处于进程上下文,代表某个特定的进程执行。b、运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中原创 2013-12-30 10:13:54 · 894 阅读 · 0 评论 -
Linux程序调试GDB——数据查看
查看栈信息 当程序被停住了,首先要确认的就是程序是在哪儿被断住的。这个一般是通过查看调用栈信息来看的。在gdb中,查看调用栈的命令是backtrace,可以简写为bt。 (gdb) bt #0 pop () at stack.c:10 #1 0x080484a6 in main () at main.c:12 也可以通过info stack命令实现类似的功能(转载 2013-12-23 16:27:36 · 1295 阅读 · 0 评论 -
Socket常用选项
功能描述获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议号TCP。用法#include #include转载 2013-12-21 15:42:03 · 1391 阅读 · 0 评论 -
Linux系统下通过Socket文件描述符寻找连接状态
Proc虚拟文件系统下面有许多数字命名的子目录,这些数字表示系统当前运行的进程号;其中/proc/N/fd目录下面保存了打开的文件描述符,指向实际文件的一个链接。如下:[root@XXXXXXX_10_1_17_138 song_test]# ll /proc/25465/fdtotal 0lrwx------ 1 root root 64 Apr 14 09:36 0 -> /dev原创 2015-04-14 10:34:36 · 8912 阅读 · 0 评论