我在 crontab 中有一个 mysqldump 行,但它不起作用,它只生成 0 个字节的文件:
0 0 * * * mysqldump -u 'USERNAME' -p'PASSWORD' database| gzip -c > /mysqldumb/backupfile.`date +\%a`.sql.gz >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
这些重定向:
> /mysqldumb/backupfile.`date +\%a`.sql.gz >/dev/null
Run Code Online (Sandbox Code Playgroud)
从左到右执行并>/dev/null获胜。该工具写入/dev/null.
你所追求的文件最终是空的,因为这是如何>whatever工作的:它创建whatever文件(如果尚未创建)并截断为零大小。写入(或不写入)文件稍后发生。在您的情况下,没有任何内容写入backupfile.*.
如果要写入指定的文件,>/dev/null请从命令行中删除。
标题是
mysqldump制作 0 字节文件
这不是mysqldump创建空文件;gzip也不这样做。
的Cron运行壳,所述壳设置管道和重定向之前 mysqldump和gzip被执行。Shell 在此阶段创建并截断文件。
要查看它是如何工作的,请调用
nonexistent-command > new-file
Run Code Online (Sandbox Code Playgroud)
你会得到nonexistent-command: not found或等价的错误,仍然new-file会被创建。