An Example of Parallel Processing

This post shows how to use parallel processing to get a CPU intensive job done faster in Unix/Linux. By splitting a large task into several parts, it is quite easy to give each part to a separate CPU, and complete the task many times faster than it would on a single processor.

These days, even small PCs and other devices often come equipped with several CPU cores. But some tasks will use only one core, sometimes using 100% of it, while other cores stand by idle. Sometimes this is a waste of resources. Continue reading

bc Rounding Errors

There must be a few people out there who still use bc as a desk calculator. bc is a simple application that comes as standard on most unix and linux systems. It’s nicer to use than a graphical calculator app: less fussy, no mouse needed and you can see what you have typed.

bc Gets it Wrong

A recent mix-up with financial calculations lead me to discover that – unbelievably – bc was getting its sums wrong. This post explains the problem. Continue reading

SSH Authentication and Directory Permissions

Running sshd in the foreground can be an effective way to debug ssh problems. In the following example, a user was unable to access a remote system using ssh keys. Running sshd in debug mode provided a quick resolution. Both source and target systems were Solaris, but the same method applies equally to Linux. Continue reading

Huge Apache Error Log from Solaris 10 LicenseWatcher

Working on a client site recently, I noticed their Apache error log had grown to 32 Gb in size. The file was being written to at a rate of a quarter of a million lines a day, propelled by various cron jobs set up to run every 5 minutes. A PHP reconfiguration fixed the problem.

The box was a Solaris 10 system running “License Watcher“, and those messages was all coming from the License Watcher php code. Not genuine errors, just repeated diagnostics. I edited /usr/local/php/lib/php.ini and changed this line Continue reading

Check Free Memory on an LDOM Server

How to find the memory on a Solaris system hosting primary and guest LDOMs

For capacity planning, it is useful to know how much free resource is available on a given LDOM server. That is, a “parent” system hosting several guest LDOMs. For example, if you want to know how many more LDOM’s the server could support. Continue reading

Recovering Data from a Corrupted SD Card

SD cards are used in digital cameras, phones and other devices, where their speed and large capacity makes them useful for storing pictures, video and other voluminous multi-media items. It is quite common these days for a mobile device to contain a 16 Gb or 32 Gb SD card.

With the devices being so mobile, backups are easily overlooked. And it is quite easy for an SD card to become corrupted, for example if the card is removed while the device is on, or the battery is taken out while a video is being shot.

I was given a corrupted 16 Gb card and asked to recover the files, if possible. The rest of this post explains how the data was safely restored using simple Linux tools. Continue reading

vi: Terminal too wide

Workaround for vi “Terminal too wide” problem

Use the Unix command line and sooner or later, you will be editing text files. One of the best ways of doing that is with the vi editor. It is available as standard on almost every unix/linux system. While other editors are available (ed, emacs, vim, etc), vi is quick and convenient. It offers a good balance between usability and ubiquity.

This article offers a workaround for the annoying “Terminal too wide” problem encountered by vi users on Solaris.

Vi was originally written for screens (terminals) which were 80 characters wide. In a modern windowing environment, the terminal has been replaced by virtual terminal apps – xterm, lterm, Terminal and many others. The width of a virtual terminal depends on how much big you make the window. On a large screen it could easily be 200 characters or more. Continue reading

Sorting with "-k" on Unix and Linux

The “sort” command on Solaris has a “-k” switch for sorting by a particular field. For example, “sort -k 2” will sort by the second field on each line of input. Parts of fields can be further specified with “-k n.m“, says the man page.

For example, “sort -k 2.3” should sort by the second field, starting with the third character in that field. But the man page isn’t the clearest, and getting the “-k x.y” notation to work is tricky. Tricky until you realize it never works you also supply the “-b” argument. Same on Linux. Continue reading