Я использую сервер Ubuntu, и у меня есть сценарий cgi-bin, выполняющий следующие действия. . .
#!/bin/bash
echo Content-type: text/plain
echo ""
cat /home/user/.program/logs/file.log | tail -400 | col -b > /tmp/o.txt
cat /tmp/o.txt
Теперь, если я запускаю этот сценарий с помощью «su», сценарий заполняет o.txt, а затем запускается host.com/cgi-bin/script, но отображается только до того момента, когда я последний раз запускал его из интерфейса командной строки.
В моем журнале ошибок apache отображаются ошибки типа "доступ запрещен". Итак, я знаю, что пользовательский apache работает под каким-то образом не может обработать этот файл. Я безуспешно пытался использовать chown. Поскольку этот файл находится в каталоге пользователя, как лучше всего его продублировать, создать символическую ссылку или что-то в этом роде?
Я даже подумал о том, чтобы запустить сценарий от имени root в crontab, чтобы как бы «обновить» файл в / tmp /, но у меня это не сработало. Как кто-нибудь, имеющий опыт работы с cgi-bin, сможет обрабатывать доступ к файлу в каталоге пользователей?
tail -n 400 logfile | sudo -u www-data tee /var/www/tail.txt >/dev/null
один раз в минуту вообще избавит от необходимости в сценарии CGI. - person tripleee   schedule 13.03.2014