我是大帅哥,擅长LINUX和C语言,还有脚本,希望和大家交朋友 mail:newhitler@163.com

《巧改linux系统命令愚弄管理员》

上一篇 / 下一篇  2007-08-30 18:32:25 / 个人分类:C语言编程

1)由于fdisk不支持2TB以上的分区,在玩的的时候没注意检查,本来3TB的磁盘阵列,只分2TB的数据,也没放在心上,现在要交出去了,只能把df改一下来对付一下他们了。LUPA开源社区9{i,NHa$L#z

 

.C6e6XrF5m1J)S0

2)先找到源代码,因为是ES3的系统,有4张盘,但没有SRPMS的包。只能到网上下了。rpmfind吧
kQ&s4C j)M^%UZ#Y0相关命令:rpm -qf /bin/df
6`-z u/{6YX0ES3是这个:coreutils-4.5.3-28LUPA开源社区9L OT ]QYo7x'U} E8D
注意一定要SRPMS的包,不然没有源代码。

q N,W7s7k*Z%v9Di,P0

 

+^!K;u @)i\0

3)安装SRPMS
8^OYRU/?*b#B0rpm -ivh coreutils-4.5.3-28.src.rpm
'] Kg6y#m{2I0这时要到/usr/src/redhat/SOURCES下面找LUPA开源社区&lj|I$b`
解压缩:
(J*h'T~#P9ku(}G0tar xvjf coreutils-4.5.3.tar.bz2LUPA开源社区J'r:tf&R.C
cd coreutils-4.5.3LUPA开源社区BsRa~}f8cX
cd srcLUPA开源社区XCf,C6VXg
编辑df.c吧

9n$`7\N5D1_7_0

 LUPA开源社区uxlpJJT

4)修改df.c程序,先查看主函数,了解流程,再对程序的功能模块大体有个了解,因为这里要找的是如果显示总空间和空闲的空间,必然要有printf或puts之类的东东,这是个技巧,但我还是一步步查看下来,显示分区主要靠这个WHILE循环,在每次循环显示一个DEV.LUPA开源社区Kn$]8|,{2O-X ~

OK这时只要让当变量disk与/dev/sdc1相等,那就是要改它的时候了。LUPA开源社区K3]E0{f2V2D.Vr4}
相关语句:if (strcmp(disk,"/dev/sdc1")==0)LUPA开源社区zN4aq%~f%`#h
{
Jr9zadF0但要注意:人家的total(总空间)和available(空闲空间)是要做变量 输入到df_readable函数里的,最后得出:30G或30M之类的字符串,所以这时你想先用df_readable把结果输出到一个字符数组,再把字符数组转换到整型变量,做完运算再转换为字符数组,这种路线就很难实现了.LUPA开源社区C&ns%_y&{[ ^
所以这里就简单的测出1TB的数据大概和total变量数据的260000000接近.
!Mr9v*y/{7r3jG"u3^0直接做赋值
f,m-] NFm5RV.KWa*N/y0相关语句:
zng3ro0        total = total+260000000;
!M Xked0        available = available+260000000;LUPA开源社区E8XV*p}M[ ^
这里注意:不要在它的printf里做加赋值如:LUPA开源社区8o0f"m5Tz[#E
 df_readable (0, total+260000000,LUPA开源社区"XM9l7P\2x4c4F
                              buf[0], input_units, output_units)LUPA开源社区|UH j#})z+G
原因是后面要做比例运算,否则就永远都是百分之5之类的了。嘿嘿
'TM'H i wk3HD$x0 
/Y*`e+U.F0相关代码段如下:LUPA开源社区 ?"@Au$lB y
/* hacker 's part.......begin */

vUUe7{+fq0

if (strcmp(disk,"/dev/sdc1")==0)
/qT;t&Vs0t0{LUPA开源社区Ah!R7{ kBpW
        total = total+260000000;
+vl A}%T9Y~0        available = available+260000000;LUPA开源社区,~ }(W'B(gJ:T
        printf (" %*s %*s %*s ",LUPA开源社区eh6g t z#VodSB6u
          width, df_readable (0, total,
.u0ni)om.R0                              buf[0], input_units, output_units),LUPA开源社区0m1x4Bz+K+e!p2I]w#]x9a
          width, df_readable (negate_used, used,
8na5_%n E0                              buf[1], input_units, output_units),
^p4e0w"RB0          width, df_readable (negate_available, available,
p6KHp0[0                              buf[2], input_units, output_units));
o @4T%I f|:d(Vg U0  }LUPA开源社区_L6R\"nG)r F-m
elseLUPA开源社区f/?9{Q F6y q m`
  {LUPA开源社区']G)x1|;z
    printf (" %*s %*s %*s ",
*`O8q;QgK0          width, df_readable (0, total,
.qO/P9n!j-R_._ AC0                              buf[0], input_units, output_units),
%f)c/?v\)R!_0          width, df_readable (negate_used, used,
v'TA8TP+\$P0                              buf[1], input_units, output_units),LUPA开源社区 M!q a y YV
          width, df_readable (negate_available, available,
+w!Bben^6s3pF0                              buf[2], input_units, output_units));LUPA开源社区6~j*d#VOc6];v
  }

/Ton"T/^1p/` v*Q0

/* hacker 's part........end */LUPA开源社区 }r4N9J]4p+~

 

sBVr;O| }.oy0

5)编译:
'g N?Vr/iO#d0configure;make;make install
LUPA开源社区'lC ~7pmr

 
 
6)结果
用-h显示输出
[root@db root]# df -h
Y-f$N;S0@3F\0Filesystem            Size  Used Avail Use% Mounted on
o4vRrx$n)W0/dev/sda1              29G  2.6G   25G  10% /LUPA开源社区 w(];x-D A4|(}$Qw
/dev/sdb1             135G   33M  128G   1% /backup
D6OCz3O/_? F0none                  2.0G     0  2.0G   0% /dev/shm
Dc8C2_/w k f7d+K'T"y0/dev/sdc1             3.0T  9.9G  2.9T   1% /u01
r e4F"G t0
以MB显示输出LUPA开源社区 H {8N\9m,A
[root@db root]# df -mLUPA开源社区 @8R,e%i:xfa
Filesystem           1M-blocks      Used Available Use% Mounted on
VWY`&rPs0/dev/sda1                29526      2657     25369  10% /
^XSm5rcU0/dev/sdb1               137815        33    130782   1% /backupLUPA开源社区yX#d6v G7C8X-o
none                      1998         0      1998   0% /dev/shmLUPA开源社区yU9_IBh6QV
/dev/sdc1              3079870     10129   2964884   1% /u01LUPA开源社区 b7G5Vs+x{

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-05  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 18926
  • 日志数: 60
  • 建立时间: 2007-07-22
  • 更新时间: 2008-07-30

RSS订阅

Open Toolbar