Использование "at" для вызова отложенного процесса из скрипта cgi

Вот загадка, с которой, я надеюсь, вы сможете мне помочь. Клиент хочет отправить приветственное письмо ровно через 47 минут после загрузки документа с помощью скрипта cgi. Я написал подпрограмму для отправки письма, а затем попытался использовать команду Linux "at" для ее выполнения.

Когда это не сработало, я настроил следующий тест в каталоге / cgi-bin.


************ Суть в том, что команда at не будет работать при вызове apache. Есть ли способ обойти это?


Спасибо,

Роб Янг

ИСПЫТАТЕЛЬНЫЕ ФАЙЛЫ
-------------------------------------------------- -------------------------

$> кошка test1.pl
#!/ USR / бен / Perl
# ЭТО ИСПЫТАНИЕ КОМАНДЫ LINUX "at", КОГДА ВЫЗЫВАЕМЫЕ ВНУТРИ APACHE
print "Content-type: text/html\n\n";
my @lt= местное время (время ()+60);
my $cmd="echo '/path/to/test2.pl' | at $lt[2]:$lt[1]";
печать $cmd;
система ($ CMD);

$> кошка test2.pl
#!/ USR / бен / Perl
my $cmd="echo 'it run!'>it_ran.txt";
система ($ CMD);




КОМАНДНАЯ ЛИНИЯ ДЕМОНСТРАЦИЯ
------------------------------------------------------------------
$> rm it_ran.txt
rm: не может удалить `it_ran.txt': нет такого файла или каталога
$> ./test1.pl
Тип контента: текст / html

echo '/path/to/test2.pl' | в 20:28доб 55 в 2011-08-15 20:28
$> atq
55      2011-08-15 20:28 ryoung
$> дата
Пн Авг 15 20:27:11 CDT 2011
$> cat it_rat.txt
cat: it_rat.txt: нет такого файла или каталога
$> дата
Пн Авг 15 20:28:01 CDT 2011
$> cat it_ran.txt
это бежало!


APACHE ДЕМОНСТРАЦИЯ
-------------------------------------------------- ----------------------------------------
Затем я вызываю тот же сценарий, перейдя по ссылке http://www.MYSERVER.com/cgi-bin/test1.pl.
[вывод браузера:
                  echo '/path/to/test2.pl' | в 20:30
]

$> дата
Пн 15 авг 20:30:40 CDT 2011
$> cat it_ran.txt
cat: it_ran.txt: нет такого файла или каталога

1 ответ

Укажите полный путь к at в сценарии. Не говоря уже о вашем it_ran.txt файл. Как вы можете понять, где этот файл должен храниться? Вероятно, он пытается записаться в корневой каталог и не работает.

Вы должны использовать проверку ошибок. Проверьте код результата системной команды или у себя.

Программы и вызовы возвращают ошибки, чтобы помочь вам правильно обрабатывать исключения.

Другие вопросы по тегам