One-liner: how to count the total amount of specific lines in several files

Let’s calculate the amount of lines, containing the word “extended” in */*.conf files:

egrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'  

BTW, using awk alone is slower:

time awk 'BEGIN {sum=0;}/extended/{sum++} END {print sum}' */*.conf

real	0m0.94s
user	0m0.91s
sys	0m0.01s

time egrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'

real	0m0.13s
user	0m0.10s
sys	0m0.02s

fgrep is slower than egrep:

time fgrep -c extended */*.conf | 
awk 'BEGIN {FS=":"; sum=0;}{sum +=$2} END {print sum}'

real	0m0.21s
user	0m0.17s
sys	0m0.03s


> traceroute -m 100
traceroute: Warning: Multiple interfaces found; using x.x.x.x @ net0
traceroute to (, 30 hops max, 40 byte packets
. . .
8 (  122.807 ms  150.309 ms  168.517 ms
9 (  160.820 ms  164.675 ms  157.556 ms
10  * * *
11  Episode.IV (  188.004 ms  188.078 ms  277.575 ms
12  A.NEW.HOPE (  212.980 ms  182.796 ms  217.315 ms
13 (  208.230 ms  231.501 ms  187.249 ms
14  Rebel.spaceships (  223.330 ms  185.769 ms  231.825 ms
15  striking.from.a.hidden.base (  222.702 ms  199.810 ms  227.345 ms
16  have.won.their.first.victory (  186.517 ms  221.058 ms  201.745 ms
17  against.the.evil.Galactic.Empire (  185.988 ms  216.445 ms  186.553 ms
Continue reading “traceroute”

One-liners: simple ASA log parsers

Sometimes you do not need a detailed log-analysis but several simple one-liners that you can adjust without too much thinking how it works, what you did last time, etc. The examples below are absolutely NOT optimal, but rather modular for easy line-editing.

Continue reading “One-liners: simple ASA log parsers”

What directory PHP is busy with

The file “cwd” under /proc/pid is a symbolic link to the “current working directory”:

for i in `ps -ef | awk ‘/php/{print $2}’`
ls -l /proc/${i}/cwd

The result is:

lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:40 /proc/11544/cwd -> /home/alekz/public_html/blog/wp
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:40 /proc/11764/cwd -> /home/alekz/public_html/
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:40 /proc/12574/cwd -> /home/alekz/public_html/
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:40 /proc/13081/cwd -> /home/alekz/public_html/
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:45 /proc/15053/cwd -> /home/alekz/public_html/blog/wp
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:45 /proc/15056/cwd -> /home/alekz/public_html/blog/wp
lrwxrwxrwx 1 alekz alekz 0 Янв 25 02:49 /proc/15696/cwd -> /home/alekz/public_html/blog/wp/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage

Of course, you can use any other process name instead of php.

And here’s a “dynamic” version:
Continue reading “What directory PHP is busy with”

dcpumon and dcpumonview

Found another cPanel application which you can safely turn off in order to safe some bytes and cycles.

By default dcpumon runs every 5 min to log CPU usage (“top” output) :

# crontab -l | fgrep cpu
*/5 * * * * /usr/local/cpanel/bin/dcpumon >/dev/null 2>&1

and stores the data into /var/log/dcpumon

You can view the report with dcpumonview command:

# /usr/local/cpanel/bin/dcpumonview
|User |Domain |CPU%|MEM%|MySQL#|
|alekz | |17.72|37.07|0.3 |
| Top Process | 27.8 | /usr/bin/php |
| Top Process | 14.2 | /usr/bin/php |
| Top Process | 12.3 | /usr/bin/php |
|mysql | |11.47|3.05|0.0 |
| Top Process | 11.7 | /usr/sbin/mysqld –basedir/ –datadir/var/lib/mysql –usermysql –pid-file/var/lib/mysql/ –skip-external-locking |

Firefox and places.sqlite tricks

Sometimes you need to remotely get your bookmarks, history or check the top-10 sites, etc. Here’s some neat tricks to get the info from the Firefox Places file called places.sqlite, which is an SQLite database with the following tables (see also the picture):
Continue reading “Firefox and places.sqlite tricks”


MAC (Monkey’s Audio Converter) for Windows can be downloaded from But what about a UNIX version? Two years ago v3.99 Update 4 Build 5 was released but then the development stopped because of some contradictory licensing reasons. That means that MAC for UNIX is not maintained anymore. Fortunately, the old version still works. I compiled it under Solaris 11 x86 and use it for SqueezeCenter.

The source tar file is attached to the post: mac-399-u4-b5.tgz (MD5)

Some notes.

  • To check the MD5 digest:
    % md5sum -c mac-3.99-u4-b5.tgz.md5
    mac-3.99-u4-b5.tgz: OK
  • Always use –prefix=/usr/local (or any other directory in which you keep non-standard files) configuration parameter, because by default the prefix is set to /usr. You might overwrite Solaris file /usr/bin/mac (message authentication code):
    % ./configure –prefix=/usr/local
  • If you are going to use –enable-assembly=yes option (you need yasm to compile assembler code) under Solaris change “sh” to “bash” in src/MACLib/Assembly/Makefile in the following line (line 214 in my case):
    STRIP_FPIC = sh $(top_srcdir)/

    This is what the line should look like:

    STRIP_FPIC = bash $(top_srcdir)/
  • There is already a program /bin/mac (see above). If you don’t want to use the full path to the MAC, simply rename the latter:
    # mv /usr/local/bin/mac /usr/local/bin/MAC