尝试学习如何使用 php 实现 cron 作业。
cron 的格式是这样的 /etc/crontab
* 13 * * * /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log
所以这应该每天运行 13 小时(下午 1 点)
我查看了服务的状态
sudo systemctl status crond.service -l
发现以下错误:
(/usr/bin/php) 错误 (getpwnam() 失败)
我使用 PHP 进行了此设置,脚本基本上是这样的:
$today = date('Y-m-d');
$user = 'db_user';
$password = 'db_password';
$host = '127.0.0.1'; //this is actually replaced with an address to another remote server
$port='3306';
$database='database_name';
exec('mysqldump --user='.$user.' --password='.$password.' --host='.$host.' --port='.$port.' '.$database.' > /db-bkup/db-'.$today.'.sql');
最终结果是将数据库转储到文件中:
db-2017-03-24.sql
有人可以帮助我吗?
我花时间阅读并尝试实现这一点。我发现这篇文章很有帮助
由于作业失败,整个事情甚至没有在/tmp
.
更新
添加了一个简单的 cron 来回显“Hello World”;
*/2 * * * * 根 /scripts/test.php &>/tmp/mycrontest.log
这次我生成了一个带有 Permission Denied 的日志。我想那是因为我从未应用过 /usr/bin/php
这是从原始错误向前迈出的一步。
感谢上面的Conn Warwicker协助解决问题:
我从我的 cron 作业中省略了用户root 。