Understanding 'du' command


 
Thread Tools Search this Thread
Operating Systems Solaris Understanding 'du' command
# 1  
Old 09-15-2010
Understanding 'du' command

Hi

I have a questions related 2 commands : 'du' and 'ls'.
Why is the difference between output of 'du' and 'ls' cmd's ?

Command 'du' :
------------------
Code:
jakubn@server1 /home/jakubn $ du -s *
4       engine.ksh
1331  scripts

'du -s *' ---> shows block count size on disk (512 Bytes per block on disk)

Code:
jakubn@server1 /home/jakubn $ du -sh *
2K       engine.ksh
665K    scripts

'du -sh *' ---> shows KB size on disk

Math for 'du' cmd:
---------------------
1331 * 512 Bytes = 681472 Bytes
681472 Bytes / 1024 Bytes = 665.5 KB

#################################
Command 'ls' :
-----------------
Code:
jakubn@server1 /home/jakubn $ ls -la
-rwxrwxrwx 1 jakubn jakubn 1251 Jul 17 16:00 engine.ksh
drwxr-xr-x 6 jakubn jakubn 6 Jul 17 16:10 scripts


QUESTIONS :
---------------
What is the value 1251 and 6 from ls cmd in fifth column ? (I guess Bytes)
If those values represent Bytes, why is the difference between 'ls -la' and 'du -sh *' outputs ?

Last edited by presul; 09-15-2010 at 02:02 PM..
# 2  
Old 09-15-2010
Quote:
Originally Posted by presul
Why is the difference between output of 'du' and 'ls' cmd's ?
Because they measure different things.
Quote:
What is the value 1251 and 6 from ls cmd in fifth column ? (I guess Bytes)
1251 is indeed bytes but 6 represent a number of entries (links) and not bytes as "scripts" is a directory.
Quote:
If those values represent Bytes, why is the difference between 'ls -la' and 'du -sh *' outputs ?
"du" reports the size the file takes on the disk. This size depends on the file system used. "ls" reports the file size. They are somewhat related but different metrics. You certainly can have a file size larger that the space it takes on disk.
# 3  
Old 09-15-2010
Quote:
1251 is indeed bytes but 6 represent a number of entries (links) and not bytes as "scripts" is a directory.
Agree with that but there is another 6 in fifth column not the second one.

I guess it means that :
- engine.ksh file is fragmentet into 4 blocks (512 Bytes each)
- engine.ksh occupies 4 blocks * 512 Bytes = 2 KB
- - engine.ksh actual file size is 1251 Bytes

So 'du' cmd show how many blocks a particular file or directory occupies on the disk geometry but the actual size of the object should be read from ls -la cmd ?
# 4  
Old 09-15-2010
Quote:
So 'du' cmd show how many blocks a particular file or directory occupies on the disk geometry but the actual size of the object should be read from ls -la cmd ?
Correct.

Also if you have two identical size files according to "ls" you can get different sizes from "du" due to fragmentation.

It is inefficient to have very large numbers of small files, but no worse in unix than Windows. You will notice that a directory file never shrinks.
# 5  
Old 09-15-2010
Quote:
Originally Posted by presul
Agree with that but there is another 6 in fifth column not the second one.
That's the one I'm referring to. That fifth column 6 means there are 6 entries inside that directory.

Here is an example of files using less disk space than their actual size:
Code:
 $ ls -Rg       
.:
total 6
-rw-r--r--   1 jlliagre    1252 Sep 15 23:58 engine.ksh
drwxr-xr-x   2 jlliagre       5 Sep 15 23:58 scripts

./scripts:
total 210
-rw-r--r--   1 jlliagre  102400 Sep 15 23:58 a1
-rw-r--r--   1 jlliagre  102400 Sep 15 23:58 a2
-rw-r--r--   1 jlliagre  102400 Sep 15 23:58 a3
$ du -sk * */* 
1    engine.ksh
106    scripts
0    scripts/a1
4    scripts/a2
100    scripts/a3

# 6  
Old 09-16-2010
thx.

that's really great example.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk : Need Help in Understanding a command

Hello I am working on a Change request and Stuck at a point. The below awk command is used in the function. float_test ( ) { echo | awk 'END { exit ( !( '"$1"')); }' } I understand that awk 'END' is used to add one line at the end and exit is used to end the script with an error... (4 Replies)
Discussion started by: rahul2662
4 Replies

2. UNIX for Dummies Questions & Answers

understanding sed command

Hi Friends, I need a small help in understanding the below sed command. $ cat t4.txt 1 root 1 58 0 888K 368K sleep 4:06 0.00% init 1 root 1 58 0 888K 368K sleep 4:06 0.00% init last $ sed 's/*$//' t4.txt 1 root 1 58 0 888K ... (3 Replies)
Discussion started by: forroughuse
3 Replies

3. UNIX for Dummies Questions & Answers

Understanding nm command output

After running nm command on any object file from out put can we get to know that wheather a symbol is a call to a function or definition of function ? I am searching a class and function definitions inside many .so files. I have 3 files which contain the symbol but I don't know wheather they... (2 Replies)
Discussion started by: yatrik007
2 Replies

4. Shell Programming and Scripting

Understanding 'find' command

I want to understand what does this command do:confused::confused: find . \( -type f -o -type 1 \) Plz someone explain me ! Thanks much in advance!! (2 Replies)
Discussion started by: sears
2 Replies

5. UNIX for Dummies Questions & Answers

Understanding the output command

Could you please explain me whats happening in the below code, appreciate your help, Thank you. /product/apps/informatica/v7/pc/ExtProc/NewDAC/dacRecBuilder.sh /product/apps/informatica/v7/pc/TgtFiles/NEW_DAC/DAC_Pos_TradeInv_Records.out ... (5 Replies)
Discussion started by: Ariean
5 Replies

6. Shell Programming and Scripting

understanding mv command

hi i was moving a file from one directory to another with the following cmmand mv /home/hsghh/dfd/parent/file.txt . while doing so i i accidently mv /home/hsghh/dfd/dfd . although i gave ctrl c and terminate the move command some of the file are missing in the parent directory and... (1 Reply)
Discussion started by: saravanan71184
1 Replies

7. Shell Programming and Scripting

understanding the kill command

Hi Guys, I like to know if i have a process which triggers 10 different child processes. How to identify out of the 11 processes running which is the parent process and what are the child process? And if i kill the parent process will the child process be killed.. if not is there a way to... (2 Replies)
Discussion started by: mac4rfree
2 Replies

8. Shell Programming and Scripting

Help Needed in understanding this command

Hi All, I search the forum for my query, Glad that got solution to it. But i really want to understand how does this command work. sed -e ':a' -e 's/\("*\),\(*"\)/\1~\2/;ta' Basically it is replacing all the comma(,) characters in between quotes with a tilde. Specially what does ':a' ,... (2 Replies)
Discussion started by: DSDexter
2 Replies

9. Shell Programming and Scripting

understanding the sed command

Guys, I am trying to understand the sed command here. adx001 $ a=/clocal/dctrdata/user/dctrdat1/trdroot/recouncil adx001 $ b=`echo $a | sed 's/\//\\\\\//g'` adx001 $ echo $b \/clocal\/dctrdata\/user\/dctrdat1\/trdroot\/recouncil The sed command i took it from the script. Please... (3 Replies)
Discussion started by: mac4rfree
3 Replies

10. UNIX for Dummies Questions & Answers

Need help understanding script command

We use a UNIX-based system (Lawson) at work and I was given this command to request a data extract from the db admin. The only thing I really understand is the last line as it appears to be joining the files created from the first three lines into one. Is there anyone who can help me breakdown the... (4 Replies)
Discussion started by: KGee
4 Replies
Login or Register to Ask a Question