以下从命令提示符按预期工作。 但它不能从cron工作。
mysqldumpslow <(tail -1000 `mysqladmin variables \ | grep slow_query_log_file | awk '{print $4}'`) \ | mail -s "slow log from `hostname` sorted by time" shantanu.oak`hostname`@gmail.com \ > /root/slow_succ.txt 2> /root/slow_err.txt
我得到以下错误:
/bin/sh: -c: line 0: syntax error near unexpected token `('
某些angular色是否需要在cron中逃脱? 或者是在cron中的子shell的问题?
我将扩展SvenW的说法,说明我将这个命令放在一个脚本中,原因有两个:
/root/bin/dump_mysql_tables_and_email_failure_report.sh 。 你可能不在其他pipe理者的环境中,但是这将提醒你一年后你在想什么。 🙂 cron转义问题的最简单的解决scheme:将命令放在它自己的shell脚本中,并从cron中调用这个脚本。
不工作的原因是cron不是bash 。 使用括号创build子shell是bash语法的一部分。 一个线索是在错误信息的第一个“单词”。
反引号可以创build一个子shell,除非你已经在你的子shell中使用了反引号,所以你不能再使用它们。
正如其他人已经说过,写一个脚本,并从cron调用。