du查看的目录大小与df查看的大小不同的时候用lsof查找

首先MAN一下两个命令,看一下解释的区别:

du - estimate file space usage
df - report file system disk space usage

du估计文件空间占用情况,df报告文件系统磁盘空间使用情况。两个命令所要获取的对象时不同的。在linux下,几乎所有东西都可以称为文件,常规文件,二进制文件,socket流。所以,通常情况下,使用du得到到的根路径文件空间占用情况应当与df得到的文件系统磁盘占用的情况是一致的或者说相差无几。但是在某些情况下却会出现du得到的空间占用情况要远小于df得到的。

后通过查询,发现问题出现在deleted文件上。

root下 lsof | grep deleted会发现多多少少有些文件状态出于deleted状态。

[root@eb152 ~]# lsof |grep deleted
进程名   PID       USER    FD   文件类型        大小(字节)  索引节点  文件名  [(状态)]
java       3311    AuSP    8w      REG              253,0         778   10879268 ***.log (deleted)
java       3311    AuSP    9w      REG              253,0        3275   10879269 ***.log (deleted)
java       3311    AuSP   10w      REG              253,0           0   10879815 ***.log (deleted)
java       3311    AuSP   11w      REG              253,0           0   10879816 ***.log (deleted)
oracle     4195  oracle    7u      REG              253,0           0   14254321 *** (deleted)

状态为deleted为标记被删除,其实该文件并没有从磁盘中删除,类似windows下的回收站状态。

遍历指定目录并且从子目录开始将目录输出到指定文件

shell脚本:

#! /bin/sh
echo "type a backup directory name:"
read -e r
echo $r
python /zp/bianli.py $r #传递参数到python脚本文件中
for dir in `cat /zp/mulu.txt`
do
echo $dir
done

python脚本:

#! /usr/bin/env python
import os,sys
r=sys.argv[1] #将第一个参数值传入到r当中
for root,dirs,files in os.walk(r,topdown=False):
for dir in dirs:
print os.path.join(root,dir) #输出路径

写于: 2012年3月13日
更新于: 2015年03月22日

利用现有的网络产品实现内网linux服务器文件的公网同步

更新这篇文章的时候发现原来引用的互联网产品everbox已经不在了,作为国内第一批网盘产品,模仿dropbox做出来的,说实话,这个产品真的还不错,不过可能由于盛大运营方向的改变,对于这个短期内不会有收益的产品,最终被废掉了,其实对于技术发展很快的今天,拥有数据才是重点,进行数据重复删除以后,对于企业的存储压力其实不太大了,该淘汰的终归要淘汰,就像盛大的没落

下面介绍的是通用的方法,网盘产品很多,都可以使用:

现在可能会出现这样的情况,你在用你的linux服务器开发一个产品,在公司的时候,你可以通过内网连接到你的机器进行开发,但是回家以后,这些东西怎么带回家,怎么实现在线同步,这是一个问题,最近公司在开发产品的时候就面临这个问题,正好在寻找怎么远程连接内网服务器的时候想到了这个办法,内网服务器的连接办法另外一篇介绍:

注册网盘账号,方法就不在这里介绍了

在你的linux机器上安装samba,将你需要使用的目录设置为共享目录
这个在/etc/samba/smb.conf中配置就可以

然后找一台windows机器,将需要备份的目录映射到本地盘,然后将同步的目录指定到这个盘,就可以进行同步了,有的同步软件不支持指定到根目录,那么可以在本地运行一个同步软件,将盘符与本地目录同步起来,然后将同步的盘指定到这个目录即可

现在有支持可以同步linux和windows的软件了,btsync,这个很简单,需要两边都可以上网即可

写于: 2012年02月03日
更新于: 2015年03月22日

利用脚本自动下载ftp列表中的文件

我们可能会遇到这种场景,在某个机构订阅了一个邮件列表,然后这个机构会定期的发送带有ftp目录的url地址到你的邮件,现在你想在你的服务器上能够方便的下载这个列表上的文件,而不是手动的一个个去下,那么我们可以用脚本来完成这个功能,我将这个过程分为两部分,第一步获取到ftp页面的所有文件名称,第二步是通过获得的文件名来下载文件
下面以一个卫星数据的下载为例:

ftp://oceans.gsfc.nasa.gov/subscriptions/1227

这个是邮件中收到的url地址,在浏览器中可以查看到文件名,由于这个数据是0,这个是这样设计的.

第一步:我们只需要获取他的文件名,用下面这个脚本

#! /bin/sh
echo "请输入你的FTP目录编号"
read -e id
wget -r  ftp://oceans.gsfc.nasa.gov/subscriptions/$id
ls  /usr/src/oceans.gsfc.nasa.gov/subscriptions/$id/ > /usr/src/filename.txt

这样文件名就被下载到了/usr/src/filename.txt中了

linux修改网卡的mac地址

linux在安装一些软件的时候可能会用到修改主机的mac地址的问题,在网卡配置文件/etc/network/interface中添加mac地址的方式我在修改重启机器后没有生效,所以采用其他方式

在这里推荐使用脚本修改,将脚本写在开机启动配置文件中,这样开机后就能生成你需要的mac地址
在/etc/rc.local 中添加

ifconfig eth0 down
ifconfig eth0 hw ether 00:e0:34:5b:b4:i8
ifconfig eth0 up

这样修改后重启机器的mac地址就是你设置的地址了
这个时候会出现连不上外网的问题,使用命令route查看你会发现default默认网关路由项不见了,所以这个时候需要添加默认路由

route add default gw 192.168.1.1

将这句加在/etc/rc.local 中的 ifconfig eth0 up 后面让他开机启动,这样就完成了机器网卡mac地址的修改了

写于: 2012年1月14日
更新于: 2015年03月22日

Microsoft Visual C++ 2005 SP1无法安装

安装时出现需要Microsoft Visual C++ 2005 Redistributble对话框,
里面说Command line option syntax error . Type Command/?for Help
先解压 先脱一层,得到 VCREDI~3.EXE 这么个exe文件,执行安装。
使用WINRAR打开这个exe文件,得到vcredis1.cab 和 vcredist.msi 这两个安装程序,现在安装起来没有问题了

写于: 2012年01月13日
更新于: 2015年03月22日

symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6错误的解决办法

当出现

$ apt-get: symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: undefined symbol: _ZNSt8messagesIcE2idE, version GLIBCXX_3.4的时候

需要重新配置下一个包

Fixed by manually downloading testing version of libc6 from here
http://packages.debian.org/wheezy/libc6 and installed it

$ dpkg -i --auto-deconfigure libc6_2.13-16_amd64.deb

重新配置下libc6_2.13-16_amd64.deb就可以了

strings /usr/lib/libstdc++.so.6| grep GLIBC

查看版本,然后安装 libstdc++6 即可

写于: 2011年12月31日
更新于: 2015年03月22日

error while loading shared libraries的解決方法

在linux下运行程序时,发现了error while loading shared libraries这种错误,一时间不知道解决办法,在网上搜索,终于解决了.

error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory

出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。
一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。
所以在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行,/sbin/ldconfig –v更新一下配置即可。
centos下安装qt时出现/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9’ not found
在安装qt-creator的时候运行这个IDE就出现了这个问题,是由于libstdc++.so.6的版本过低,需要下载个新的重新建立软连接

linux下内存释放

细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.
先来说说free命令

[root@server ~]# free -m 
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/cache: 58 191
Swap: 511 0 511

其中:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache 的内存数:used - buffers - cached
+buffers/cache 的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94
那么我们来看看,如果我执行复制文件,内存会发生什么变化.

ubuntu配置bonding

如果节点上有多个网络接口时可以通过bonding将多个网络接口虚拟为一个网络接口,bonding可以提供高可用及负载均衡功能,从而提高节点的网络接口性能及可用性。

一、使用如下命令安装

T01-MON11:~# apt-get install ifenslave-2.6

二、配置bonding

修改网络接口配置文件/etc/network/interfaces

配置一个bond

auto lo
iface lo inet loopback
 
auto eth8
iface eth8 inet manual
bond-master bond0
 
auto eth7
iface eth7 inet manual
bond-master bond0
 
auto eth6
iface eth6 inet manual
bond-master bond0
 
auto eth5
iface eth5 inet manual
bond-master bond0
 
auto eth0
iface eth0 inet static
address 192.168.8.102
netmask 255.255.0.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
 
auto bond0
iface bond0 inet static
address 10.0.0.102
netmask 255.255.0.0
 
bond-slaves none
bond-miimon 100
bond-mode balance-alb