On Oct 18, 2008, at 8:13 PM, mouss wrote:

Jussi Hirvi a écrit :
Since when is there a limit in how long directory listings CentOS can show (ls), or how large directories can be removed (rm). It is really annoying to
say, for example

   rm -rf /var/amavis/tmp

and get only "argument list too long" as feedback.


I doubt this. "argument list too long" is a shell error, and in your
command the shell doesn't see many arguments.

I guess you want to remove amavisd-new temp files and you did
        rm -rf /var/amavis/tmp/*

In this case, the shell would need to replace that with
        rm -rf /var/amavis/tmp/foo1 /var/amavis/tmp/foo2 ....
in which case, it needs to store these arguments in memory. so it would need to allocate enough memory for all these before passing them to the
rm command. so a limitation is necessary to avoid consuming all your
memory. This limitation exists on all unix systems that I have seen.



Is there a way to go round this problem?


Since amavisd-new temp files have no spaces in them, you can do
        for f in in /var/amavis/tmp/*; do rm -rf $f; done
(Here, the shell does the loop, so doesn't need to expand the list at
once).

alternatively, you could remove the whole directory (rm -rf
/var/amavis/tmp) and recreate it (don't forget to reset the owner and
permisions).



I have CentOS 5.2.



Possible to learn something new every day. I would have expected the for loop to fail too, thinking it would attempt to expand the wildcard before starting it's iteration.

_______________________________________________
CentOS mailing list
CentOS@centos.org
http://lists.centos.org/mailman/listinfo/centos

Reply via email to