Here are a few (mostly) Solaris tips and tricks I have found useful and wanted to keep a note of.
This provides similar info to top on Linux boxes – you can run it as plain old prstat, or give it some options. I like prstat -a as it reports on both processes and users. As with all of these commands, the man pages have further details.
Not just a Solaris command, but this is very useful on any *NIX box – I frequently use it to translate the output from the previous command in to something that can be undertood by the next one, for example:
find . -type f -name *.txt | xargs ls -alrt
Will translate and pass the output of the “find” command to ls in a way that ls understands.
I use the pargs command when I need to get more information on a running process than the Solaris ps utility will give (there’s no -v option) if they have a lot of arguments.
Call pargs with the PID of your choice, and it will display a nice list of each argument that the process was started with, for example:
> pargs 16446
16446: /usr/jdk/jdk1.6.0/jre/bin/java com.MyJavaProgram
pargs can also display all of this info on one line with the -l option (useful for scripting), and if you call it with -e it also displays all of the Environment variables too.
Simply pass it a PID and it will tell you the current working directory for that process.
When writing a shell script that queries running processes, I often find my own script showing up in the results – for instance a script that does a “ps -eaf | grep MyProcessName” may pick up the java process I’m after (the running instance of “./MyProcessName“) and the grep process-check itself (as in the “ps -eaf | grep MyProcessname“).
A handy way to avoid this is by changing your search criteria to “grep [M]yProcessName” instead. Grep interprets (and effectively ignores) the square brackets, with the result that your grep query no longer matches its own search 🙂
I will add more when I think of them, if you have any good ones then please post them!