mysql - 作为 cronjob 运行时,脚本似乎需要更多时间

标签 mysql linux bash cron backup

我有一个小的 bash 脚本来备份一些 MySQL 数据库。该脚本使用 mysqldump 从 MySQL 转储数据库,然后将压缩的转储 rsync 到 LAN 上的另一台服务器。

当我直接从命令行运行脚本时,执行时间大约为 2-3 分钟。

我将相同的 bash 脚本添加到用户 root 的 crontab 中。该 cronjob 每天执行 3 次。我的印象是,脚本的执行时间要长得多(我猜最多一个小时)。

有什么方法可以调试幕后发生的事情吗?我想知道为什么执行要花这么多时间。

crontab 条目如下所示:

* 0,8,16 * * * /opt/maintenance/backup-databases.sh

最佳答案

如果上面给出的 crontab 语法是您实际使用的语法,那么您的 cronjob 不是每天执行三次,而是每天中午 12 点、上午 8 点和下午 4 点的每分钟执行一次。在给定时间内执行了 60 次处决。因此,根据脚本,它可能看起来运行了一个小时。

如果脚本运行 2-3 分钟,如果您在这段时间内使用 ps 命令,您应该会看到 2-3 个并行任务。您可能还想调查系统日志。 crond 每分钟启动的每个命令都应该有一个日志条目。

添加您的 cronjob 应该开始解决此问题的小时分钟(例如,如果您希望您的 cronjob 在每天上午 12 点以及上午 8 点和下午 4 点的第 12 分钟运行,则为 12):

12 0,8,16 * * * /opt/maintenance/backup-databases.sh

关于mysql - 作为 cronjob 运行时,脚本似乎需要更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24190480/

相关文章:

C# 如何传递sql变量

linux - 如何存储已经通过管道的命令的输出

mysql - 计算右表上的唯一 ID

mysql - 错误代码 1241 - 操作数应包含 1 列

MySql CONCAT 将数据添加到列的开头和结尾

python - 如何在 Ubuntu 上构建 PyQt5

Linux:保存更改文件时自动备份

arrays - Bash,将单词分割成字母并保存到数组

bash - 为什么通配符在 `sudo rm` 语句中不起作用?

bash - shell脚本,for循环,does循环等待执行命令进行迭代