#linux #perl #apache #soap #system
#linux #perl #apache #soap #система
Вопрос:
У меня есть служба soap на perl, которую я использую для объединения данных разных пользователей. Служба работает нормально, однако я хотел бы запустить «sort -u file1 file2 > file1», чтобы объединить собранные данные с данными, уже находящимися на сервере. Я бы хотел, чтобы скрипт perl вызывал системную функцию после завершения своей задачи
Это проблема установки правильных разрешений для Apache или что-то еще?
список каталогов:
var/www/script.pl
var/www/file1
var/www/file1
var/www/index.php
Любая помощь была бы отличной. Спасибо
Комментарии:
1. @Prix Файлы имеют формат .csv. Я не против использования чего-то другого, просто sort -u отлично справляется.
2. @Prix Функция, которая меня действительно интересует, — это sort -u, объединяющий два файла в один и исключающий дубликаты. Мысли?
Ответ №1:
sort -u file1 file2 > file1
Не собирается делать то, что, по вашим словам, вы хотите, чтобы это делало. Вы пробовали это из командной строки?
После выполнения этой команды файл1 не будет содержать ничего, что изначально было в file1, потому что перенаправление приведет к блокировке file1, прежде чем sort начнет действовать с ним.
sort -u file1 file2 >file3; mv file3 file1
Вы, кажется, хотите использовать system (), что произошло, когда вы попробовали это? Вы получали какие-либо сообщения об ошибках?
Комментарии:
1. Другой способ — использовать
-o
параметр: «sort -o file1 file1 file2». Это приведет к файлу 1, но только после сортировки file1 и file2. Это относительно неизвестный трюк.2. Проблема не в команде. Команда не выполняется, так что проблема не в этом
Ответ №2:
Нет, это проблема установки правильных разрешений для каталога, содержащего файл, который вы хотите записать.
Узнайте, под каким идентификатором пользователя / группы запущен процесс веб-сервера (например, просмотрев таблицу процессов с помощью /bin/ps -AH -o user,group,cmd
), затем обратитесь к Управлению доступом к файлам в Linux Cookbook.