Chinaunix首页 | 论坛 | 博客
  • 博客访问: 333310
  • 博文数量: 46
  • 博客积分: 1921
  • 博客等级: 上尉
  • 技术积分: 417
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-03 17:07
文章分类

全部博文(46)

文章存档

2011年(19)

2010年(4)

2009年(11)

2008年(12)

我的朋友

分类: LINUX

2011-01-27 10:54:35

今天检查服务器磁盘使用率的状态,发现根目录使用率达到了100%,这台服务器是作为gate用,根目录应该不会增长很快呀!
后来发现/var/spool/clientmqueue/目录占用了根目录大量的空间,网上搜索相关文档,其解决方法如下:

在baidu上查询得知产生这些海量文件的原因是:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;所以这些文件不是什么重要的文件,删!

      于是cd /var/spool/clientmqueue
              rm * (rm -f *) 都不行,显示参数列表过长(-bash: /bin/rm: Argument list too long

无法用rm直接删除,怎么办?

使用xargs

# cd /var/spool/clientmqueue
# ls | xargs rm -f
回车后,过了两三分钟,终于执行完了,clientmqueue下空空如也,磁盘可用空间一下子增加了不少。
              

附xargs介绍:

Linux Shell真的是一个比较好玩的东西,以前也会经常写一些,不过都是些简单的东西,或者称之为批处理,估计也只能叫批处理,只是一些简单的命令的堆积。:)。

今天稍微看了一下xargs,一个简单的示例应用如下:
[root@TestServer haha]#ls
a.class b.class c.class
a.java b.java c.java
[root@TestServer haha]#ls |xargs rm
[root@TestServer haha]#ls
[root@TestServer haha]#

呵呵,虽然有点避简就烦,但是能说明了xargs的功能:它将输入输出给xargs后面的命令,作为那个命令的参数。

也就是说,上面的命令执行相当于:
rm a.class b.class c.class a.java b.java c.java

xargs将前面的ls的结果交给了xargs后面的rm命令,作为rm命令的参数。它真正的含义可以用xargs自己来解释:

[root@TestServer haha]# cat a
first line
second line
[root@TestServer haha]# cat a |xargs
first line second line
[root@TestServer haha]# cat a |xargs --verbose
/bin/echo first line second line
first line second line third line
[root@TestServer haha]# cat a |xargs --verbose --max-args=1
/bin/echo first
first
/bin/echo line
line
/bin/echo second
second
/bin/echo line
line

还有人这样解释xargs:
xargs的作用是用来回避对命令行长度的限制,它通过使用一个参数多次调用一个命令实现这一功能,而不是一次使用多个参数
。这句话的意思是:xargs永远一次只传给他后面的命令一个参数,然后不停的将所有参数一一传完,然而,这个说法是错误的!下面的试验将证明这个说法是不正确的:

[root@TestServer haha]# ll
total 12
-rw-r--r-- 1 root root 34 Aug 19 20:43 a
-rw-r--r-- 1 root root 34 Aug 19 20:45 b
drwxr-xr-x 2 root root 4096 Aug 19 20:54 c_folder
[root@TestServer haha]# ll c_folder/
total 0
[root@TestServer haha]# ls| xargs cp
[root@TestServer haha]# ll
total 12
-rw-r--r-- 1 root root 34 Aug 19 20:43 a
-rw-r--r-- 1 root root 34 Aug 19 20:45 b
drwxr-xr-x 2 root root 4096 Aug 19 20:54 c_folder
[root@TestServer haha]# ll c_folder/
total 8
-rw-r--r-- 1 root root 34 Aug 19 20:54 a
-rw-r--r-- 1 root root 34 Aug 19 20:54 b
[root@TestServer haha]#
从这个试验可以看到,xargs确实是将a b c_folder三个参数同时传给了cp命令,不然不可能出现这样的结果。

附rm命令:
名称:rm 
使用权限:所有使用者 
使用方式:rm [options] name... 
说明:删除档案及目录。 
参数: 
-i 删除前逐一询问确认。 
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 
-r 将目录及以下之档案亦逐一删除。 
范例: 
删除所有C语言程式档;删除前逐一询问确认 : 
rm -i *.c 
将 Finished 子目录及子目录中所有档案删除 : 
rm -r Finished



阅读(1377) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~