首页 > 解决方案 > AT 作业不会运行脚本,但如果粘贴到命令行,脚本会运行

问题描述

每当我在博客上发帖时,我都有这三个文件来通知我的电子邮件列表:“functionality_plugin.php”——包含 new_post_notify() 它创建——>

html 文件夹中的“run_email_processor.sh”,并在服务器上设置一个 AT 作业来运行它。—>

“run_email_processor.sh”触及服务器上的“email_processor.php”,该服务器使用 .sh 脚本中的参数构造电子邮件。它循环遍历将构建的电子邮件发送到每个地址的电子邮件列表。它还会在所有通过电子邮件发送的地址的同一目录中写入一个日志文件。

问题 AT 作业中的“run_email_processor.sh”通常包含以下内容:

#!/bin/bash
php -f ../var/www/html/wp-admin/email_processor.php arg1 arg2 arg3 arg4 arg5

如果我将内容粘贴到命令行并按 Enter 键,下游进程将按预期运行,发送所有电子邮件。

但是,如果我让 AT 作业执行脚本,则下游不会发生任何事情。

- AT 作业归 www-data:www-data 所有。

-email_processor.php 具有完整的权限集(用于测试)。

- AT 作业使用 atq 如下所示:

45      Tue Feb 25 13:30:00 2020 a www-data

- 使用 at -c 45,我可以查看 AT 作业的内容。

- 如上所述,如果我将内容复制/粘贴到命令行并运行它,一切都会按预期工作。

问题 为什么它在粘贴到命令行时有效,但从 AT 作业运行时无效???

标签: phpshat-command

解决方案


推荐阅读