我在根目录下运行的crontab作业很少,但这给我带来了一些问题 . 例如,在该cron作业的过程中创建的所有文件夹都在用户root和组root下 . 如何让它在用户www-data和组www-data下运行,所以当我从我的网站运行脚本时,我可以操作那些文件夹和文件?
我的服务器在Ubuntu上运行 .
当前的crontab作业是:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
5 回答
不是创建以root用户身份运行的crontab,而是为要运行脚本的用户创建crontab . 在您的情况下,
crontab -u www-data -e
将编辑www-data用户的crontab . 只需将完整的命令放在那里,然后从root用户的crontab中删除它 .编辑:请注意,此方法不适用于crontab -e,但只有在直接编辑/ etc / crontab时才有效 . 否则,您可能会收到类似
/bin/sh: www-data: command not found
的错误就在程序名称之前:
由于您运行的是Ubuntu,因此您的系统crontab位于
/etc/crontab
.作为root用户(或使用sudo),您只需编辑此文件并指定应运行此命令的用户 . 以下是系统crontab中条目的格式以及如何输入命令:
当然,应该设置php脚本和日志文件的权限,以便
www-data
用户可以访问它们 .迈克的建议听起来像"right way" . 我遇到了这个线程想要指定用户在重启时运行
vncserver
并希望将我所有的cron作业保存在一个地方 .我收到了VNC cron的以下错误:
就我而言,我能够使用
sudo
来指定运行任务的人 .您也可以尝试使用
runuser
(以root身份)以不同的用户身份运行命令另见:
man runuser