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