Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过cron作业-PHP时未执行Bash命令_Php_Bash_Ubuntu_Cron_Libnotify - Fatal编程技术网

通过cron作业-PHP时未执行Bash命令

通过cron作业-PHP时未执行Bash命令,php,bash,ubuntu,cron,libnotify,Php,Bash,Ubuntu,Cron,Libnotify,我有一个cron作业,每五分钟运行一个PHP脚本;PHP脚本在脚本末尾执行两个bash命令。我知道脚本正在运行,因为它附加了一个日志文件。当我通过Ubuntu Gnome终端手动运行PHP脚本时,两个bash命令都能完美地执行;但是,当通过cron触发PHP脚本时,不会运行两个bash命令。有什么想法吗 $command = 'notify-send "' . count($infoleakPosts) . ' New Posts."'; `$command`; $command = 'fi

我有一个cron作业,每五分钟运行一个PHP脚本;PHP脚本在脚本末尾执行两个bash命令。我知道脚本正在运行,因为它附加了一个日志文件。当我通过Ubuntu Gnome终端手动运行PHP脚本时,两个bash命令都能完美地执行;但是,当通过cron触发PHP脚本时,不会运行两个bash命令。有什么想法吗

$command = 'notify-send "' . count($infoleakPosts) . '  New Posts."';
`$command`;

$command = 'firefox http://example.com';
`$command`;

*/1 * * * * php /home/andrew/grab.php USERNAME PASSWORD # JOB_ID_1

当您在cron下运行脚本时,您没有输出tty或X-windows DISPLAY env-var。我怀疑命令正在运行但失败。

当您在cron下运行脚本时,您没有输出tty或X-windows DISPLAY env-var。我怀疑命令正在运行但失败。

通常您的cron脚本将在不同的用户帐户下运行,并且可能设置了不同的环境路径

尝试将命令行设置为使用命令的完整路径,即。
/path/to/notify send“x New Posts”

您可以使用
从常规终端发送通知
,获取要放入脚本的路径

您还可以从命令中获取输出以帮助调试。使用backtick运算符将返回输出,因此您可以将其分配给变量和/或转储它

$output = `$command`;
error_log($output);

通常,您的cron脚本将在不同的用户帐户下运行,并且可能设置了不同的环境路径

尝试将命令行设置为使用命令的完整路径,即。
/path/to/notify send“x New Posts”

您可以使用
从常规终端发送通知
,获取要放入脚本的路径

您还可以从命令中获取输出以帮助调试。使用backtick运算符将返回输出,因此您可以将其分配给变量和/或转储它

$output = `$command`;
error_log($output);

对上面关于cron的回答的评论:cron将以crontab的用户身份运行命令。因此,如果您设置crontab,它将在您需要时运行命令。它运行的shell启动脚本与您登录时得到的脚本略有不同,它知道它没有tty,因此它只执行~/.bashrc文件,而不执行概要文件集。查看cron和bash的手册页以了解详细信息

以上关于cron的答案的评论:cron将作为crontab的用户运行命令。因此,如果您设置crontab,它将在您需要时运行命令。它运行的shell启动脚本与您登录时得到的脚本略有不同,它知道它没有tty,因此它只执行~/.bashrc文件,而不执行概要文件集。查看cron和bash的手册页了解详细信息

您是否尝试添加完整路径?您是指notify send和firefox的完整路径?您是否尝试添加完整路径?您是指notify send和firefox的完整路径?是的,我需要将其设置为在X中运行。谢谢!是的,我需要将它设置为在X中运行。谢谢!