On reading documentation when programs don't work as expected
No matter how often you use UNIX tools, once in a while you get caught out trying to put everything together. This happened this morning while I was setting up a cronjob and it didn't work as expected.
This happened to me earlier this week when I tried to setup a quick cron script to dump the contents of an SQL table every day. I had set it up as follows:
37 3 * * * /usr/lib/postgresql/8.2/bin/pg_dump db -U backup -t table | bzip2 - > /backups/table-monitoring/`date +%Y%m%d`.table.sql.bz2
I checked the next day that things were working and found the directory empty. Interesting.
After a quick check of my email I found the culprit:
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"' /bin/sh: -c: line 1: syntax error: unexpected end of file
This is where things got complicated. Had I checked crontab(5) this story would probably have ended here. I didn't.
After a couple of attempts at escaping this command line to make things work I ended up with the following:
backup:~% ls /backups/table-monitoring | head -n 3 `date \+%Y%m%d`.table.sql.bz2 date +%Y%m%d.table.sql.bz2
Even more interesting...
Turns out the answer is quite simple. The man page has this to say about it:
The ‘‘sixth’’ field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell’s trailing "\".
Ooops. A quick change later, I end up with the following snippet:
37 3 * * * /usr/lib/postgresql/8.2/bin/pg_dump db -U backup -t table | bzip2 - > /backups/table-monitoring/`date +\%Y\%m\%d`.table.sql.bz2
I'm still wondering about the usefulness of the % to send data to the standard input as opposed to using standard pipes though.
Benefits based on Forrester Consulting Study “The Total Economic Impact of Converging SAP Landscapes on Vblock™ Systems”
The fact that digitalisation exists doesn’t mean it’s available and actionable. This paper explains why true integration is not possible with merely adequate technology. • Digitalisation improves user experience, availability and performance, processing power and decision-making • You owe it to yourself and your organization to go beyond “good enough” • Using a proven platform will mean improved business agility with the ability to establish new partnerships
- Microsoft to continue using Nokia brand on entry-level phones
- Usage alert compliance a priority as TCP code enforcement heads into year three
- Symantec donates $260k towards cyberbullying prevention
- Court delays NBN Co, Pipe Networks battle
- Adobe begins encrypting user data collected from Digital Editions app
- Apple: A pox on your house!
- In brief: Beanhunter acquires CoffeeJobs.com for undisclosed sum
- Amazon builds sales, but losses pile up
- In Pictures: Camels, Sleds, and Fishing Boats - 7 Wacky Google Street View Vehicles
- Apple Pay's next move could be phone-to-phone payments
- Oracle says state wanted to take 'unacceptable risk' with health care website transition
- Microsoft Q1 sales jump, but Nokia drags down earnings
- Canonical celebrates Cloud freedoms with new Ubuntu
- Apple and sapphire supplier strike deal to end partnership
- Collection of new cord cutting techs make it easier to snip that CATV tether