Friday, April 20, 2012

Why Unix is better than Windows

Ever tried to fix a bug on a Windows system?

Like some program you need to run crashes out of the blue without leaving any notice why it did?

I happened to come across this a few times now, and I must say, I like Unix.

Because if this happens to me on Windows, I usually end up spending a lot of my time arguing with some guy at some support-hotline. Or send e-mails with crash-dumps and tons of other stuff. Or have them visit me.

And normally this costs a whole brick-load of Money. Unless the problem is actually a bug and a "luser-issue".

Under Unix this is slightly different.
If a program crashes I tend to use, they normally leave a crash dump by default. Or at least entries in some log-files.

If not, the program can be started with a verbose option. This should finally give a lead what went wrong.

An example: I had problems with one of my servers. This particular system was running an IRC-server (inspircd) and this program was updated recently. Only a minor change, nothing out of the ordinary.

At least it looked like one.

The service was unable to be started after this update. And for added fun, there where no log-entries, or crash dumps.

It just failed silently.

Until the debug mode was switched on. This revealed a missing module.

Closer examination of the package supplied by my distributions showed an option to enable this module. But the flag which should turn this option on, was never read by the package.

Creating my own package, while using the same source-code, I added the missing flags, and everything worked like a charm.

Conclusion: bug-report + patch went out to the maintainer of the package.

Try this with Windows.

Updates on Unix vs Updates on Windows

I like Windows. I really do. It's easy to use, you install stuff rather fast...

If you have the permissions and payed the bills.

Okay, honestly I hate Windows. Partly this is based on my daily routine, working with it and maintaining a few hundred of these damn things.
If you have to do everything by hand, and on every single system you will go mad.

Fortunately there are some tools out there making your life a little easier

First: WSUS, or Windows Server Update Service
This tool-set works as a distribution-point for updates supplied by Microsoft.
You can update a lot of their stuff, but nothing else.

Second: System Center Suite (SCCM, SCOM, SCVMM, DPM & SCSM)
These are System Center Configuration Manager, basically the same as WSUS, but with more options and support for third party stuff.
System Center Operation Manager, for managing permissions and monitoring systems and stuff.
System Center Virtual Machine Manager, for managing your Hyper-V systems, no support for VMWare, or more precisely no working support.
Data Protection Manager, for managing file-servers, local-shares, cloud-storage and backups.
And finally System Center Service Manager, which sounds great, but I am not sure what it actually does.

With these you have the opportunity to do a little bit of management (WSUS) or pay a huge bunch of money to manage every fart of someone, but with about 1 million years of learning how to do so.

So I am stuck with this huge truckload of software, and I don't really want to use it, as it's far to complex for keeping all your software up to date. But I have to go all-in, or stick to WSUS and keep updating all the other programs by hand.

When I want to update the Unix systems I have to work with, this whole procedure gets a lot easier.
The steps are basically:
  1. ssh to the monitoring system
  2. start a .sh script
  3. drink coffee
What the script does is the following stepps:
  1. query DB for unix-hosts
  2. ssh to the host and execute local update
  3. go to 1 until there are no systems left
  4. send e-mail with summary
Until something goes wrong.
Or actually the updates are nearly always a success, at least more often than with Windows.