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.
The following report, is based on a global survey of 706 IT and security professionals conducted in the United States, Canada, Germany, United Kingdom, Australia and New Zealand. The goal of the survey was to capture data on current attitudes and trends with mobile devices and IT security. This is the third survey on this topic and this report evaluates differences in responses to similar questions asked over the past two years.
Mobility has transformed the workplace. Laptops, smartphones and tablets not only enable an organization’s road warriors, but also create freedoms for all employees to stay connected whether at a conference, working from home, or even sitting in an airport terminal.
- GoogleX head talks moonshoots and need for failure
- At Google I/O, no huge surprises but a honing of critical products
- The NSA reportedly tried -- but failed -- to use a Stuxnet variant against North Korea
- Google to Cardboard developers: Keep it short and simple, and watch out for nausea
- Italy's architectural elite moves to rub out crowdsourcing design site
- Apple's tech support thrashes competition, whether in-store or over the phone
- New iOS tools help Android developers -- and Google
- Ericcson touts 5G mobile speeds
- Silk Road mastermind Ulbricht sentenced
- Google I/O 2015 in photos
- Intel works to end "lost" data center devices
- Microsoft throws open the doors for Cloud Foundry on Azure
- Don't blame free Windows 10 for PC business ills
- Google and Levi's team up on smart clothes
- Google bets that smart fabrics, gesture interfaces will replace fiddling on a tiny wearable touchscreen