以下在命令提示符下按预期工作。但它不适用于 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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/bin/sh: -c: line 0: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
某些字符是否需要在 cron 中转义?还是 cron 中的 subshell 有问题?
它不起作用的原因cron
是不是bash
。使用方括号创建子shell 是bash 语法的一部分。一个线索是在错误消息的第一个“词”中。
反引号可以用来创建一个子shell,只是你已经在你的子shell中使用了反引号,所以你不能再次使用它们。
正如其他人已经说过的,编写一个脚本并从 cron 调用它。