- 1 Hyper-V 2012 R2: Pros and Cons of Generation 1 vs. Generation 2 VMs
- 2 Harnessing the Power of Hyper-V Network Virtual Switches
- 3 Working with SSH and Secure FTP Servers in Windows
- 4 Discover Windows 8's Hidden Server Features
- 5 Server Virtualization Customer Reviews: VMware, Hyper-V, XenServer and More
Why Cron Is Better Than a String Around Your Finger
I've occasionally found it useful to set up reminders to be emailed to myself on a regular basis. The most straightforward tool to use for this is cron with mail.Tip of the Trade: Mailing reminders to yourself is an easy way to remember something that easily slips your mind. Using Cron with mail is one way to facilitate this.
If you're sending directly from the command line, this command:
mail -s "Subject test" firstname.lastname@example.org
will not actually send the mail straight away. Instead, it will wait for you to type in the body of the email (which can be empty), and hit Ctrl-D twice. This may be a nuisance if you want an empty mail body and the message to be sent immediately. To mitigate that, you can try this:
mail -s "Subject test" email@example.com < /dev/null
If you're sending mail from cron, however, mail is running noninteractively, and it will behave slightly differently. On my (Debian stable) system, I don't need that redirect. Just using this line in the crontab:
59 8 * * 1-5 mail -s "Check backup ran" firstname.lastname@example.org
will send the mail at the appropriate time (0859 on Monday-Friday) with any empty body and without any intervention. However, this may vary between systems depending on exactly what program the mail command runs. On my system, this is /usr/bin/bsd-mail via a couple of soft links. If you do have problems, try adding the /dev/null input pipe as it appears on the command-line.
You may also want to redirect any output, which you can do by adding a redirect in the other direction:
59 8 * * 1-5 mail -s "Check backup ran" email@example.com > /dev/null
If you want to send an email that does have a body (e.g., the contents of a logfile), try:
15 4 * * * mail -s "Today's logs" firstname.lastname@example.org < /var/log/messages
In fact, if you want a regular log email, LogWatch is a better choice. But you can use this to create any mail body: Just write and save an appropriate file.