Cron 作业未运行/未成功?

Cron 作业未运行/未成功?

我设置了几个cron工作来维护远程数据库的本地副本。

第一个从远程计算机下载最新版本的数据库,该计算机每天运行并且工作正常。

第二个导入下载的数据,但它不起作用。

这项工作只是一个简单的 shell 脚本:

#!/bin/bash
mysql -u root -mypass -h localhost my_db < my_db.sql

cron 任务的设置如下:

0 8 * * * bash /home/lampadmin/cron/my_db.sh

如果我手动运行 shell 脚本,它工作正常。

我该怎么做才能通过 cron 找出它不工作的原因?

答案1

删除 bash,只需执行以下操作即可:

0 8 * * * /home/lampadmin/cron/my_db.sh

还要检查 my_db.sh 是否可执行。

chmod a+x /home/lampadmin/cron/my_db.sh

答案2

我对于让该文件对所有人都可执行有一种不好的预感。我会尝试这个接近你的第一个想法。

0 8 * * * /bin/bash /home/lampadmin/cron/my_db.sh

使用完整路径运行命令始终是一个好主意。否则你永远不知道你会得到什么。因此,您还应该提供my_db.sql文件中的完整路径my_db.sh

但除此之外,我对通过命令行设置密码有更糟糕的感觉。ps当脚本运行时,每个用户都可以看到 root 密码。

.my.cnf我建议通过这样的文件设置密码

[mysql]
user=root
password=rootpassword

在相应用户的主目录中。如果此方法对于您的要求来说太笼统,您可以将其放入额外的文件中/home/lampadmin/cron/my.cnf并使用此设置

/usr/bin/mysql --defaults-extra-file=/home/lampadin/cron/my.cnf -h localhost mydb < /pathto/my_db.sql

在任何情况下,只有用户才能访问您的my.cnf密码,以保护您的密码。你应该使用

chmod go-rwx my.cnf

为了达成这个。

相关内容