Cron 错误 getpwnam() 因数据库备份失败

Cron 错误 getpwnam() 因数据库备份失败

尝试学习如何使用 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 状态 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

这次我生成了一条“权限被拒绝”的日志。我推测这是因为我从未应用过 /usr/bin/php

这是从最初的错误向前迈出的一步。

答案1

谢谢康恩·沃里克以上帮助解决问题:

我省略了用户来自我的 cron 作业。

 * 13 * * * root /usr/bin/php /var/www/path/to/file/database-bkup-test.php &>/tmp/mycroncommand.log

相关内容