Why does console refuse to die?This post is result of my long addiction to console applications. Somehow, when I want to get a quick view of things on my system, I always turn to pipes and do something with them. In that process, I developed few of useful scripts for use within shell pipes, and I would like to introduce my readership to them.
- It's because of pipes!
PostgreSQL database size
When I want to see size of all databases on my system or size of tables in one database I turn to pg_size. It's a short and sweet script which will do a little shell magic (take a look in it) and display size of all databases on system (without any options) or size of all tables in database and number of rows (when used like pg_size database_name) like this:dpavlin@llin:~$ pg_size dellstore2 | grep -v sql_ 4890624 customers 20000 3153920 orderlines 60350 2678784 cust_hist 60350 991232 products 10000 966656 orders 12000 450560 inventory 10000 8192 categories 16 0 reorder 0This is all nice and well, but doesn't really gives us the right overview, so move along for...
Nice console graphs
First, a caveat: this tools assumes that it will get number, space, and optional description. Output above seems to fit into this description, so let's try it:dpavlin@llin:~$ COLUMNS=80 pg_size dellstore2 | grep -v sql_ | sum.pl -h customers 20000 4776k OOOOOOOOOOOOOOOO 4776k orderlines 60350 3080k OOOOOOOOOO----------------- 7856k cust_hist 60350 2616k OOOOOOOOO--------------------------- 10M products 10000 968k OOO------------------------------------- 11M orders 12000 944k OOO---------------------------------------- 12M inventory 10000 440k O------------------------------------------- 12M categories 16 8192b --------------------------------------------- 12M reorder 0 0 --------------------------------------------- 12MThis gives us nice output: description (followed by number of rows from above output), and running total of size in human readable form (if you don't like it, remove -h flag and you will get raw numbers).
Let's take another example (if you are still reading this and not interested in PostgreSQL database size). Let's see how much traffic did pppd transfer over very slow GPRS link on 8-day vacation:
dpavlin@llin:~$ grep 'pppd.*: Sent' /var/log/messages | awk '{ print $7 + $10 " " $1 " " $2 }' | sum.pl -h May 5 0 0 May 5 39k 39k May 5 7512k OO 7551k May 6 6352b -- 7558k May 6 20k -- 7579k May 6 1183k --- 8762k May 8 6869k OO--- 15M May 8 70k ----- 15M May 9 3596k O------ 18M May 9 1998k ------- 20M May 10 32M OOOOOOOOOOOO-------- 53M May 10 13k -------------------- 53M May 11 44M OOOOOOOOOOOOOOOOO-------------------- 98M May 12 12M OOOO-------------------------------------- 111M May 13 7120k OO------------------------------------------- 118M May 13 20M OOOOOOO---------------------------------------------- 139MMuch more interesting! A long time ago, I had a bunch of quick one-lines which used sum.pl to produce output from various other system counters, but somehow it got lost.
As I get only few comments on my blog, if you find this useful, leave one. I have few other examples, like the one which shows top 5 memory eaters on my system:
dpavlin@llin:~$ ps v | awk '{ print $8 " " $9 " " $10 }' | sort -rn | ~/private/perl/sum.pl | head -5 # RSS %MEM COMMAND 10.6 /usr/lib/iceweasel/firefox-bin 165092 OOOOOOOOOOOOOO 165092 4.3 perl 67240 OOOOOO--------------- 232332 0.5 awesome 8504 --------------------- 240836 0.4 irssi 6632 ---------------------- 247468 0.3 vi 5888 ---------------------- 253356but, if this is not interested to my readership, tell me so, and I will stop spamming your already full RSS reader with console output! :-)