0

Unix サーバーで、プロセス スケジューラを介してアプリケーション エンジンを実行しています。その中で、「Exec」pplcode関数内から「zip」Unixコマンドを使用しようとしています。

ただし、エラーしか表示されません

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 ファイルを問題なく作成できました。

UnixコマンドのExec発行でそれを変更できないようです。これは、プロセス スケジューラが実行されているオペレーター ID に関して、UNIX サーバーからの権利と許可のエラーであるかどうか疑問に思っています。ただし、そこにファイルを作成して書き込むことができることを考えると、なぜExecコマンドが抵抗に遭遇するのか理解できません....暗闇の中で私の腸のショットだけ...

どんな助けでも大歓迎です!!!

ありがとう、フリン

4

1 に答える 1

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/

于 2014-09-30T17:13:01.680 に答える