This is a nifty small feature . Tools like ps
,df
,du
, ls
,ps
,size
,prstat
and swap
have now the option --scale
. This makes the output of those tools much more readable.
Let’s assume we have a directory with three files of varying size:
root@solaris:~# ls -l
total 1991695
-rw------- 1 root root 536440912 März 1 19:26 narf
-rw------- 1 root root 1048576 März 1 19:10 testfile
-rw------- 1 root root 536870912 März 1 19:14 testfile2
This is a little cumbersome to read despite the experienced admin will recognize at least two numbers. The --scale
command allows me to control how the output is scaled in a more human readable format.
Let’s at first use a scaling factor of 1024. Values are scaled by dividing by 1024. how often is controlled by the min
i have put in front of the 1024. I will later explain the impact off this value.
root@solaris:~# ls -l --scale=min,1024
total 2215977
-rw------- 1 root root 569M März 1 19:31 narf
-rw------- 1 root root 1024K März 1 19:10 testfile
-rw------- 1 root root 512M März 1 19:14 testfile2
Of course you could scale with a factor of 1000 as well.
root@solaris:~# ls -l --scale=min,1000
total 2215977
-rw------- 1 root root 596M März 1 19:31 narf
-rw------- 1 root root 1048K März 1 19:10 testfile
-rw------- 1 root root 537M März 1 19:14 testfile2
If you chose binary scaling, the Unit will be appended with an “i” to make clear that we are talking about Mebibyte oder Kibibyte.
root@solaris:~# ls -l --scale=min,binary
total 2215977
-rw------- 1 root root 569Mi März 1 19:31 narf
-rw------- 1 root root 1024Ki März 1 19:10 testfile
-rw------- 1 root root 512Mi März 1 19:14 testfile2
The unit to which the the numbers are scaled by dividing with the scale factor is set with min
, max
or minwide
.
Min will scale each value to the minimal unit that allows the system to display a value in 5 digits.
root@solaris:~# ls -l --scale=min
total 2215977
-rw------- 1 root root 569M März 1 19:31 narf
-rw------- 1 root root 1024K März 1 19:10 testfile
-rw------- 1 root root 512M März 1 19:14 testfile2
max
uses the highest unit that allows the to have a nonzero value in front of a possible decimal. It tries to make the number in front of the unit as low as possible and tries to fit in 5 digits.
root@solaris:~# ls -l --scale=max
total 2215977
-rw------- 1 root root 569M März 1 19:31 narf
-rw------- 1 root root 1M März 1 19:10 testfile
-rw------- 1 root root 512M März 1 19:14 testfile2
minwide
is similar to min
,except that it tries to fit the the size output in eight instead of five columns
root@solaris:~# ls -l --scale=minwide
total 2215977
-rw------- 1 root root 582461K März 1 19:31 narf
-rw------- 1 root root 1048576 März 1 19:10 testfile
-rw------- 1 root root 524288K März 1 19:14 testfile2
This is a nice demonstration of minimal scaling, as the size of testfile
fits in eight columns without scaling the value isn’t scaled at all.
You can use --scale
as well with prstat
root@solaris:~# prstat --scale=max,binary
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
963 root 181Mi 160Mi sleep 59 0 0:00:30 0,241% sstored/25
6 root 0Ki 0Ki sleep 99 -20 0:00:06 0,122% zpool-rpool/166
1480 root 13Mi 6Mi cpu0 59 0 0:00:00 0,024% prstat/1
du
is one additional tool that supports this option:
root@solaris:~# du --scale=max
3G .
root@solaris:~# du --scale=min
2782M .
root@solaris:~# du --scale=minwide
2849154K .
root@solaris:~# du --scale=min,1024
2782M .
root@solaris:~# du --scale=min,1000
2917M .