Проблемы с EXEC pplcd от PeopleSoft Application Engine

На сервере Unix я запускаю механизм приложения через планировщик процессов. В нем я пытаюсь использовать команду Unix «zip» из функции pplcode «Exec».

Однако я получаю только ошибку

PS_Exec(P): Ошибка при выполнении пакетной команды по причине: Нет такого файла или каталога (2) Я пробовал это несколькими способами. Я подумал, что наиболее логичным подходом было бы изменить каталог обратно на корень, а затем перейти в указанный каталог, чтобы я мог легко использовать команду zip, например следующую...

Exec("cd / && cd /opt/psfin/pt850/dat/PSFIN1/PYMNT && zip INVREND INVREND.XML");


1643 12.20.34 0.000048 72: Exec("cd /opt/psfin/pt850/dat/PSFIN1/PYMNT");
1644 12.20.34 0.001343 PS_Exec(P): Error executing batch command with reason: No such file or directory (2)

Я даже пробовал следующее... просто чтобы посмотреть, работает ли что-нибудь из Exec...

Exec("ls");

Конечно, выдавал ту же ошибку.

Теперь некоторым из вас может быть интересно, действительно ли учетная запись, связанная с планировщиком процессов, имеет полномочия на этот конкретный путь к каталогу на сервере? Что ж, я без проблем смог создать XML-файл, указанный в предыдущей команде.

Кажется, я просто не могу изменить его с помощью Exec, выдающего команды Unix. Мне интересно, является ли это ошибкой прав и разрешений с сервера unix в отношении идентификатора оператора, с которого работает планировщик процессов. Однако, учитывая, что он может создавать и записывать в файл там, я не могу понять, почему команда Exec встретила бы какое-либо сопротивление .... Просто мое нутро в темноте ...

Любая помощь будет ОЧЕНЬ оценена!!!

Спасибо, Флинн


person zeroBelief    schedule 16.09.2014    source источник
comment
Я понял, что мой код и ошибка были неоднозначными. Оператор Exec показал три команды цепочки в одной строке, тогда как ответ об ошибке показывает только одну. Пожалуйста, простите, как я уверен, вы понимаете, я прошел через множество итерационных попыток разнообразия кода, чтобы попытаться заставить его работать. - Флинн   -  person zeroBelief    schedule 16.09.2014
comment
хм, может быть, я совершенно не согласен с этим и годами не имел дело с руководителями на PS, да и то только на Windows. Но... разве вы не должны указывать, что вы вызываете bash или любую другую оболочку, которую вы используете, перед использованием команд оболочки? В Windows или из SQR вы обычно видите, как люди забывают указать, что cmd.exe является целевой оболочкой, прежде чем запускать такие вещи, как mkdir. Да, поймите, что это не полный ответ, но, возможно, он укажет вам правильное направление.   -  person JL Peyret    schedule 19.09.2014


Ответы (1)


Не уверен, что у вас все еще есть проблема, но в коде Exec добавление необязательной константы %FilePath_Absolute должно помочь. Когда эта константа отсутствует, PS автоматически добавляет ко всем командам префикс <PS_HOME>. Однако вам придется указать абсолютные пути с этим флагом. Я изменил команду на то, что должно работать.

Exec("zip /opt/psfin/pt850/dat/PSFIN1/PYMNT/INVREND /opt/psfin/pt850/dat/PSFIN1/PYMNT/INVREND.XML", %FilePath_Absolute);

Документация по адресу PeopleBooks иногда немного сбивает с толку, но в данном случае объясняет довольно хорошо. Вы всегда можете сохранить абсолютное местоположение в переменной и добавить префикс к своим командам, чтобы вам не приходилось постоянно вводить /opt/psfin/pt850/dat/PSFIN1/PYMNT/.

person DCRussianDev    schedule 30.09.2014