Strange behaviour on my Linux Server.

Hi,

I keep getting this error when i run my script:

No matter how many times i run this rm -rf /siebel/sfs/tmp/dump it succeeds when i expect it only the first time to succeed becoz i expect the second to fail as the directory should be gone in the first run.

i had earlier mentioned the rm -rf /siebel/sfs/tmp/dump which I later commented out however with no rm -rf /siebel/sfs/tmp/dump in my scripts so why do i still get

I had earlier noticed this error during my script runtime

Below is all where "dump" is used in my scripts

grep dump *
runcda.sh_tmp:#rm -rf /siebel/sfs/tmp/dump
runcda.sh_tmp:#mkdir -p /siebel/sfs/tmp/dump
runcda.sh_tmp:echo Calling /home/admin/analysis_new.sh_tmp $startd $endd on $(hostname)
runcda.sh_tmp:filename=$(echo "/siebel/sfs/tmp/dump/$(hostname)_$(date).out" | tr -d "[:space:]")
runcda.sh_tmp:#echo /home/admin/analysis_new.sh $startd $endd
runcda.sh_tmp:echo /home/admin/analysis_new.sh_tmp $startd $endd > $filename &
runcda.sh_tmp:#/home/admin/analysis_new.sh $startd $endd > $filename &
runcda.sh_tmp:/home/admin/analysis_new.sh_tmp $startd $endd >> $filename
runcda.sh_tmp:#/home/admin/analysis_new.sh $startd $endd
runcda.sh_tmp:cd /siebel/sfs/tmp/dump/
runcda.sh_tmp:cat "$file" >> all_dump_$tdate.out
runcda.sh_tmp:cat * > all_dump_$tdate.out;
runcda.sh_tmp:echo "Analysis Today" | mailx -a all_dump_$tdate.out me@hello.com
analysis_new.sh_tmp:#rm -rf /siebel/sfs/tmp/dump
analysis_new.sh_tmp:mkdir -p /siebel/sfs/tmp/dump
analysis_new.sh_tmp:#echo "scp 
analysis_new.sh_tmp:#        scp 

Can you suggest whats wrong.

I also remember once seeing the Device busy error but not sure if it is related to this problem.

Linux myserver 2.6.32-431.5.1.el6.x86_64 #1 SMP Fri Jan 10 14:46:43 EST 2014 x86_64 x86_64 x86_64 GNU/Linux

try using

$ lsof | grep /siebel/sfs/tmp/dump

to see what other process may be holding files open in that directory

rm -rf /here/nothing will not complain or give you any indication whether nothing exist or not.
rm , alone, as you see, it will, and of course, it will complain if a directory contains another node that needs to be removed first. The behavior you're describing is as documented.

The grep can be removed, unless you are looking for only the particular path string within the output of lsof for whole system.

lsof /siebel/sfs/tmp/dump will show pertaining information for dump

Perhaps I'm missing something here but you don't say under what account you are running this. Only 'root' will circumvent security so any other account may not have the rights to remove all files within that directory meaning that the directory is never emptied. Also, consider other hidden files (eg, .profile) to which you might not have access.

When it says "directory not empty" it generally means just that.

---------- Post updated at 07:58 PM ---------- Previous update was at 07:35 PM ----------

Also, your script cannot be sat in a directory it is trying to remove. Check that.

Is it a remote file system?
To clarify, run

df /siebel/sfs/tmp/dump

Another thought is that your

 
 mkdir -p /siebel/sfs/tmp/dump
 

will create all the directories in this tree (if they don't already exist) with access rights being the difference between 777 and your file creation mask. What is the mask set to?

I guess it's possible that once you create these you don't have the rights to remove them. Post the access rights these are set to. The "directory not empty" message could be generated from a parent directory complaining that the sub-directory is still there.