What are useful commands, tools, or tricks that one would find on Solaris or OpenSolaris that aren't available on a typical Linux distribution?
Live Upgrade, which uses ZFS, creates writable snapshots of the operating system boot environment. With Live Upgrade, you can apply patches to a snapshot boot environment, then make that snapshot bootable. Upon the next reboot you get a patched OS environment. If you discover an issue with a patch, you can make the old snapshot bootable, reboot and you've backed out your changes. Its a pretty impressive solution to patching.
ZFS for the boot environment requires Solaris 10u6 or newer.
Also, Solaris Zones are pretty useful for application isolation. Obviously DTrace is very nice but RedHat is playing catchup with System Tap.
There are a number of features that Solaris has that Linux people wish they had. These include:
- ZFS: a filesystem that provides extreme flexibility, more than anything now available. Dynamic growth and reduction, snapshots, clones, and more - all available for free.
- DTrace: a debugger that can present you with details on how the kernel is working. Because of the way the kernels are written, DTrace is inherently much more flexible than SystemTap.
- SMF: yet another system to replace System V init scripts - but this one seems to have more people interested in it than any of the others.
- Zones and Containers: these are very flexible and have a lot of people excited: they provide for very flexible virtualization.
A few personal experiences...
I find Zones so easy and useful that I've simply created one for each service I am running at home - this way I can play and test things out without trashing it all. One of the zones is reverse proxy (Sun Web Java Proxy) so that I can play with different web servers easily.
Also I find the opencsw (previously known as Blastwave) packages hierarchy much better that anything yet seen - it always takes care of all the dependencies.
And - not to forget - binary compatibility. If an app is specified to need Linux with kernel 1.2.3_4 you better have it. On Solaris everything just works on future releases. For me this means upgrade when I want and no stress doing it.
Here are several interesting documents if you want to dig deeper: Less known Solaris features
Just for taste - Adminstration specials:
Live Upgrade Service Management Facility Resource Management pfiles fuser /export/home? /home? autofs? lockfs About cores and crashes CacheFS Jumpstart Enterprise Toolkit
(do I sound like an ad? sorry...)
Not necessarily hidden, but not obvious to Linux people are the process observation utilities: pstack, pmap, pflags, pfiles, pcred, psig, and pldd. Also prstat, which is more or less equivalent to top, but can also aggregate resource usage by user, zone, project, and display microstate accounting.
Look at projects and tasks for managing lots of applications in one OS instance.
I don't know of an equivalent to coreadm in Linux, though it's probably scattered around /proc somewhere.
Logadm is a bit obtuse but a good replacement for logrotate, and generally more powerful/flexible.
The arrangement of multi-level security (roles, authorizations, profiles) is different from Linux (SELinux contexts, AppArmor).
THe Image Packaging System (IPS) in OpenSolaris is pretty neat, but still under heavy development.
Also, +1 for LiveUpgrade. It's great, especially with ZFS snapshots.
Most of the GNU userland stuff you're used to is available, and probably installed by default on a sufficiently new Solaris.
Fast Reboot for OpenSolaris skips the normal HW Probing/BIOS POST/GRUB process on x86 hardware, allowing for reboots to occur in <10sec instead of ~2mins. Even supports booting alternate Boot Environments (e.g. reverting a botched upgrade).
ZFS and SMF are great, but a real pain with solaris is that package manager is ages behind its linux counterparts.
Also all utilities are different in subtle ways(killall anyone?), if you admin linux machines most of the time, switching to solaris means reading man pages again and again. A sucky "more" pager and always slightly misconfigured terminals make your life difficult.
Solaris Crash Analysis Tool - best tool to assist the analysis of Solaris kernel crash dumps.
Probably the biggest trap for new players, a typical Linux user might be tempted to run killall on a Solaris host;
System Administration Commands killall(1M) NAME killall - kill all active processes SYNOPSIS /usr/sbin/killall [signal] DESCRIPTION killall is used by shutdown(1M) to kill all active processes not directly related to the shutdown procedure. killall terminates all processes with open files so that the mounted file systems will be unbusied and can be unmounted. killall sends signal (see kill(1)) to the active processes. If no signal is specified, a default of 15 is used. The killall command can be run only by the super-user. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: ____________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Availability | SUNWcsu | |_____________________________|_____________________________| SEE ALSO kill(1), ps(1), fuser(1M), shutdown(1M), signal(3C), attri- butes(5) SunOS 5.10 Last change: 14 Sep 1992 1