Linux / Unix : Disk usage and identifying biggest files

When working as a systems administrator, you’ll always end up having to solve a file system full error in a hurry. Here are a few commands and hints to help you get out of it quickly on a UNIX like system.
Continue reading Linux / Unix : Disk usage and identifying biggest files

shell tip : identify broken symlinks

If you need to identify broken symlinks, you can do the following :
find -L . -type l

The -L options instructs find to follow symlinks when possible. Hence no “working symlink” will ever get returned as the targets won’t match -type l (meaning “file is a symlink”).

On the other hand, find will not be able to follow broken symlinks, so the information will be taken from the symlink itself and not from the non-existent or otherwise unreachable target. The -type l will then be a match and the broken symlink filename will be returned.

Broken symlinks

Case solved 😉

Thanks to the “Ferg’s Gaff” blog (especially the comments) for showing the way !

Unix : shell tips

I ran into this into the following article, “Learn 10 good UNIX usage habits“. This article is mainly common sense, but there are interesting points, such as :

  • avoid piping when you can, in order to save performance (the classical construct grep | wc to count the lines is useless as most versions of grep can count with grep -c)
  • use awk to “grep” on a specific field of a line with “… | awk ‘$1 == “XXX”‘ which is cool and I never use
  • the find | xargs construct (I’d add “find -print0 | xargs -0”, useful if your find brings back filenames with a space inside …)

All in all it is worth a reading, if only to refresh your memory.

Linux : Taking control of Virtual Terminals (VT) from command line

When you use Linux in text mode (as opposed to with an X server), you readily have access to multiple Virtual Terminals (aka VT for short) by hitting one of your <Alt-Fn> keys (if you are running a X server, you’ll need to hit <Ctrl-Alt-Fn> simultaneously).

This lets you access one of the VTs which are initialized at boot time, but won’t let you create new ones even if your kernel configuration would allow more VTs. Furthermore, what if you want to deal with VTs from a script ?

This post covers the 3 commands which will let you control your VTs from the command line or from a script.

Continue reading Linux : Taking control of Virtual Terminals (VT) from command line

sed : replacing a text in a file

To replace a text in a file, you can invoke sed as in the following example :

% cat file.txt | sed -e 's/text/replacement/g' > result.txt

This will change all the occurences of “text” to “replacement” in “file.txt” and output the result in “result.txt”

Note : As suggested by Matthias from adminlife in the comments, if you wanted to do “in place” text replacement (that is modify the file without a temporary file in between), you can do the following :

sed -i s/text/replacement/g file.txt

For more complicated text manipulations you might consider moving to Perl, but sometimes you don’t need the sledge-hammer 🙂