以下操作与命令提示符预期的一样。但它不适用于cron。
mysqldumpslow <(tail -1000 `mysqladmin variables \
| grep slow_query_log_file | awk '{print $4}'`) \
| mail -s "slow log from `hostname` sorted by time" amar`hostname`@gmail.com \
> /root/slow_succ.txt 2> /root/slow_err.txt我得到以下错误:
/bin/sh: -c: line 0: syntax error near unexpected token `('某些字符需要在cron中转义吗?或者是cron中的subshell问题?
发布于 2012-03-09 12:11:43
我将详细介绍SvenW说的话,指出我将把这个命令放入脚本中,原因有两个:
/root/bin/dump_mysql_tables_and_email_failure_report.sh。您可能不在一个与其他管理员一起的环境中,但这将有助于提醒您,一年后您到底在想什么!:)发布于 2012-03-09 12:08:27
对于cron转义问题,最简单的解决方案是:将命令放入自己的shell脚本中,然后从cron调用这个脚本。
发布于 2012-03-09 12:17:24
它不能工作的原因是cron不是bash。使用括号创建子subshell是bash语法的一部分。这方面的线索在错误信息的第一个“单词”中。
Backticks可以创建一个子subshell,但您已经在您的子subshell中使用backticks了,所以您不能再使用它了。
正如其他人已经说过的,编写一个脚本并从cron调用它。
https://serverfault.com/questions/368009
复制相似问题