使用“at”从 cgi 脚本中调用延迟进程

使用“at”从 cgi 脚本中调用延迟进程

这是我希望您能帮助我解决的一个难题。一位客户希望在通过 cgi 脚本上传文档后 47 分钟内发送一封欢迎信。我编写了一个例程来发送这封信,然后尝试使用 Linux“at”命令来执行它。

当这不起作用时,我在 /cgi-bin 目录中设置了以下测试。


************ 底线是:“at”命令在被 apache 调用时不起作用。有什么办法可以解决这个问题吗?


谢谢,

罗布·杨

测试文件
------------------------------------------------------------------------------------------

$> cat 测试1.pl
/usr/bin/perl 的 #!
#这是在 APACHE 内部调用“at”LINUX 命令的测试
打印“内容类型:text/html\n\n”;
我的@lt=localtime(time()+60);
我的 $cmd="echo '/path/to/test2.pl' | at $lt[2]:$lt[1]";
打印$cmd;
系统($cmd);

$> cat 测试2.pl
/usr/bin/perl 的 #!
我的 $cmd="echo ‘它跑了!’>it_ran.txt";
系统($cmd);




命令行演示
------------------------------------------------------------------
$> rm it_ran.txt
rm:无法删除“it_ran.txt”:没有此文件或目录
$>./test1.pl 复制代码
内容类型:text/html

echo '/path/to/test2.pl' | 于 20:28job 55 于 2011-08-15 20:28
$> atq
55 2011-08-15 20:28 a ryoung
$> 日期
2011 年 8 月 15 日星期一 20:27:11 CDT
$> cat it_rat.txt
cat:it_rat.txt:没有此文件或目录
$> 日期
2011 年 8 月 15 日星期一 20:28:01 CDT
$> cat it_ran.txt
它跑了!


APACHE 演示
------------------------------------------------------------------------------------------
然后我通过浏览 http://www.MYSERVER.com/cgi-bin/test1.pl 调用相同的脚本
[浏览器输出:
                  echo '/path/to/test2.pl' | 于 20:30
]

$> 日期
2011 年 8 月 15 日星期一 20:30:40 CDT
$> cat it_ran.txt
cat:it_ran.txt:没有此文件或目录

答案1

在脚本中指定完整路径at。更不用说您的it_ran.txt文件了。您怎么知道该文件应该存放在哪里?它可能正在尝试写入根目录并失败了。

你应该使用错误检查. 检查系统命令或其本身的结果代码。

程序和调用返回错误以帮助您适当地处理异常。

相关内容