tee it up

January 26th, 2006

When writing shell scripts I often need to both run the scripts manually during the day and also have them run via cron at night. I frequently log the output of the shell script to a file to reference later and email the log file.

Referred to as a pipe fitting program in its man page, tee will allow you to copy STDIN to STDOUT and display it to both the screen and a file. I’ve included a short script as an example:

#!/bin/sh
echo "Hello World!" | tee file.log

You’ll find the output Hello World! on both the terminal and in file.log. You can also tell tee to append to the file with the (-a) option. Without it you would continually write over the file with the latest output you wanted to log.

It took me a while to discover the tee command but I’ve been able to put it to great use when writing scripts that I’ll run both manually and from cron.


The proper way to edit your crontab

December 22nd, 2005

Time to break my habit of using crontab -e. As we all know this opens our default EDITOR and allows us to quickly edit and save our cron jobs. This is a huge risk. If, for example, you find yourself logged in on a strange system and EDITOR is set to something you don’t know, you’re much more at risk to accidentally erase your crontab.

The proper way to edit your crontab is as follows:

crontab -l > /tmp/mycrontab
vi /tmp/mycrontab
(make your changes)
crontab /tmp/mycrontab

Feel free to put the mycrontab file in your home directory (I just used /tmp as an example).

By following the above process you are creating a backup of your crontab and you have full control of the editor you will use to make your changes. You’ll thank me the next time you mistype and enter crontab -r (-r: Remove the current crontab) instead of the crontab -e you thought you typed.