更新租约和检测数据完整性脚本

这个是针对tahoe这个文件系统做的一个更新租约和检查数据完整性的脚本,并且把结果保存下来,先要把所有的caps保存到一个文本当中

#! /bin/sh
   a=$(cat /home/cap-list.txt |wc -l)
   c=`date`
   echo $a
   for((i=1;i<=a;i++))
   do
       b=$( head -$i /home/cap-list.txt |tail -1)
       echo $b >> /home/checktime.txt
       echo "start time:" >> /home/checktime.txt
       echo `date` >> /home/checktime.txt
       tahoe deep-check --add-lease --repair --dir-cap=$b >> /home/checktime.txt
       echo "end time:" >> /home/checktime.txt
       echo `date` >> /home/checktime.txt
   done
   d=`date`
   echo $c >> /home/checktime.txt
   echo $d >> /home/checktime.txt

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

卸载python安装的软件

python源码安装的软件是无法通过命令卸载的,这个可以通过记录安装过程的形式来卸载安装的软件

以 python2.7.2 为例,在这个目录中有一个 setup.py 的文件,很显然这是安装程序,还是python写的,用 python 写 python 到安装程序,大开眼界了。在这里,需要写一个 shell 脚本,把在重新安装中提到的安装位置全部删除,就实现了卸载到目的了

一、创建del.sh脚本内容(在源码目录):

#!/bin/bash  
for i in $(less files.txt)  
do  rm -rf $i  
done

脚本说明: files.txt 是需要事先在目录下创建的文件,目的是记录安装过程中提到到路径。脚本很简单,详细的就不说了,学过 shell 编程到肯定没问题,没学过到有其他语言编程基础的,仔细看看也可以看懂。

监控磁盘读写状况

您有没有碰到过:没有运行任何程序,磁盘却不断执行读写动作,io指示灯常亮,各种操作迟缓甚至卡顿。碰到这种状况往往会感到束手无策,因为并不是 cpu 居高不下,可以立即结束相关进程。而突然结束进程中断磁盘 io 操作甚至可能导致正在写入的数据丢失。

什么进程在读写磁盘?

可能是 firefox,可能是 updatedb,也可能是正在运行的 pacman -Syu,一切皆有可能 ……
怎么查看是什么进程在不断的读写磁盘呢?
请使用 iotop 命令查看:
通过输出结果我们可以清楚地知晓是什么程序在读写磁盘,速度以及命令行, pid 等信息。

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日