Linux CPU usage and montioring using shell memcache and jquery

Recently in a project where the application was deployed across multiple servers, the Client QA as well as Support Team wanted a better monitoring of all the servers in the production. It was too much to provide everybody with shell access and ask them to monitor using top. Well after a lot of digging through the wonderful search index of Google. And with insights from Paul Colby vide his article Calculating CPU Usage from /proc/stat, and various comments of Memcache usage through telnet along with the /dev/tcp socket connections it was just a matter of using some nifty shell processing before I could store each machine cpu values, loadavg, and running tasks as a json encoded string into memcache on one of the hosts with hostname as the key.
Continue reading “Linux CPU usage and montioring using shell memcache and jquery”

The famous spinning cursor in bash

Displaying some sort of activity, the hangover from working continuosly on slow desktops are already deep into developers. Well we cannot complain, the users who are our clients or the clients of our clients always want everything very fast. And if we dont tell them about a process being running in the background, they are sure to kick the button again, and again and again. Hence the need to show activity progress, or even a small activity to remind that the system is busy processing some junk, the progress or throbbers cannot be avoided. A similar progress with message for a long running non interactive bash script was needed for me, since we were depending a lot on build kits written in bash.

The ESC sequence is to hide and display the bash cursor. Since the whole script is self running, and do not need any feedback, the cursor is better not displayed. The function at line 7, showProgress will output a message, and show the spinning cursor with full cycle in a second. stopProgess will make sure the progress display is stopped by removing the file touched by it. Only limitiation is that this can be used only in scripts that will run single instance at a time, even on a multi user system.

I prefer writing really temporary files to /dev/shm/ since that reduces harddisk wear and tear, and is real fast being on ram. While digging for something else at my home, accidentally I completed this bit of snippet. Well thought to share the same. Poor at explaining things so please excuse.

MySQL: Optimize all tables; Run using cron

I was looking for a optimize table script and finally stumbled upon some code which could be salvaged into a shell script. The full code is reproduced here for future reference.

#-- I usually add the root username and password to the ~/.my.cnf
MYSQL_CMD='/usr/bin/mysql '
$MYSQL_CMD -e "SELECT concat('OPTIMIZE TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,';') as cmd FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql') AND Data_free > 10 AND NOT ENGINE='MEMORY' INTO OUTFILE '/tmp/cmd.sql'"
$MYSQL_CMD < /tmp/cmd.sql
rm -f /tmp/cmd.sql