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”
- FTSEM Specialist - SEM AnalystNSW
- FTClient Service Director - Search: SEO & PPCNSW
- FTStrategic Account Manager - Google AnalyticsNSW
- FTDigital Performance Manager - MediaNSW
- FTAccount Manager - DataNSW
- FTCampaign Managers | Programmatic / RTB | Display + Video | Trading desk |SydneyNSW
- FTData Product SpecialistNSW
In July 2013, VCE commissioned Forrester Consulting to conduct a Total Economic Impact™ (TEI) study and examine the potential return on investment (ROI) enterprises may realize by re-platforming SAP on VCE™ through factory-integrated systems called VblockTM Systems. The purpose of this study is to provide readers with a framework to evaluate the potential financial impact on their organization of implementing a VCE converged infrastructure solution for SAP.
- ITU gives public more access to talks on future of the Internet
- GlobalFoundries to take over IBM's semiconductor unit in $1.3 billion deal
- How to control trolls with Google+
- Apple's iCloud targeted in man-in-the-middle attack in China
- 3D-printed gun maker draws jail term in Japan
- iRobot CEO decries the slow advance of robotics
- Aussie university teams take to the ocean for robot challenge
- Enterprise must shake core to be innovative: Telstra
- NASA's Mars orbiters survive comet flyby and sneak once-in-a-lifetime peek
- China again blames US for disrupted cybersecurity talks
- Former AAPT CEO joins Nextgen Networks
- Is your Ethernet fast enough? Four new speeds are in the works
- Dropbox used for convincing phishing attack
- IBM 'major announcement' points to deal on chip manufacturing
- NBN: Is your suburb getting FTTN?