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.
When Canadian food distributor George Weston Limited moved to Microsoft Office 365, it chose F5 Application Delivery Controllers to centrally manage user traffic to its Active Directory Federation Services (ADFS) servers.
The way corporations operate around mobile devices is currently shifting—employees are starting to use their own devices for business purposes, rather than company-owned devices. With no direct control of the endpoints, IT departments have generally had to prohibit this or risk insecure access inside the firewall. But as more mobile devices appear on the corporate network, mobile device management has become a key IT initiative.
- Exploits for dangerous network time protocol vulnerabilities can compromise systems
- Texas Instruments builds an alternative energy for the Internet of Things
- Google Android One phones to sell in three more Asian countries
- Tor warns of possible disruption of network through server seizures
- Sony looking for ways to distribute 'The Interview' online
- Sony hack was 'cyber vandalism,' not act of war, says Obama
- US rejects North Korea offer to investigate Sony hack, reaches out to China
- North Korea wants joint probe into Sony hack, warns of consequences if not
- Staples says hack may have compromised 1 million-plus payment cards
- Judge questions evidence on whether NSA spying is too broad
- Twitter parody of North Korea's mouthpiece not afraid to crow over Sony's capitulation
- Three ways enterprise software is changing
- Google may launch Android Auto, making your car a big mobile device
- After FBI blames North Korea for Sony attack, now what?
- T-Mobile to pay $90M for unauthorized charges on customers' bills