All My Brain Where stuff from my brain lands

April 25, 2011

Pulling libraries off Android phones

Filed under: Programming — Tags: , , , — Dennis @ 11:08 am

Well, have you ever wanted to pull a bunch of libraries off an Android phone? I bet you wish you could execute the command like this:

> adb pull /system/lib/*.so

Sorry. A no go. What about this then:

> for file in `adb ls /system/lib/`; do adb pull /system/lib/$file; done

Well, almost, but adb ls attaches the \n\r to the files. That wouldn’t be a problem if adb pull didn’t attach them to the names, so you have to get rid of the white space. This can work:

> for file in `adb ls /system/lib`; do adb pull `echo /system/lib/$file | tr -d '\n\r'`; done

Yea. Enjoy.

September 17, 2008

Terminal Spelling

Filed under: Miscellaneous — Tags: , , — Dennis @ 9:48 am

There are a miriad of dictionary tools on the Internet and for desktops. If you want, you can even pull out the dusty dictionary on your shelf. I find myself often wanting to use the dictionary not for a word definition, but to find out if I’m spelling a word correctly. Finding an online or desktop tool, loading it, and doing the search is bothersome at best.

Since most of the time I already have my terminal open, here is a shortcut I use to finding the correct spelling of a word. Just use aspell (installed on most Linux distributions by default.)

$ echo "aword" | aspell -a

Easy enough isn’t it. Now I put a simple script in my bin directory. Call it whatever you want.


echo "$1" | aspell -a

You may even be able to pull this off with an alias or something. In the mean time, just use your terminal to find the correct spelling of that hard to spell word and skip all the GUI utilities.

January 4, 2008

Keeping a process running

Have you ever had a process that dies on occasion? For me, I hate that situation and prefer to fix the software as opposed to have a monitor that restarts the process when it dies. I’ve run into a case lately however, that has defied me for a solution to my dying process. I think it may be a hardware related issue but haven’t tracked down the cause yet. Anyhow, I read an email on the Provo Linux User Group in which the poster referred to PS-Watcher. I thought I’d give it a try for kicks.

After installing the program and reading through the documentation, I found that PS-Watcher is really quite nice. In addition to monitoring the results of the ps command, you can add custom actions that occur at the beginning or ending of the monitor cycle ($PROLOG and $EPILOG). You can also customize actions to be taken based on the number of processes, memory size, and a few other useful metrics.

For most situations where you want to monitor a process and take action, I think PS-Watcher will probably do the job nicely. After all this however, I decided what I really wanted was a little script that did a custom restart of my particular web server when the test URL wasn’t functioning properly. I decided to simply run it on a scheduled interval with cron. I’ve placed the script below for all to glean information from or make fun of as appropriate. Feel free to provide some additional tips as I don’t claim to be a “Bash Jedi Master”. The following script sends a request to the web server and parses the response for a string that lets us know the server is working properly.


user="<the user my process is running under>"
port="<the port>"
okresp="^OK$" # I configured a test URL that returns OK if the server is up and running right.

# make a simple HTTP request to send
req="GET /lbuptest HTPP/1.0

# send it using netcat
resp=$(echo "$req" | nc localhost $port)
# test for the ok string
echo "$resp" | grep $okresp 2>&1 >> /dev/null && ok="1"

# you could really place whatever actions you want here.
if [[ $ok != "1" ]]; then
/etc/init.d/<my process init script> restart

The process I’m having trouble with is a TurboGears web application. I don’t think this is a Python problem however. Like I mentioned before, it only happens on this one server so I think I’ve got a hardware problem. Either way, if you found this page searching for TurboGears information, you might as well be interested in my TurboGears Init Scripts.

Powered by WordPress

%d bloggers like this: