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.
In the current market, there is an increasing demand for unbiased information about Enterprise Mobility Management (EMM) solutions. This white paper focuses on solutions that are anticipated to have an important role in Enterprise Mobility Management. An overview of features has been created to enable a better understanding and comparison of capabilities.
Security professionals need to know how to plug the security gap from Layers 3 to 7, and protect against multi-layer attacks, with a full proxy security architecture.
- The Upload: Your tech news briefing for Thursday, July 2
- Chicago taxes cloud and streaming services
- Google's A.I. system gets its snark from humans
- Xiaomi faces challenge to reach sales goal, amid slowing smartphone growth
- Curtin Uni partners with industry for 'Internet of Everything' research
- After Uber ruling, pressure mounts on companies to reclassify contractors
- Xbox One, PS4 sales in China could be disappointing
- Wi-Fi password-sharing feature in Windows 10 raises security concerns
- In Japan, Uber dons white gloves to battle an elegant rival
- Telstra launches its telemedicine service
- Monitoring terrorists okay, targeted advertising not: Survey
- HP makes it official, files to spin off enterprise division
- PayPal to acquire money transfer service Xoom for $US890 million
- iiNet to deliver cloud services to SA government agencies
- DEA agent pleads guilty to accepting Silk Road funds