我有一个小的 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/